Урок: перелистывание документа. Секреты и техника качественного эффекта листания страниц

Многие сайты используют подобные jQuery-плагины для предоставления каталогов продукции, продающих брошюр и так далее, и все это не просто так. jQuery-решения, позволяющие вам листать блоки контента, предлагают вам пользователям очень удобный способ ознакомиться с тем, что вы готовы предложить им. Если все сделать правильно, но такие электронные брошюры будут работать не хуже настоящих напечатанных, которые можно держать в руках. При помощи специальных плагинов, вы можете позволить посетителям вашего сайта без труда перелистывать страницы и чувствовать, будто они читают настоящую книгу.

Использование jQuery-плагинов с эффектом перелистывания позволит вам представлять содержимое вашего сайта в более привлекательной манере. Перед тем, как выбрать подходящее вам решение, вам следует получить некоторый технический навык. Некоторые плагины до сих пор основываются на Flash, и поэтому они не позволяет пользователям осуществлять поиск материала соответствующим образом и, к тому же, они не будут работать на iOS-устройствах. Это отрицательно сказывается на seo-оптимизации, а также приведет к тому, что пользователи просто не найдут интересующую их информацию. Плагины перелистывания на базе jQuery позволяют вам избежать всех этих проблем. Чтобы помочь вам найти подходящий скрипт, сегодня мы решили предложить вам подборку одних из лучших jQuery-плагинов для реализации эффекта перелистывания.

Эта подборка состоит из более, чем 20 jQuery-плагинов соответствующего предназначения, которые позволят вам реализовать механизм перелистывания страниц. У каждого представленного плагина есть свои уникальные свойства, поэтому мы предлагаем вам ознакомиться со всеми по очереди. После чего, хотелось бы, чтобы вы высказали свое мнение о выбранном вами плагине, чтобы помочь другим читателям избежать рутинных поисков. Заранее предупреждаем, что часть предоставленных решений являются платными.


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


Booklet представляет собой jQuery-инструмент для отображения контента на перелистываемых страницах. Он был разработан на базе библиотеки jQuery. Распространяется он под лицензионным соглашением MIT и GPL.


jPageFlip представляет собой jQuery-плагин для имитации процесса перелистывания страниц. Чтобы использовать jPageFlip, вам придется внедрить файл jQuery.js. jPageFlip хорошо поддается настройке. В последующие версии планируется добавить больше опций настроек. jPageFlip на данный момент базируется на основе «canvas», который поддерживается только в Firefox, Chrome, Opera и Safari (причем, в свежих версиях).


Flippy представляет собой jQuery-плагин для создания кросс-браузерного эффекта перелистывания страниц, который позволяет вам «перелистывать» любой HTML-элемент, какой только захочется.


Плагин imBookFlip умеет подгружать книгу в iframe, либо прямо на странице. Страницы книги можно переключить на ручное перелистывание, включить автоматическое перелистывание сразу после того, как страница будет загружена, либо установить функцию включения перелистывания после того, как будет произведен клик по обложке. Вы также без труда сможете добавить звук при помощи Sound Manager.


Flip – это jQuery-плагин, который без труда сможет перелистывать элементы на ваших страницах в 4-х направлениях.


FlipPage представляет собой jQuery-плагин, который создает имитацию перелистывания страниц будто в книге.
Изначально плагин был разработан для проведения презентаций, он также нашел свое место в таком устройстве как электронная книга. Этот плагин был разработан таким образом, чтобы использовать мощь графического аппаратного оснащения для воспроизведения плавных анимаций на HTML5/CSS3.


Слайдер способен менять изображения из портфолио, перелистывая их тогда, когда пользователь кликает по элементам управления. То есть, когда пользователь кликает по изображению, оно начинает вращаться на 360 градусов, и по окончании анимации пользователь видит новое изображение.


Turn.js – это javascript-библиотека, которая превратит ваш контент в почти настоящую книгу или журнал со всеми преимуществами HTML5. Интернет сильно преобразился с появлением интерфейсов, основанных на HTML5. turn.js идеально подойдет для публикации журналов, книг или каталогов на базе HTML5.


Этот плагин создает эффект перелистывания страницы поверх или внутри отображенных изображений, и это напоминает 2D-графику.


С каждым днем jQuery становится все более популярной ввиду удобства, гибкости и скорости. Такая анимация в стиле блокнота идеально подойдет для презентации информации на сайте.


BookBlock представляет собой jQuery-плагин, который можно использовать для создания компонентов в стиле буклетов, которые дадут вам возможность реализовать навигацию с перелистыванием страниц. Здесь можно использовать любой контент, будь то изображения или текст. Плагин трансформирует структуру только при необходимости (например, при перелистывании страницы), и использует наложения в виде теней для страниц, что придает ощущение реалистичности.


FlipBook способен собирать несколько изображений, а затем анимировать их. Каждое изображение отображается на короткий промежуток времени, а затем заменяется другим изображением по списку. Анимация начинается тогда, когда первое изображение полностью загружено, а изображения, которые еще не загрузились с сервера, просто пропускаются. Они включаются в анимацию только после того, как будут полностью загружены браузером.


Metro JS представляет собой javascript-плагин для jQuery, разработанный для того, чтобы у вас была возможность создавать интерфейсы в стиле Metro. Данный релиз сосредоточен вокруг Live Tiles, Application Bar и Theming. На данный момент он находится на ранней стадии разработки, но все функции должны работать на IE7+(Win/WinPhone), Firefox, Chrome, Android, Opera и Safari(OSX/iOS).

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

В этой статье мы будем использовать PHP и плагин turns.js, которые позволят реализовать эффект перелистывания страницы на чистом CSS3 и jQuery. Мы возьмем наиболее популярные картинки из Instagram.com и создадим красивый журнал.

HTML

Прежде всего нам нужно понять основы этого примера. Мы будем использовать простой дизайн странички, который совмещает HTML5 разметку и PHP в одном файле. Так будет проще понимать. Вы можете видеть результат выполнения ниже:

index.php

Здесь мы подключаем style. css , в head, и javascript файлы внизу. Далее мы подключаем еще 3 js файла: библиотека jQuery, turn.js, script.js, в котором мы будем инициализировать плагин и принимать события клавиатуры. PHP код, который мы напишем немножечко позже, будет выполнятся в #magazine div блоке. PHP будет генерировать странички нашего журнала, которые будут нужны для turn.js.

Как пример, вы можете посмотреть на три первых страницы журнала, сгенерированных с помощью PHP:

1 // 32 2 // 32 3 // 32

Код который вы видели, полностью лежит в блоке #magazine div. Это единственное, что нужно для turns.js. Вам не нужно создавать какие-то специальные классы или дата атрибуты для элементов, которые будут интерпретированы в странички. На этом мы готовы приступить к написанию PHP кода!

PHP

PHP будет соединяться с Intagram API, кешировать результаты, и генерировать разметку, которую вы видели выше.

Первым шагом будет регистрация Instagram девелоперского сайта. После чего вы получите client_ id ключ, который вставим как значение в переменную $instagramClientID , в файле index. php . Мы не нуждаемся в расширенной функциональности API, мы просто запросим наиболее популярные картинки. Это освободит нас от использования дополнительной OAuth аутентификации, которая только утруднит понимание кода.

Ниже пример JSON ответа текущих популярных картинок от Instagram. Я скрыл некоторые атрибуты, чтобы сделать код более понятным.

{ "meta": { "code": 200 }, "data": [{ "tags": ["beautiful", "sky"], "location": "null", "comments": { "count": 31, "data": [...] }, "filter": "Normal", "created_time": "1331910134", "link": "http:\/\/instagr.am\/p\/IPNNknqs84\/", "likes": { "count": 391, "data": [..] }, "images": { "low_resolution": { "url": "http:\/\/distilleryimage8.instagram.com\/03c80dd86f7911e1a87612313804ec91_6.jpg", "width": 306, "height": 306 }, "thumbnail": { "url": "http:\/\/distilleryimage8.instagram.com\/03c80dd86f7911e1a87612313804ec91_5.jpg", "width": 150, "height": 150 }, "standard_resolution": { "url": "http:\/\/distilleryimage8.instagram.com\/03c80dd86f7911e1a87612313804ec91_7.jpg", "width": 612, "height": 612 } }, "caption": { "created_time": "1331910148", "text": "Goodnight.\ue056", "from": { "username": "jent99", "profile_picture": "http:\/\/images.instagram.com\/profiles\/profile_6227738_75sq_1319878922.jpg", "id": "6227738", "full_name": "jent99" }, "id": "148395540733414783" }, "type": "image", "id": "148395420004568888_6227738", "user": { "username": "jent99", "website": "", "bio": "Mostly nature pics.\ue32b\ue32b\ue32b Hope you like them.\ue056\ue32a \ue334gi\ue334 ", "profile_picture": "http:\/\/images.instagram.com\/profiles\/profile_6227738_75sq_1319878922.jpg", "full_name": "jent99", "id": "6227738" } }, { /* Здесь идет больше фотографий... */ }] }

API ограничивается 32 последними картинками, но этого вполне достаточно для нашего примера. Вы можете видеть, что каждое фото имеет три размера, но мы будем использовать только один. Также здесь присутствует дополнительная информация о тегах, комментариях, и так далее.

PHP будет кешировать результаты этого API запроса. Таким образом, мы будем получать последние картинки каждый час. Это сделает наше приложение более быстрым и ограничит количество обращений к API.

index.php

// Вы можете получить client ID из Instagram API страницы $instagramClientID = "-- вставьте свой client id ключ здесь --"; $api = "https://api.instagram.com/v1/media/popular?client_id=".$instagramClientID; $cache = "cache.txt"; if(file_exists($cache) && filemtime($cache) > time() - 60*60){ // Если файл кэша существует и он // свежее нежели 1 час, будем использовать его $images = unserialize(file_get_contents($cache)); } else{ // Создаем API запрос и генерируем файл кэша // Получаем 32 популярные фотографии на Instagram $response = file_get_contents($api); $images = array(); // Декодируем ответ и создаем массив foreach(json_decode($response)->data as $item){ $title = ""; if($item->caption){ $title = mb_substr($item->caption->text,0,70,"utf8"); } $src = $item->images->standard_resolution->url; $images = array("title" => htmlspecialchars($title), "src" => htmlspecialchars($src)); } // Удаляем последнюю картинку, но мы будем иметь // 32 картинки, когда добавим обложку array_pop($images); // Добавляем обложку в начале массива array_unshift($images,array("title"=>"Cover", "src"=>"assets/img/cover.jpg")); // Обновляем файл кэша file_put_contents($cache,serialize($images)); } // создаем разметку $totalPages = count($images); foreach($images as $i=>$image){ ?> " />