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

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

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



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




#сontainer{
	overflow:hidden;
	white-space:nowrap;
}
#сontainer div {
	display:inline-block; 
	width:250px; 
	height:50px;
}




<div id="сontainer">
	<div style="background-color:red;"></div>
	<div style="background-color:orange;"></div>
	<div style="background-color:yellow;"></div>
	<div style="background-color:green;"></div>
	<div style="background-color:cyan;"></div>
	<div style="background-color:blue;"></div>
	<div style="background-color:purple;"></div>
</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>
    да полагаю ты прав :)
  1. Пока что нет уведомлений.