我有一个从右到左的jQuery动画问题。我的JS代码如下所示:
$('.tabs').each(function(index){
$(this).click(function(event){
$('.tabs').css('left', '1410px').removeClass('open');
$('.blocks').css('width', '0px');
$('.blocks').css('left', '1385px');
$(this).animate({left: '1397px'}, 200).addClass('open');
$('.blocks').eq(index).animate({left: '520px'}, 2500);
});
});
您可以在我的小提琴演示中看到的其余代码:http://jsfiddle.net/DM346/5/
正如您所看到它正确动画(从右到左)但整个文本块是透明的(我知道它因为我将宽度设置为0,但我必须这样做,因为在其他方面它会弹出按钮)。
我想实现这样的目标:http://jsfiddle.net/6dwvs/19/ 但是从我的例子中从右到左。有人可以帮忙吗?基本上问题是文本块的“隐形”。
答案 0 :(得分:2)
我会使用z-index正确放置容器,FIDDLE
添加:
#tabs-cont {
overflow:hidden;
z-index:20;
}
.blocks {
z-index:-1;
}
将标签包裹在div中
<div id="tabs-cont">
<div class="tabs" id="tab1">HOME</div>
<div class="tabs" id="tab2">VIDEO</div>
<div class="tabs" id="tab3">TEXT</div>
<div class="tabs" id="tab4">CONTACT US</div>
<div class="tabs" id="tab5">HELP</div>
</div>
并将js更改为:
$(document).ready(function () {
$('.tabs').each(function (index) {
$(this).click(function (event) {
$('.tabs').css('left', '895px').removeClass('open');
$('.blocks').css('left', '875px');
$('.blocks').css('width', '865px');
$(this).animate({
left: '875px'
}, 200).addClass('open');
$('.blocks').eq(index).animate({
left: '0px'
}, 2500);
});
});
});
答案 1 :(得分:0)
我想出了如何解决这个问题!我使用了jQuery animate():)中的step()函数 var time = 2500;
var blockWidth = 0;
$('.blocks').eq(index).css('width', '0px');
$('.blocks').eq(index).animate(
{
left: '520px'
},
{
duration: time,
step: function( test ){
if(blockWidth < 865)
{
console.log( "blockWidth: ", blockWidth);
blockWidth +=6;
}
$('.blocks').eq(index).css('width', blockWidth);
}
}
);
现在它完美无缺! :)