我使用.animate()創建「簡單」動畫菜單來放大用戶懸停的菜單項。這幾乎是正確的,但如果用戶快速移動光標,它會做一些奇怪的事情。加上元素不總是同時動畫。jquery動畫問題
顯示它的最簡單方法是使用以下鏈接。
或
<head>
<script src="jquery-ui/js/jquery-1.4.2.min.js"></script>
<script>
$(document).ready(function(){
$("#test1").hover(function() {
$(this).animate({ width:"599px",left:"0px", height:"168px" }, 100)
},
function() {
$(this).animate({ width:"246px",left:"9px", height:"84px" }, 100)
}
);
$("#test2").hover(function() {
$(this).animate({ width:"599px",left:"0px", height:"168px", top:"-21px" }, 100)
$(".test").animate({ top:"-21px" }, 100)
},
function() {
$(this).animate({ width:"246px",left:"9px", height:"84px", top:"0px" }, 100)
$(".test").animate({ top:"0px" }, 100)
}
);
$("#test3").hover(function() {
$(this).animate({ width:"599px",left:"0px", height:"168px", top:"-63px" }, 100)
$(".test").animate({ top:"-63px" }, 100)
},
function() {
$(this).animate({ width:"246px",left:"9px", height:"84px", top:"0px" }, 100)
$(".test").animate({ top:"0px" }, 100)
}
);
$("#test4").hover(function() {
$(this).animate({ width:"599px",left:"0px", height:"168px", top:"-84px" }, 100)
$(".test").animate({ top:"-84px" }, 100)
},
function() {
$(this).animate({ width:"246px",left:"9px", height:"84px", top:"0px" }, 100)
$(".test").animate({ top:"0px" }, 100)
}
);
});
</script>
<style type="text/css">
.container {
width:599px; background-color:#000;padding:0px; height:336px; overflow-y:hidden;
}
.test {
width:246px; background-color:#039; left:9px; top:0px; position:relative; height:84px;
}
</style>
</head>
<body>
<div class="container">
<div id="test1" class="test">
test
</div>
<div id="test2" class="test">
test
</div>
<div id="test3" class="test">
test
</div>
<div id="test4" class="test">
test
</div>
</div>
</body>
任何想法?
由於
鏈接到生動的例子是偉大的,但**總是**也包括相關的代碼在你的實際問題。外部鏈接可以消失,重命名等,理想情況下,人們不應該遵循鏈接來回答你的問題。 – 2010-10-01 16:09:26
'mouseover'反覆觸發*,你可能更喜歡'mouseenter'(特別是當你使用'mouseleave'作爲另一半時)。 (實際上,最近版本的jQuery有一個快捷方式來連接'mouseenter' /'mouseleave'對:['hover'](http://api.jquery.com/hover/)。)但這不是完整的答案。 – 2010-10-01 16:17:11