我试图制作一个菜单,它有 3 个菜单项和 1 个子项。如果我单击第二个项目,应该显示第一个子项目。但通常不显示它。它应该对它进行动画处理并滑动它。我认为有一种方法可以transition
但我真的不了解CSS3。我想要一个纯粹的css解决方案。
这是我的HTML代码:
<div id="menu">
<ul>
<li><a href="#">First</a></li>
<li class="active"><a href="#">Second</a>
<ul class="child">
<li><a href="#">First child</a></li>
</ul>
</li>
<li><a href="#">Third</a></li>
</ul>
</div>
我创造了这个小提琴。现在,如果我单击菜单项First child
我想慢慢显示Second
菜单项。
我之前唯一做的就是检查transition
但我就是不明白。
有人可以给我一个提示吗?
干杯
查看您的 jsfiddle 更新 http://jsfiddle.net/3kEg4/3/
#menu {
height: auto;
width: auto;
}
#menu ul {
margin: 0px;
padding: 0px;
list-style-type: none;
}
#menu ul li {
float: left;
position: relative;
}
#menu ul li a {
line-height: 30px;
text-decoration: none;
text-align: center;
display: block;
width: 100px;
height: 30px;
border: thin solid #999;
color: #FFF;
background-color: #0CF;
-webkit-transition: all 1s;
-moz-transition: all 1s;
-ms-transition: all 1s;
-o-transition: all 1s;
transition: all 1s;
}
#menu ul li a:hover {
background-color: #0C3;
}
#menu ul li ul {
position: absolute;
-webkit-transition: height 1s linear 0s;
-moz-transition: height 1s linear 0s;
-ms-transition: height 1s linear 0s;
-o-transition: height 1s linear 0s;
transition: height 1s linear 0s;
height: 0px;
overflow:hidden;
}
#menu ul li:hover ul {
height: 100px;
-webkit-transition: height 1s linear 0s;
-moz-transition: height 1s linear 0s;
-ms-transition: height 1s linear 0s;
-o-transition: height 1s linear 0s;
transition: height 1s linear 0s;
}
(灵感来自 http://jsfiddle.net/ashukasama/2BqGY/)
您可以使用一些 CSS3 动画来实现此效果。
#menu ul li ul{
opacity:0;
-webkit-transition: .6s ease;
-moz-transition: .6s ease;
-ms-transition: .6s ease;
-o-transition: .6s ease;
height: 0;
}
#menu ul li:hover ul {
opacity: 1;
height: 100px;
}
吉斯菲德尔
无线电活动状态
JSFIDDLE Radio
堆栈溢出 Q
jQuery
$('.subMenu').on('click', function() {
$('.subMenu ul').slideToggle(1000);
});
JSFIDDLE jQuery
我认为这样更好
#menu ul li ul{
visibility: hidden;
opacity: 0;
transition: visibility 0s, opacity 0.5s linear;
position: absolute;
}
#menu ul li:hover ul {
visibility: visible;
opacity: 1;
position: relative;
}
效果也很好。请添加前缀。希望这对某人有所帮助。