Я работал 5 (+ 2, версия 1.1) часов на ваш вопрос.Самой большой проблемой было переключение между двумя элементами.Оказывается, что нет никакой функции «подкачки». Так что я сделал альтернативу. Вы не можете сделать этот переход затухания лучше, но он довольно близок к вашему GIF.Если вы хотите просто поменять их красиво и грязно, без какого-либо выцветания ... тогда это очень легко сделать.
В любом случае, я написал плагин:
JoeShuffle v1.1
Простой плагин jQuery для перемешивания списка.Очень прост в установке и использовании.Работает как любой другой плагин jQuery.Просто добавьте jQuery на свою страницу, включите скрипт с необходимым CSS-файлом.Затем позвоните в какой-нибудь список и вуаля!Вы можете изменить интервальную скорость следующим образом: $('#JoeShuffle').JoeShuffle({intervalSpeed: 2000});
Начиная с Ver 1.1 также рандомизирует список при первой загрузке и позволяет подключить этот скрипт к нескольким спискам.Также вы можете установить макс.количество отображаемых элементов:
$('#JoeShuffle').JoeShuffle({displayElements: 4});
.
JoeShuffle v1.1 [ Загрузить (33,54 КБ) - Просмотреть демонстрацию (jsfiddle)]
JoeShuffle v1.0 [ Загрузить (65,12 КБ) - Просмотреть демонстрацию (jsfiddle)]
ПРИМЕЧАНИЯ
Я не уверен, насколько он кроссбраузер, а также он очень грязный и сырой плагин.Конечно, можно использовать некоторую оптимизацию, однако она работает.
В моих примерах используются красочные рамки, но на самом деле не имеет значения, есть ли изображения или что-то еще в элементе li
.
Некоторые функции:
- Помнит последний слот / позицию, где был сделан обмен, и больше не будет его использовать.В противном случае это будет выглядеть странно
- Вы можете установить свой собственный интервал-скорость
- Перемешивать все, что вы положили между тегами списка.Тем не менее, вы должны держать их все в одном размере
- (v1.1) Рандомизирует все элементы в списке ul при первой загрузке.
- (v1.1) Позволяет установить макс.количество одновременно отображаемых элементов
- (v1.1) Позволяет подключить этот скрипт сразу к нескольким спискам
В настоящее время он работает следующим образом.Что бы вы ни положили внутрь элементов li
, они их перемешают.Если у вас есть 5 элементов, то он будет скрывать один.А затем, в основном, возьмите скрытый элемент и поменяйте его местами с каким-то случайным элементом.Тем не менее, я вернусь к нему через ~ 15 часов и добавлю опцию, чтобы вы могли установить, сколько отображается.Таким образом, на самом деле в списке может быть 10 элементов, но одновременно будет отображаться только 4, чтобы сделать рандомизацию более динамичной.
Rev 1 примечания
Так как вы хотели рандомизировать их при первой загрузке.Затем я добавил к этому сценарию плагин rand()
.Таким образом, он делает первый цикл hide()
очень аккуратным, а также работает в качестве рандомизатора в полном списке ... даже если бы он думал, что на самом деле список не рандомизируется отдельно ... это означает, что он работает быстрее.Как я уже упоминал в комментариях внутри скрипта, rand()
плагин * Alexander-Wallin должен быть в вашей коллекции jQuery.
Как видите, вы можете подключить его к несколькимсписки отныне.Это, а также добавление дополнительных элементов в список породило новую проблему.То, что скрипт загружался медленно, и все элементы будут отображаться в течение нескольких мс при первой загрузке.Я исправил проблему, добавив скрипты включительно внутрь <head>
, а не после содержимого страницы.Таким образом, скрипты загружаются раньше элементов ... и это означает, что все гладко.
Хотя я понятия не имею, что произойдет, если опция displayElements
установлена ниже, то фактические элементы учитываются внутри списка.Лучше избегайте таких ситуаций.
Также, если вы заметили, что элементы объединяются в CSS.Вы также можете использовать display: inline-block;
, но inline-block
не очень кроссбраузер, поэтому я использовал float
.Это, однако, означает, что под элементами у вас должно быть clear: both;
в некоторой форме. Или, может быть, даже некоторая оболочка вокруг списка.