我正在使用我的网站导航的导航列表,当用户将鼠标悬停在某些列表项上时,会显示一个带有额外导航选项的下拉列表。在我的情况下,当用户将鼠标悬停在“品牌”项目上时,会出现包含所有不同品牌的下拉列表。现在,下拉列表会立即出现,但我希望它会出现在一个动作中,好像它正在向下滑动而不是立即出现。这可能与CSS或我需要一些jQuery魔术?代码:
HTML:
<section id="nav">
<div id="nav-wrapper">
<ul id="nav-list">
<li id="nav-home"><a href="">Home</a>
</li>
<li id="nav-brands"><a href="">Brands</a>
<ul id="brands-list">
<li><a href="">Brand 01</a>
</li>
<li><a href="">Brand 02</a>
</li>
<li><a href="">Brand 03</a>
</li>
<li><a href="">Brand 04</a>
</li>
<li><a href="">Brand 05</a>
</li>
</ul>
</li>
<li id="nav-about"><a href="">About Us</a>
</li>
<li id="nav-contact"><a href="">Contact Us</a>
</li>
</ul>
</div>
</section>
CSS:
#nav-brands { position:relative; }
#nav-list li:hover ul { display: block; opacity: 1; visibility: visible; background-color: #fff; }
#brands-list { padding: 10px 0px 0px 0px; position: absolute; top: 20px; left: -35px; width: 120px; box-shadow: none; display: none; opacity: 0;
visibility: hidden; -webkit-transiton: opacity 0.2s; -moz-transition: opacity 0.2s; -ms-transition: opacity 0.2s;
-o-transition: opacity 0.2s; -transition: opacity 0.2s; border:thin solid #000000; border-radius:0px 0px 5px 5px;
border-top:0px;
}
#brands-list li { display: block; margin:0px 0px 5px 0px; padding:0px 0px 5px 0px; text-align:center; border-bottom:thin solid #CECECE;
}
#brands-list li:hover {}
#brands-list li:last-child { border-bottom:0px; }
答案 0 :(得分:2)
查看示例
您需要设置transition-timing-function
transition: opacity .8s ease-in-out;
答案 1 :(得分:2)
没有Jquery魔法。
css方法是将子列表包装在div中。使用该div设置子菜单位置,然后使用overflow
/ transition
技巧为内部列表提供您正在寻找的滑动效果。
请在此处查看:http://jsfiddle.net/vrGfc/
此外,从子菜单本身中删除悬停效果。它只需要应用于包装器div。
答案 2 :(得分:0)
这里不需要任何jQuery或类似的东西 - 你正在寻找的css属性是“转换” - http://www.w3schools.com/css/css3_transitions.asp