动画子菜单纯css

时间:2013-10-17 21:20:35

标签: html css css3 css-transitions

我尝试制作一个菜单,其中包含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>

我创建了 fiddle 。现在,如果单击First child菜单项,我想慢慢显示Second菜单项。

我之前做过的唯一事情就是检查transition,但我只是不明白。

有人能给我一个暗示吗?

干杯

3 个答案:

答案 0 :(得分:2)

查看您的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/

答案 1 :(得分:1)

您可以使用一些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

无线电有效状态

JSFIDDLE Radio

Stackoverflow Q

<强>的jQuery

$('.subMenu').on('click', function() {
  $('.subMenu ul').slideToggle(1000);
});

JSFIDDLE jQuery

答案 2 :(得分:0)

我认为这样更好

#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;
}

也很棒。请添加前缀。希望这有助于某人。