ホバリング時に上下のスライド効果を作成するjQueryスニップがあります。私はこのフィドルでそれを作りました: http://jsfiddle.net/jPneT/1/
今、私はそのようなナビゲーションを持っています:
<nav id="menu" class="nav">
<ul>
<li>
<a href="#">
<div class="slide default">
<span>About</span>
</div>
<div class="slide onhover">
<span>About</span>
</div>
</a>
</li>
<li>
<a href="#">
<div class="slide default">
<span>Photography</span>
</div>
<div class="slide onhover">
<span>Photography</span>
</div>
</a>
</li>
<li>
<a href="#">
<div class="slide default">
<span>Home</span>
</div>
<div class="slide onhover">
<span>Home</span>
</div>
</a>
</li>
<li>
<a href="#">
<div class="slide default">
<span>Webdesign</span>
</div>
<div class="slide onhover">
<span>Webdesign</span>
</div>
</a>
</li>
<li>
<a href="#">
<div class="slide default">
<span>Linkbase</span>
</div>
<div class="slide onhover">
<span>Linkbase</span>
</div>
</a>
</li>
</ul>
</nav>
フィドルから効果を追加するために、次のような jQuery パーツを作成しました。
$(document).ready(function(){
var height = $(".nav ul li").height();
$('li:nth-child(5n+1)').mouseover(function(){
$('li:nth-child(5n+1) .default').stop().animate({
height: 0
}, height);
}).mouseout(function(){
$('li:nth-child(5n+1) .default').stop().animate({
height: height
}, height)
});
$('li:nth-child(5n+2)').mouseover(function(){
$('li:nth-child(5n+2) .default').stop().animate({
height: 0
}, height);
}).mouseout(function(){
$('li:nth-child(5n+2) .default').stop().animate({
height: height
}, height)
});
$('li:nth-child(5n+2)').mouseover(function(){
$('li:nth-child(5n+2) .default').stop().animate({
height: 0
}, height);
}).mouseout(function(){
$('li:nth-child(5n+2) .default').stop().animate({
height: height
}, height)
});
$('li:nth-child(5n+2)').mouseover(function(){
$('li:nth-child(5n+2) .default').stop().animate({
height: 0
}, height);
}).mouseout(function(){
$('li:nth-child(5n+1) .default').stop().animate({
height: height
}, height)
});
$('li:nth-child(5n+1)').mouseover(function(){
$('li:nth-child(5n+1) .default').stop().animate({
height: 0
}, height);
}).mouseout(function(){
$('li:nth-child(5n+1) .default').stop().animate({
height: height
}, height)
});
});
それは正常に動作します。しかし、jQuery コードは冗長で長いです。しかし、私はそれを改善してスリムにするという考えはありません。
ソリューションは古いブラウザと互換性があるはずなので、移行用の jQuery にする必要があります...
アイデアはありますか?