我正在开发一个css jquery菜单。我有一个像http://jsfiddle.net/A6rUG/这样的代码,我试图动画而不是向上动画。 代码是 var slideNav =(function(){
var spanHeight,
nav = $('#nav'),
lis = $('li', nav),
anchors = $('a', lis).css('padding', 0);
$.each(anchors, function() {
var a = $(this),
val = a.text();
a.html('<span>' + val + '</span> <span>' + val + '</span>')
.parent('li')
.height(a.children('span:first').outerHeight())
.end()
.children('span:first')
.css('marginTop', 0) // strange for IE
});
spanHeight = lis.eq(0).height();
lis.hover(function() {
$(this).find('span:first').animate({
marginTop : -56
}, { duration: 200, queue : false });
}, function() {
$(this).find('span:first').animate({
marginTop : 0
}, { duration: 200, queue: false });
});
})();
更改marginTop或marginBottom似乎没有办法。有人知道会发生什么吗?
答案 0 :(得分:0)
marginTop : "56px"
但您必须更改其他代码才能将悬停链接BEFORE
放入DOM中的实际<a>
,而不是之后。
答案 1 :(得分:0)
这应该可以解决问题:
var slideNav = (function() {
var spanHeight,
nav = $('#nav'),
lis = $('li', nav),
anchors = $('a', lis).css('padding', 0);
$.each(anchors, function() {
var a = $(this),
val = a.text();
a.html('<span>' + val + '</span> <span>' + val + '</span>')
.parent('li')
.height(a.children('span:first').outerHeight())
.end()
.children('span:first')
.css('marginTop', -56) // strange for IE
});
spanHeight = lis.eq(0).height();
lis.hover(function() {
$(this).find('span:first').animate({
marginTop : 0
}, { duration: 200, queue : false });
}, function() {
$(this).find('span:first').animate({
marginTop : -56
}, { duration: 200, queue: false });
});
})();
和CSS:
body {
text-align: center;
background: #676767;
font-family: helvetica;
}
ul, li {
margin: 0; padding: 0;
overflow: hidden;
}
ul li {
float: left;
list-style: none;
margin-right: 1em;
position: relative; /* IE fix */
}
li a {
color: white;
text-decoration: none;
float: left;
font-size: 30px;
background: black;
padding: 10px;
}
li a:hover {
background: #ff0;
color:white;
}
/* if JS */
li a span {
display: block;
background: white;
color: maroon;
padding: 10px;
position: relative;
font-weight: bold;
}
li a span:last-child {
background: black;
color: white;
}