Главная > Программирование > Бесконечная карусель

Бесконечная карусель

29 Июнь 2010

Вот такая забавная каруселька. Плавная прокрутка происходит за счет скролла внутренностей контейнера (scrollLeft), а зацикливание за счет того что первый элемент, после прокрутки становиться в конец карусели. С другой стороны на каждой анимации происходит работа с DOM деревом, что не есть хорошо, но впринципе на это навалить.


jQuery(document).ready(function($){
	setInterval(function (){
		var marquee = $("#carousel");
		marquee.animate({scrollLeft:marquee.children(":first").width()},{
			duration : "slow",
			complete : function(){
				marquee.scrollLeft(0).children(":first").appendTo(marquee);
			}
		});
	},3000);
});

#carousel{
	height: 50px;
	overflow: hidden;
	white-space: nowrap;
	width: 600px;
}
#carousel span {
	display: inline-block;
	height: 50px;
	width: 250px;
	overflow: hidden;
}

<div id="carousel">
	<span style="background-color:red;"></span>
	<span style="background-color:orange;"></span>
	<span style="background-color:yellow;"></span>
	<span style="background-color:green;"></span>
	<span style="background-color:cyan;"></span>
	<span style="background-color:blue;"></span>
	<span style="background-color:purple;"></span>
</div>
  1. 29 Июнь 2010 в 18:19 | #1
    Симпатично!
  2. 29 Июнь 2010 в 21:09 | #2
    Отлично!
  3. Олег
    30 Июнь 2010 в 07:10 | #3
    Когда элементов меньше чем может быть на экране (или вровень) то будет, наверное, не очень красиво. Я такие же штуки обычно делал так: при инициализации первый элемент копировал в конец, а последний в начало. В итоге на границе после анимации просто резко прыгал с начала на конец.
  4. 1 Июль 2010 в 14:45 | #4
    Просто и понятно. Думаю, найду применение подобной карусельки в одном из следующих проектов. Лицензия? Или пох?
  5. 1 Июль 2010 в 15:22 | #5
    @mihdan Лицензия всегда одна - комментарий с моим ником и мылом
  6. 10 Июль 2010 в 11:08 | #6
    @Олег вот именно этого прыжка из конца в начало я и хотел избежать
  7. B@rmaley.e>
    13 Июль 2010 в 18:35 | #7
    remove можно убрать, appendTo уже должен _переместить_ узел в конец.
  8. 14 Июль 2010 в 20:59 | #8
    @B@rmaley.e> да полагаю ты прав :)
  9. 1 Октябрь 2010 в 07:57 | #9
    ыыы, а как duration управлять? вместо slow подставляю циферки - не реагирует :(
  10. 2 Октябрь 2010 в 11:41 | #10
    а зачем?
  11. 2 Октябрь 2010 в 13:22 | #11
    пристраиваю в одном проекте - заказчику потребовался слайдер. от дефолтной скорости в недоумении - не успевает прочесть буковки на слайдах!
  12. 3 Октябрь 2010 в 16:28 | #12
    а ну так там же стоит 3 секунды, поставь 10
  13. 4 Октябрь 2010 в 06:29 | #13
    блин, это называется - смотрю в упор на параметр и не вижу его! спасибо!
  14. 4 Октябрь 2010 в 09:46 | #14
    бывает)))
  15. 8 Октябрь 2010 в 11:41 | #15
    кстати, в ie8 получается портянка : http://bit.ly/aEKyKo вот такая, та же шняга в ослике с проектом, который уже вывалил заказчику :( в иных прочих не тестил... как-то лечится?
  16. 8 Октябрь 2010 в 12:07 | #16
    мдя, хуевинька. я попробовал поставить их всех в один ряд - после этоо они перестали анимироваться
  17. 8 Октябрь 2010 в 12:21 | #17
    ничего лучше не придумал, прости
  18. 8 Октябрь 2010 в 12:36 | #18
    вот. вот так лчше, на спанах
  19. 8 Октябрь 2010 в 13:11 | #19
    аааа, шайтан! я знал, что ты его заборешь!
Комментирование отключено.