【发布时间】:2023-03-22 17:12:01
【问题描述】:
我正在尝试使用 jquery 创建一个无限滑块。我的页面有一些标签,宽度等于窗口宽度。
我想在 10 秒后滑动每张图片,当最后一张图片出现并且该显示第一张图片时,我希望它从右侧静止。
现在我创建了一个宽度为 10000 像素的 div 来保存我的无序列图像列表,并且它们具有 display:none。我的问题是为什么当我为一个列表项提供 margin-left: -1000px 时,图像似乎重叠在另一个之上,而不是一个接一个地出现。我试图截取屏幕截图,但我不知道我的 Dropbox 发生了什么。
这是我的 CSS:
.slider {
position: relative;
height: 498px;
/*display: inline-block;*/
overflow: hidden;
}
.slider-list {
/*display: inline-block;*/
float: left;
padding: 0;
margin: 0;
width: 10000px
/*height: 496px;*/
}
.slider-list li{
display: inline-block;
/*float: left;*/
/*width: 100%;*/
height: 496px;
z-index: 1;
这是我的 HTML:
<div class="slider">
<ul class="slider-list">
<li><img class="homepage-img"src="images/homepage.jpg"></li>
<li><img class="homepage-img"src="images/image1.jpg"></li>
<li><img class="homepage-img"src="images/image2.jpg"></li>
<li><img class="homepage-img"src="images/image3.jpg"></li>
<li><img class="homepage-img"src="images/image4.jpg"></li>
</ul>
类 .slider 的 div 将在更多元素后关闭。
更新:
这是我写这篇文章后的 jQuery 代码:
$(document).ready(function(){
slide();
});
slide = function() {
var img = $('.homepage-img');
var content = $('.slider-content');
var slider = $('.slider-list');
var elements = $('.slider-list li').children();
var auto_slide_speed = 100;//ms
var timer;
var i = 0;
img.width($(window).width());
$("li").width($(window).width());
img.height($('.slider-list').height());
content.height($('.slider-list').height());
var img_width = $('.slider-list li').outerWidth();
console.log($('.slider-list li').length);
console.log(elements);
//calculam margin-left = -latimea unei imagini
// while(1)
// {
var left = parseInt(slider.css('margin-left')) - img_width;
for(i = 0; i <= $('.slider-list li').length; i++)
{
console.log(i);
slider.animate({
"margin-left": "+=" + left},
1500,
function() {
// $('.slider-list li:last').after($('.slider-list li:first'));
// $('slider').css({'margin-left' : '0px'});
});
// left = left + left;
// $('slider li').append($(elements[i]).clone());
}
console.log(i);
}
有了这个,我的滑块就和我的列表一样。如何在最后一项之后附加第一项,依此类推,使其可以是无限的?
【问题讨论】:
-
当你打到最后一项时;您可以克隆第一个列表项并将其附加到无序列表的末尾。每当动画滑到克隆的项目并完成动画时,将位置移动到开始(您不会注意到它从例如 -3000px 跳转到 0px)并再次删除克隆。
-
一个常见的技巧是在第一个和最后一个相同的情况下拥有 X+1 个图像(假设您有 X 个不同的图像)。在最后一张图片滑入的时候,偷偷重置滑块列表,因为最后一张和第一张图片是一样的,用户不会注意到。
-
我似乎无法成功将图像附加到列表末尾,因此我可以无限滑动。
标签: javascript jquery html css