Я пытаюсь создать бесконечный слайдер с помощью jquery. На моей странице есть теги, ширина которых равна ширине окна.jquery бесконечный слайдер изображения
Я хочу, чтобы каждое изображение отображалось через 10 секунд, и когда появляется последнее изображение, и пришло время для показа первого изображения, я хочу, чтобы он остался справа.
Теперь я создал div с большой шириной, 10000px для хранения моего неупорядоченного списка изображений, и у них есть отображение: 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>
DIV с классом .slider будет закрыт после еще несколько элементов.
UPDATE:
Это мой 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);
}
С этим, мой слайдер оны идет, насколько мой список можно продолжать. Как добавить первый элемент после последнего элемента и так далее, чтобы он мог быть бесконечным?
Когда вы нажмете последний пункт; Вы можете клонировать первый список и добавлять его в конце неупорядоченного списка. Всякий раз, когда анимация скользит к клонированному элементу и выполняется анимация, сдвиньте позицию до начала (вы не заметите, что она перескакивает от, например, от -3000 пикселей до 0 пикселей) и снова удаляет клон. – CaptainCarl
Один из обычных трюков состоит в том, чтобы иметь изображение X + 1 (при условии, что у вас есть X число разных изображений), где первое и последнее одинаковы. Когда окончательное изображение вставляется, тайно сбрасывает список слайдеров, потому что последнее и первое изображение одинаковы, пользователь не заметит. –
Кажется, мне не удается добавить изображения в конце моего списка, чтобы я мог скользить бесконечно. – Radu