我有一个全宽子菜单导航 但下降太难了。我希望它像一个缓和的缓和 这是我的小提琴
http://jsfiddle.net/cancerian73/bK9mF/
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
/* not very relevant styling */
h1 {
font-size: 20px;
padding-top: 20px;
}
.container {
position: relative;
margin: 20px auto 0 auto;
width: 75%;
}
.header {
background: #eee;
}
.nav {
background: #ccc;
}
/* relevant styling */
body {
overflow-x: hidden;
}
/* trick from css-tricks comments */
/* FIRST LEVEL */
.nav > ul > li {
display: inline-block;
position: relative;
padding: 3px 10px 3px 0;
z-index: 100;
}
/* SECOND LEVEL */
.nav > ul > li > ul {
position: absolute;
left: 0;
top: 100%;
padding: 0 1000em;
/* trick from css-tricks comments */
margin: 0 -1000em;
/* trick from css-tricks comments */
z-index: 101;
visibility: hidden;
opacity: 0;
background: rgba(255, 240, 240, 0.8);
}
.nav > ul > li:hover > ul {
visibility: visible;
opacity: 1;
}
.nav > ul > li > ul > li {
padding: 3px 0;
}
答案 0 :(得分:1)
首先,您需要使用display:none;
替换可见性和不透明度,因为display:none会隐藏元素,并且不会占用任何空间。元素将被隐藏,页面将显示为元素不在那里。
我建议您使用jQuery而不是CSS3 transition
属性,因为Internet Explorer 9不支持它,早期版本和Chrome 25及更早版本需要前缀-webkit-
和其他浏览器像Opera Mini一样不支持转换。
[来源:http://caniuse.com/css-transitions]
您必须使用jquery .slideToggle()
方法为下拉菜单设置动画。
function deactivateAll(item) {
$("li").not(item).each(function(index, elem) {
if ($(elem).hasClass("active")) {
toggle(elem);
}
});
}
function toggle(elem) {
$(elem).find("ul.submenu").stop(true, true).slideToggle("fast");
$(elem).toggleClass("active");
}
$(".container li").on("hover", function(e) {
deactivateAll(this);
toggle(this);
});