gpt4 book ai didi

javascript - 如何在最后一张幻灯片后停止动画?

转载 作者:行者123 更新时间:2023-12-03 12:21:46 25 4
gpt4 key购买 nike

我已经为图像 slider 创建了自定义插件。这就像传递要显示的图像数量的参数。最后一张图像可见后如何停止动画?有时之前的点击也会出现问题。帮助我优化代码。

CSS

.imgpresentation {
width: 520px;
height: 110px;
overflow: hidden;
border: 1px solid #ddd;
position: relative;
}
.imgpresentation img {
float: left;
padding: 5px;
}
.imgpresentation .prev {
left: 0;
position: absolute;
top: 40%;
}
.imgpresentation .next {
right: 0;
position: absolute;
top: 40%;
}
.slidethemimgpresentation {
position: absolute;
}

JS

<script>
$.fn.imgSlider = function(nImages) {
var imgW = $(this).find('img').outerWidth(),
imgH = $(this).find('img').outerHeight(),
imgL = $(this).find('img').length,
that = $(this),
container = that.find('.slidethemimgpresentation');

that.append('<a href="#" class="prev">Previous</a>'+
' <a href="#" class="next">Next</a>').css({
'width': nImages * imgW,
'height': imgH
});
container.css({
'width': imgW * imgL
});

imgW = nImages * imgW;

that.find('.next').on('click', function() {
var currLeft = parseInt(container.css('left'));
currLeft += -imgW;
container.animate({
'left': currLeft
});
return false;
});
that.find('.prev').on('click', function() {
var currLeft = parseInt(container.css('left'));
if (currLeft == 0) {
return false;
}
currLeft += imgW;

container.animate({
'left': currLeft
});
return false;
});
};
$(document).ready(function() {
$('#imgpresentation').imgSlider(2);
$('#imgpresentation2').imgSlider(3);
$('#imgpresentation3').imgSlider(4);
$('#imgpresentation4').imgSlider(1);
});
</script>

html`

<div id="imgpresentation4" class="imgpresentation">
<div class="slidethemimgpresentation">
<img class="presentatinthis" src="http://placehold.it/150x150&text=Slide301" />
<img class="presentatinthis" src="http://placehold.it/150x150&text=Slide302" />
<img class="presentatinthis" src="http://placehold.it/150x150&text=Slide303" />
<img class="presentatinthis" src="http://placehold.it/150x150&text=Slide304" />
<img class="presentatinthis" src="http://placehold.it/150x150&text=Slide305" />
</div>
</div>
<div id="imgpresentation" class="imgpresentation">
<div id="slidethemimgpresentation" class="slidethemimgpresentation">
<img class="presentatinthis" src="http://placehold.it/250x100&text=Slide101" />
<img class="presentatinthis" src="http://placehold.it/250x100&text=Slide102" />
<img class="presentatinthis" src="http://placehold.it/250x100&text=Slide103" />
<img class="presentatinthis" src="http://placehold.it/250x100&text=Slide104" />
<img class="presentatinthis" src="http://placehold.it/250x100&text=Slide105" />
<img class="presentatinthis" src="http://placehold.it/250x100&text=Slide106" />
<img class="presentatinthis" src="http://placehold.it/250x100&text=Slide107" />
<img class="presentatinthis" src="http://placehold.it/250x100&text=Slide108" />
<img class="presentatinthis" src="http://placehold.it/250x100&text=Slide109" />
<img class="presentatinthis" src="http://placehold.it/250x100&text=Slide110" />
</div>
</div>
<div id="imgpresentation2" class="imgpresentation">
<div class="slidethemimgpresentation">
<img class="presentatinthis" src="http://placehold.it/250x100&text=Slide201" />
<img class="presentatinthis" src="http://placehold.it/250x100&text=Slide202" />
<img class="presentatinthis" src="http://placehold.it/250x100&text=Slide203" />
<img class="presentatinthis" src="http://placehold.it/250x100&text=Slide204" />
<img class="presentatinthis" src="http://placehold.it/250x100&text=Slide205" />
<img class="presentatinthis" src="http://placehold.it/250x100&text=Slide206" />
<img class="presentatinthis" src="http://placehold.it/250x100&text=Slide207" />
<img class="presentatinthis" src="http://placehold.it/250x100&text=Slide208" />
<img class="presentatinthis" src="http://placehold.it/250x100&text=Slide209" />
<img class="presentatinthis" src="http://placehold.it/250x100&text=Slide210" />
</div>
</div>
<div id="imgpresentation3" class="imgpresentation">
<div class="slidethemimgpresentation">
<img class="presentatinthis" src="http://placehold.it/350x150&text=Slide301" />
<img class="presentatinthis" src="http://placehold.it/350x150&text=Slide302" />
<img class="presentatinthis" src="http://placehold.it/350x150&text=Slide303" />
<img class="presentatinthis" src="http://placehold.it/350x150&text=Slide304" />
<img class="presentatinthis" src="http://placehold.it/350x150&text=Slide305" />
<img class="presentatinthis" src="http://placehold.it/350x150&text=Slide306" />
<img class="presentatinthis" src="http://placehold.it/350x150&text=Slide307" />
<img class="presentatinthis" src="http://placehold.it/350x150&text=Slide308" />
<img class="presentatinthis" src="http://placehold.it/350x150&text=Slide309" />
<img class="presentatinthis" src="http://placehold.it/350x150&text=Slide310" />
</div>
</div>

最佳答案

这是一种有点棘手的方法。因为它不是由数组驱动,而是每次移动容器+= X。

您需要检查if(container.style.left + imgW >totalWidth)要调试,请尝试使用 console.log(container.style.left )

我建议使用现有的 slider ,iDangerio.us Swiper 非常好,具有出色的 API。

另外,这有点低效,但并不是太重要,因为它只在 init 上运行。

var imgW = $(this).find('img').outerWidth(),
imgH = $(this).find('img').outerHeight(),
imgL = $(this).find('img').length,
that = $(this),
container = that.find('.slidethemimgpresentation')

只解析一次 jquery 对象会是更好的做法,也更高效。

var that = $(this),
img = that.find('img'),
imgW = img.outerWidth(),
imgH = img.outerHeight(),
imgL = img.length,
container = that.find('.slidethemimgpresentation'),
totalWidth = imgW * imgL;

关于javascript - 如何在最后一张幻灯片后停止动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24422100/

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