28 января 2008 ~ 28 Комментариев

Горизонтальный скроллинг в блоке

slider2
Горизонтальный скроллинг это очень оригинальный прием, а именно оригинальность одна из главных составляющих успеха любого проекта.

Как это работает?

Создается блок(Container) с ограничением размера, в Container помещается блок большего размера(Slider) в котором находятся блоки с контентом(Section).

В блоке Container мы будем видеть только лишь часть блока Slider, как показано на рисунке ниже.

See Spot Run trailer

slider1

При определенном действии блок Slidera сдвигается и тем самым его видимая часть меняется, как это показано на рисунке ниже.

slider3

Думаю теперь все и всем понятно :)

Реализация

Все операции с движением блока Slider будет происходить с помощь всем известной javascript библиотеки mootools.

HTML код очень простой. Сначало подключим и настроим библиотеку mootools вставив код данный ниже между тегами head.


<script type="text/javascript" src="mootools.svn.js"></script>
<script type="text/javascript">
window.addEvent('domready', function(){
var scroll = new Scroller('container', {area: 100, velocity:1});
$('container').addEvent('mouseover', scroll.start.bind(scroll));
$('container').addEvent('mouseout', scroll.stop.bind(scroll));
});
</script>

Далее создадим все необходимые блоки.


<div id="container">
  <div class="slider">
    <div class="section">section 1 content</div>
    <div class="section">section 2 content</div>
    <div class="section">section 3 content</div>
    <div class="section">section 4 content</div>
    <div class="section">section 5 content</div>
  </div>
</div>

Теперь осталось только оформить все это дело с помощью css


#container{
width: 780px; height: 440px;
border: 8px solid #FFF;
overflow: auto;
margin: 0 auto;
overflow-x: hidden;
overflow-y: hidden;
} 

.slider{
width: 2000px; height: 400px;
padding: 20px;
background: #CCCCCC;
}

 .section{
margin:0; width:220px;
float:left;
margin-right:50px;
}

Все! Готово ^_^

Посмотреть пример

Скачать пример

По мотивам:

http://woork.blogspot.com/2008/03/using-css-and-mootools-to-simulate.html

28 Комментариев для “Горизонтальный скроллинг в блоке”

  1. warkord 28 марта 2008 at 15:36 Permalink

    В firefox 2.0.0.9 в обратную сторону очень тормозно прокручивается. А так интересно, спасибо.

  2. Bum3r 28 марта 2008 at 17:01 Permalink

    Супер.
    warkord, а у меня нормально прокручиваеться и в нормальную сторону.
    FireFox 2.0.0.13

  3. WebApelsin 28 марта 2008 at 17:37 Permalink

    Можно ли подобного эффекта достичь без использования Mootools? Или хотя бы с помощью jQuery…

  4. Я собственной персоной 28 марта 2008 at 19:57 Permalink

    WebApelsin, хм, понятия не имею :/

  5. Виктор 29 марта 2008 at 19:44 Permalink

    ИМХО, syntaxhighlighter sucks, highlight.js от Ивана Сагалаева ( http://softwaremaniacs.org/soft/highlight ) рулит. ;-)

  6. Я собственной персоной 29 марта 2008 at 20:15 Permalink

    Действительно хорошая вещь, искреннее спасибо Виктор ;)

  7. Иван Сагалаев 30 марта 2008 at 19:22 Permalink

    Кстати, у вас в последнем куске кода (CSS) нет закрывающей «}», поэтому highlight.js отказывается считать это CSS’ом и не расцвечивает.

  8. Я собственной персоной 30 марта 2008 at 19:49 Permalink

    Кстати, у вас в последнем куске кода (CSS) нет закрывающей «}», поэтому highlight.js отказывается считать это CSS’ом и не расцвечивает.

    Спасибо, после моего глобального апдейта на скорую руку все подгонял и одной скобочки недосчитался :)

  9. Антон 31 марта 2008 at 20:37 Permalink

    Спасибо! Очень круто!..)))

  10. Иван 3 апреля 2008 at 21:38 Permalink

    Из-за Mootools.svn.js размером 183Кб пример открывался немеренное количество времени. Нафиг такие эффекты. Не перевелись еще узкие каналы на Руси :(

  11. Иван 3 апреля 2008 at 21:40 Permalink

    > Написал Иван 28.03.08 в 14:11
    И написал я это 03.04.08 в 17:40 :)
    Кстати, у всех комментов неправильное время стоит

  12. Я собственной персоной 3 апреля 2008 at 22:13 Permalink

    > Написал Иван 28.03.08 в 14:11
    И написал я это 03.04.08 в 17:40 :)
    Кстати, у всех комментов неправильное время стоит

    Нет нет нет! Все правильно, в моем блоге мы будем жить по моим законам и по моему времени :-)

  13. Я собственной персоной 3 апреля 2008 at 22:25 Permalink

    Только вот почему то, время комментариев не моё 0_о и оно мне не подвластно!

  14. Я собственной персоной 3 апреля 2008 at 22:29 Permalink

    Я исказил время и пространство! *Злобный смех*
    Наладил в смысле.

  15. Евгений 11 апреля 2008 at 0:50 Permalink

    А как сделать появляющиеся стрелочки (например как на http://inside.nile.ru/#years-2008/ – работает в Мозилле и не работает в ИЕ)? А то непонятно как нужно крутить если об этом не писать специально..

  16. Стас 16 апреля 2008 at 13:30 Permalink

    Это просто шедеврально! Уже только этот пост достаточен для добавления блога в rss!

  17. ilyt 14 мая 2008 at 19:43 Permalink

    интересно а можно ли сделать чтобы блок открывался не справа, а по центру?..

  18. Flyer 10 июля 2008 at 23:54 Permalink

    как сделать, чтобы прокрутка осуществлялась при нажатии на ссылки, а не при наведении на область?

  19. Иван 7 октября 2008 at 18:52 Permalink

    блин классная штука она мне очень пригодилась а если бы еще прокручивать колёсиком мышки то ваще выло бы супер!!!

  20. Иван 7 октября 2008 at 18:55 Permalink

    а на счет веса скриптового файла 180кб который из него можно каменты поудолять при желании )

  21. Павел 19 октября 2008 at 1:22 Permalink

    столкнулся с такой проблемой как прокруткой в firefox,
    т.е при прокрутке при переходе с одного курсора с одного элемента section на другой происходит остановка прокрутки, (только в firefox)
    на представленном примере эт тоже есть,
    * версии ff перепробовал разные,
    как решить ?

  22. Павел 19 октября 2008 at 1:42 Permalink

    столкнулся с такой проблемой как прокруткой в firefox,
    т.е при прокрутке при переходе с одного курсора с одного элемента section на другой происходит остановка прокрутки, (только в firefox)
    на представленном примере эт тоже есть,
    * версии ff перепробовал разные,
    как решить ?

    хе-хе, вот что занчит когда отвлекают,
    исправил:

    столкнулся с такой проблемой как прокруткой в firefox,
    когда курсор переходит с одного элемента section на другой происходит остановка прокрутки, (только в firefox)
    на представленном примере эт тоже есть,
    * версии ff перепробовал разные,
    как решить ?

  23. Михаил 30 января 2009 at 19:52 Permalink

    столкнулся с такой проблемой как прокруткой в firefox,
    когда курсор переходит с одного элемента section на другой происходит остановка прокрутки, (только в firefox)
    на представленном примере эт тоже есть,
    * версии ff перепробовал разные,
    как решить ?

    Тоже с этим столкнулся, тоже хотел бы узнать как это исправить.

  24. Slim 11 февраля 2009 at 20:39 Permalink

    столкнулся с такой проблемой как прокруткой в firefox,
    когда курсор переходит с одного элемента section на другой происходит остановка прокрутки, (только в firefox)
    на представленном примере эт тоже есть,
    * версии ff перепробовал разные,
    как решить ?

    Тоже с этим столкнулся, тоже хотел бы узнать как это исправить.

    Да можно пофиксить эту хрень. Фикситься очень просто. Непонимаю почему автор вставил именно такую реализацию.
    Поменяй сторки

    $(‘container’).addEvent(‘mouseover’, scroll.start.bind(scroll));
    $(‘container’).addEvent(‘mouseout’, scroll.stop.bind(scroll));

    на

    $(‘container’).addEvent(‘mouseenter’, scroll2.start.bind(scroll2));
    $(‘container’).addEvent(‘mouseleave’, scroll2.stop.bind(scroll2));

    И будет тебе щастье :)

  25. Алексайндр 6 апреля 2009 at 4:07 Permalink

    Ссылка битая? Не могу посмотреть пример. Поправите?

  26. Dimon 20 сентября 2009 at 21:47 Permalink

    Очень красиво!

  27. Алексей 10 июня 2010 at 14:22 Permalink

    .slider{
    width: 1200px; height: 120px;
    padding: 5px;
    background: #CECECE;
    }

    width: 1200px – фиксированная ширина, это оооооооооочень плохо, ибо по достижении крайнего слайда – все равно ведет в сторону, пока не будет достигнута заданная ширина. Нужна динамика

  28. Алексей 9 сентября 2010 at 18:56 Permalink

    Подскажите пожалуйста как сделать прокрутку не по области а по нажатию или наведению мышки на кнопку.


Оставить комментарий