Эффект передвижения слайдов на jQuery

Эффект перелистывания приобрел популярность в связи с распространением мобильных приложений. Некоторые библиотеки для мобильных приложений уже имеют встроенные функции для реализации такого эффекта с использованием прикосновения к сенсорному экрану. Однако такой эффект может быть интересен и на экранах настольных систем для смены различных слайдов с помощью курсора мыши. В данном уроке представлена идея для простой реализации эффекта перелистывания с помощью функций перетаскивания библиотеки jQuery UI. В основе лежит простая комбинация опции revert, анимации jQuery для  перемещения элемента и события мыши для запуска процесса перелистывания страниц.

 

Разметка HTML

    <div id="container">
        <div id="swipe_container">
            <div class="item">Страница №1</div>
            <div class="item">Страница №2</div>
            <div class="item">Страница №3</div>
            <div class="item">Страница №4</div>
            <div class="item">Страница №5</div>
            <div style="clear:both"></div>
        </div>
    </div>

 

 

CSS

Контейнер для страниц должен иметь ширину равную или больше, чем общая ширина страниц содержания. Например, если у нас есть 3 пункта с шириной 300px, то контейнер должен иметь ширину минимум 900px.

        #container {
            width: 320px;
            height: 480px;
            overflow: hidden;
            border: 5px solid #0099cc;
            margin:0 auto;
        }
        #swipe_container {
            width: 1600px;
            background: #999;
        }
        .item {
            font-size: 24px;
            width: 320px; 
            height: 480px; 
            float: left;
            background: #e3e3e3;
        }

 

 

jQuery

В коде jQuery осуществляется подсчет страниц в контейнере для того, чтобы определить первую и последнюю страницу. Если попытаться перелистнуть крайние элементы, то ничего не получится.

    $(document).ready(function() {
        var cont_pos = $("#swipe_container").position();
        var item_width = $(".item").width();
        var items = $("#swipe_container > div.item").length;
        var item_index = 1;
        var cont_post_temp;

        $("#swipe_container").draggable({ axis: "x", revert: true });

        function bindMouseUp() {
            $("#swipe_container").unbind('mouseup');
            cont_post_temp = $("#swipe_container").position().left;
            if (cont_pos.left > cont_post_temp && item_index != items) {
                // Перелистывание вправо
                $("#swipe_container").draggable("option", "revert", false);
                var moveLeft = cont_pos.left - cont_post_temp;
                moveLeft = Math.abs(item_width - moveLeft);
                $("#swipe_container").animate({
                    left: '-=' + moveLeft
                }, 500, function() {
                    $("#swipe_container").draggable("option", "revert", true);
                    cont_pos = $("#swipe_container").position();
                    $("#swipe_container").bind('mouseup', function() {
                        bindMouseUp();
                    });
                });
                item_index++;;
            } else if (cont_pos.left < cont_post_temp && item_index != 1) {
                // Перелистывание влево
                $("#swipe_container").draggable("option", "revert", false);
                var moveLeft = cont_post_temp - cont_pos.left;
                moveLeft = Math.abs(item_width - moveLeft);
                $("#swipe_container").animate({
                    left: '+=' + moveLeft
                }, 500, function() {
                    $("#swipe_container").draggable("option", "revert", true);
                    cont_pos = $("#swipe_container").position();
                    $("#swipe_container").bind('mouseup', function() {
                        bindMouseUp();
                    });
                });
                item_index = item_index - 1;
            } else {
                // В начале или в конце перелистывания страницы
                $("#swipe_container").draggable( "option", "revert", true );
                $("#swipe_container").bind('mouseup', function() {
                    bindMouseUp();
                });
            }
        }

        $("#swipe_container").mouseup(function() {
            bindMouseUp();
        });
    });


Процесс перелистывания запускается функцией bindMouseUp. В ней привязывается и отвязывается событие мыши, а также включается и отключается опция revert при перетаскивании объекта (страница вернется на свое место, если пользователь рано отпустит кнопку мыши).


Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/yVEKoxxsqSM/lessons.php

Читать комменты и комментировать

Добавить комментарий / отзыв



Защитный код
Обновить

Эффект передвижения слайдов на jQuery | | 2012-06-19 12:01:58 | | Статьи Web-мастеру | | Эффект перелистывания приобрел популярность в связи с распространением мобильных приложений. Некоторые библиотеки для мобильных приложений уже имеют встроенные функции для реализации такого эффекта с | РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
 
Поделиться с друзьями: