gpt4 book ai didi

用于简单水平 slider 的 jQuery .animate() 无法按预期工作

转载 作者:太空宇宙 更新时间:2023-11-03 20:49:17 25 4
gpt4 key购买 nike

我已尝试修改此 jQuery slider 解决方案:https://stackoverflow.com/a/9864636/908491 (使用第一个解决方案 - http://jsfiddle.net/sg3s/rs2QK/)。

这是我的 jsFiddle:http://jsfiddle.net/markrummel/KSHSX/ .

DIV 滑入效果很好,但是滑出的DIV 会跳开,而不是像DIV 滑入一样以相同的速度顺利滑出。我已经注释掉了.hide()在 javascript 和 overflow:hidden 在 CSS 中,这样我就可以看到 DIV 滑出的位置。

这是我第一次使用 .animate(),非常感谢您提供的任何帮助!

这是我的javascript:

$('.date-nav-prev').click(function () {
$('.date-nav-next').show();
var current = $('.visible-actions');
var prev = current.prev('.user-actions');
current.removeClass('visible-actions').animate({
left: current.width()
}, 500, function() {
//current.hide();
});
prev.addClass('visible-actions').show().css({
left: -(prev.width())
}).animate({
left: 0
}, 500);
});

$('.date-nav-next').click(function () {
var current = $('.visible-actions');
var next = current.next('.user-actions');
current.removeClass('visible-actions').animate({
left: -(current.width())
}, 500, function() {
//current.hide();
});
next.addClass('visible-actions').show().css({
left: prev.width()
}).animate({
left: 0
}, 500);
});

HTML:

<button class="date-nav-prev">< Prev</button>
<button class="date-nav-next">Next ></button><br />
<div id="wrapper">
<div class="user-actions daysAgo2">
Actions from 2 Days Ago</div>
<div class="user-actions yesterday">
Yesterday's Actions</div>
<div class="user-actions today visible-actions">
Today's Actions</div>
</div>

CSS:

.user-actions.yesterday, .user-actions.daysAgo2, .date-nav-next {display:none;}
#wrapper{width:250px; height:300px; border:1px solid #333;position:relative; float:left;
/*overflow:hidden;*/
}
.user-actions {width:100%; height:100%; position:relative; float:left; overflow:hidden; margin:0;}
.today {background:green;}
.yesterday {background:yellow;}
.daysAgo2 {background:orange;}

最佳答案

我将整个事情简单化了一点,只是为了向您展示它可以朝哪个方向发展。在大多数插件中,有一个左右滑动的包装盒,而不是实际的盒子本身。这让事情变得简单了一些。

Have a look at the DEMO.

我添加了一个左右滑动的#slider div:

<button class="date-nav-prev">< Prev</button>
<button class="date-nav-next">Next ></button>
<div id="wrapper">
<div id="slider">
<div id="daysAgo2">Actions from 2 Days Ago</div>
<div id="yesterday">Yesterday's Actions</div>
<div id="today">Today's Actions</div>
</div>
</div>

将包装器设置为 overflow:hidden;,以便隐藏当前幻灯片之前或之后的所有内容:

#wrapper{
width:300px;
height:300px;
border:1px solid #333;
position:relative;
overflow:hidden;
}
#slider {
width: 1000px;
height: 100%;
position: absolute;
}
#slider div {
width:300px;
height:100%;
float:left;
}
#today{background:green;}
#yesterday {background:yellow;}
#daysAgo2 {background:orange;}

只需左右滑动 slider 即可。当然,扩展此类 slider 是没有限制的。

var sliderWidth = 300;
var slider = $('#slider');
var sliderCount = $('div', slider).length;
slider.width(sliderCount * sliderWidth);

$('.date-nav-prev').click(function () {
$('#slider').animate({left: '+='+sliderWidth}, 500);
});

$('.date-nav-next').click(function () {
$('#slider').animate({left: '-='+sliderWidth}, 500);
});

关于用于简单水平 slider 的 jQuery .animate() 无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17602266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com