Прокрутка списка объектов по событию mousemove
Лето, жара… хочется отдыхать и купаться, но никак не писать интересные статьи :) поэтому опять я пишу с небольшим перерывом. Долго думал – чем же Вас порадовать на этот раз, “валидация форм” – большая статья (напишу позже разбив на пару частей :), “AJAX upload файлов” – хмм.. интересно, но нужен хороший пример (будет позже :), “как сделать свой JS фреймверк” – наверное будет цикл нескольких статей и начну точно не сегодня :)))
Вот так я долго не решался… но на днях у одного из моих коллег было задание сделать карусель, которая бы вращалась при перемещении мышки, причем по бокам были ПНГ затенения… похардкодив немного он конечно же сделал :))) Но у меня тоже были наработки по этому направлению, и я решил на выходных усовершенствовать свой плагин, чтобы он работал в любых условиях :)
Плагин – mouseGallerySlide
Вы можете открыть пример в новом окне.
В первом примере нажимать на картинки не получится, т.к. сверху лежит абсолютно позиционированный div, это я сделал специально, хотел показать, что сверху объекта могут накладываться любые слои не мешая функционалу плагина. Секрет в том, что события происходят в зависимости от положения мышки на странице. Если нужны кликабельные картинки и тени по бокам – повесьте два маленьких diva, тогда центральная часть списка будет доступна для клика.
Теперь детально по коду примера и плагина:
Как всегда опишу только нужную структуру HTML и CSS необходимые для работы плагина… все остальные эффекты это дело вашего воображения.
HTML:
<ul>
<li><a href="#"><img src="images/pic01-small.jpg" alt="" /></a></li>
...
<li><a href="#"><img src="images/pic05-small.jpg" alt="" /></a></li>
</ul>
</div>
CSS:
width:480px;
height:60px;
overflow:hidden;
position:relative;
}
.scrollGallery ul {
padding:0;
margin:0;
position:relative;
list-style:none;
width:31999px;
}
.scrollGallery ul li {
float:left;
}
Для правильной работы плагина нам необходимо:
- объект-родитель с заданными размерами блока и overflow, position:relative ставится для IE, чтобы внутренние объекты не вылазили за границы
- двигающейся элемент, в нашем примере это UL с большоооой шириной… :)
- ну и флотнутые элементы галереи (li)
JavaScript:
<script type="text/javascript" src="js/jquery.mouseGallerySlide.1.1.0.js"></script>
<script type="text/javascript">
$(window).bind('load', function(){
$('div.scrollGallery').mouseGallerySlide({
scrollElParent: 'ul',
scrollEl: 'li'
});
});
</script>
В примере для этого плагина я воспользовался нестандартной инициализацией скрипта $(window).bind(‘load’, function(){…}), вместо $(document).ready(function(){…}), все из-за того, что такие браузеры как Chrome и Safari не правильно считают параметры блоков пока не загрузились картинки, это можно также поправить захордкодив ширину LI или задав размеры картинкам через атрибуты width и height… тут можно поступать как кому угодно.
Параметры плагина:
- scrollElParent – селектор двигающегося элемента
- scrollEl – селектор слайдов
Простой пример:
Вы можете открыть пример в новом окне.
Скачать плагин
10 Коментариев to Прокрутка списка объектов по событию mousemove
Оставить сообщение
Метки
Рубрики
- Browsers (2)
- CSS (2)
- HTML (6)
- JavaScript (30)
- jQuery (17)
- JS Plugins (21)
- Mootools (3)
- off-topic (2)
- Prototype (1)
- WordPress (1)
- WP Plugins (1)
- Верстка (2)
- Методики (5)
- Полезные ссылки (6)
хороший примерчик
Спасибо очень хорошая карусель, уже в применении =)
А сложно это переделать в вертикальную прокрутку?
Код плагина не запакован… переделать код не составит вам никакого труда.
Может позже я проапдейчу плагин для возможности выбора направления.
Как замедлить скорость прокрутки слайдов?
в данный плагин я не вносил возможность изменения скорости, т.к. в зависимости от положения мышки над элементами скорость варьируется от центра к краю списка элементов от меньшей к большей соответственно
Здравствуйте!
Случайно попал к вам в гости. очень понравилось!
Я думаю теперь буду частенько к вам приходить.
Желаю развиваться и дальше.
thaks!
Кто решил проблему с вертикальным вариантом?
Что по тупому не катит…..
По onmouse – выскакивает ошибка….
Буду рад любой реакции – очень надо
АВТОРУ СПАСБО!
МОЛОДЕЦ! В инет НЕТ такого!
А автопрокрутку можно сделать?