Обзор еще одного слайдера под библиотеку jQuery под названием bxSlider.
Данный слайдер обладает полным набором возможностей, адаптивный и легко устанавливается в проекте. Адрес проживания слайдера bxSlider - The Responsive jQuery Content Slider.
Конкретно какими возможностями обладает bxSlider:
полностью адаптивный
может быть горизонтальным, вертикальным
может содержать в себе изображения, видео или HTML-контент
поддержка функций touch/swipe
для анимаций используются CSS transitions
маленький размер файла, легко видоизменяется и настраивается
поддержка браузерами Firefox, Chrome, Safari, iOS, Android, Ie7+
большое число настроек
Установка слайдера bxSlider
Установка bxSlider ничем не отличается от установки ему подобных скриптов для создания carousel. Скачиваем с сайта архив - в нем есть все необходимое для подключения и работы. Помимо этого, там есть несколько дополнительных файлов типа
1
jquery.easing.1.3.js
и
1
jquery.fitvids.js
. Но нет библиотеки jQuery, которую автор рекомендует подключать в проект через CDN. Я подключу jQuery локально, версии 1.11.1.
В HTML-файле перед закрывающим тегом body произвожу подключение скриптов в таком порядке:
Файл
1
jquery.bxslider.min.js
беру из скачанного архива, файл
1
bxslider.js
- произвольного имени, для настроек плагина bxSlider.
В
1
head
HTML-документа, помимо этого, производится подключение таблицы стилей для плагина bxSlider, которую также беру из скачанного архива. Данный шаг выполнять совершенно необязательно - можно обойтись без файла
1
jquery.bxslider.css
и тогда получим “чистый” слайдер, который можно видоизменять по своему с помощью CSS:
Плагин bxSlider подключен и готов к работе. Осталось создать HTML-разметку для него.
HTML-разметка для слайдера bxSlider
Внутри тега
1
body
создаю разметку для будущего слайдера. Она проста и семантична, представляет из себя обычный маркированный список, в котором каждый элемент
1
li
является слайдом. Внутри
1
li
может размещаться изображение, видео или любой другой HTML-контент. Контейнер
1
ul
должен иметь класс с произвольным именем:
Инициализация скрипта bxSlider
В созданном ранее js-файле
1
bxslider.js
произвожу инициализацию плагина bxSlider. Важно заметить, что строка инициализации должна быть обязательно заключена в “обертку”
1
$(document).ready()
, иначе слайдер не будет работать:
Смотрю готовый результат:
Слайдер bxSlider запущен и работает - есть кнопки пагинации и перемотки, изображения крутятся при нажатии на них. Пробую отключить таблицу стилей
1
jquery.bxslider.css
и смотрю результат. Действительно, слайдер bxSlider получается “голым”, но рабочим:
Стилизация слайдера bxSlider
Произведу небольшую стилизацию слайдера bxSlider. Для этого необходимо воспользоваться плагином Firebug под браузер Mozilla Firefox, чтобы инспектировать DOM-дерево и находить нужные HTML-элементы с их классами. Как можно было понять из базовой HTML-разметки, все элеметы управления слайдером генерируются скриптом автоматически.
Стилизация слайдера bxSlider с помощью CSS-правил (в данном примере это SCSS) может быть такой:
И посмотрим результат наших трудов. Уже гораздо лучше, однако:
Настройка слайдера bxSlider
Плагин bxSlider имеет большое количество настроек, которые легко подключать в коде. Разнообразные (и многочисленные) примеры создания слайдера приведены на странице - Examples. Эти примеры можно и стоит изучить (хотя бы слегка, для будущего).
В этой статье давайте я воссоздам один из приведенных на странице Examples примеров. Пусть это будет слайдер с автоматической прокруткой и кнопками управления прокруткой - запуско и остановкой. Такой готовый пример размещен здесь - Auto show with start / stop controls. Я просто сделаю свой собственный дубликат, со своими стилями.
Для этого в SCSS-коде добавляю такие строки:
HTML-разметку на странице я не меняю, как вы могли заметить. Блок
1
.bx-controls-auto
генерируется скриптом bxSlider автоматически.
Файл настроек
1
bxslider.js
подправляю, чтобы он выглядел таким образом:
Смотрю результат в браузере:
Отлично! Появились кнопки запуска и остановки показа слайдшоу; сам слайдер стартует автоматически, при открытии страницы в окне браузера.
Заключение
Плагин bxSlider мне однозначно понравился. Семнатичная простая разметка, использование произвольного имени класса (а не идентификатора), автоматическое генерирование HTML-элементов слайдера, большое количество настроек, хорошие эффекты, простота подключения.
Все эти преимущества однозначно сделали плагин bxSlider номером один в моей копилке.
Сегодня мы рассмотрим пошаговый процесс создания впечатляющей технологии, которую можно использовать для создания эффекта, очень похожего на параллакс, не используя при этом ни строчки Javascript; она может быть достигнута с помощью очень простого способа и на чистом CSS.
Прежде чем продолжить чтение, посмотрите на демо-результат, чтобы сразу оценить, что мы будет изучать в данной статье (чтобы увидеть эффект, вам необходимо воспользоваться настольным компьютером или ноутбуком).
Данный прием может быть применен для создания страниц с описанием продукта или даже для своего рода презентаций типа Powerpoint/Keynote. В этом приеме кроется большой потенциал для создания иллюстрированных online-страниц.
Ниже описан способ, как можно добиться такого результата.
Это все CSS
Основой данного приема является CSS-свойство
1
background-attachment: fixed
, которое доступно для использования веб-разработчиками, начиная с версии CSS2.1. Любое фоновое изображение, к которому применено данное свойство, начинает занимать фиксированное положение относительно окна браузера. Мы воспользуемся данным свойством для того, чтобы зафиксировать иллюстрации страницы в определенном месте, в то время как весь остальной контент будет перемещаться при прокрутке.
Стоит обратить внимание на пару моментов относительно данного CSS-свойства - оно применяется для фоновых изображений и задает им фиксированное положение относительно окна браузера; на изображение с данным свойством не оказывают влияние CSS-свойство margin, как если бы это было с обычными фоновыми изображениями.
Также необходимо помнить, что данное CSS-свойство прекрасно работает в десктопных версиях браузеров; однако в мобильной версии браузера Chrome оно работает некорректно, а в остальных мобильных браузерах возможно отображение страницы рывками. Поэтому, несмотря на то, что посетители с мобильных устройств будут прекрасно видеть все изображения на странице, сам эффект скроллинга лучше всего смогут оценить пользователи настольных систем.
Основные шаги
Основные шаги, которые нужно выполнить, чтобы получить тот результат, который был на демо-странице, следующие:
Создать элемент-контейнер и наполнить его содержимым
Задать для контейнера (в нашем случае это блок
1
div
) с одной стороны padding, равный 50%-м от ширины контейнера, таким образом сдвинув весь контент в противоположную сторону
Добавить на страницу фоновое изображение шириной, равной 50%-м от ширины контейнера и поместить его на противоположной стороне от контента
Задать для фонового изображения CSS-свойство
1
background-attachment: fixed;
и любоваться результатом!
Давайте шаг за шагом детально разберемся с тем, как все это делается. Для статьи подготовлены исходные материалы, которые вы можете получить по данной ссылке, так что в вашем распоряжении уже будут готовые изображения нужного размера.
1. Основная настройка
Для начала давайте создадим папку проекта и добавим в нее индексный файл
1
index.html
, а также папку
1
css
с вложенным в нее файлом стилей
1
style.css
. Скопируйте и поместите четыре изображения из скачанного архива в папку с именем
1
images
.
Добавьте следующую HTML-разметку в файл
1
index.html
:
Данным действием мы создали основной HTML-каркас страницы, подключили к нему файл CSS-стилей и шрифт Roboto с сервиса Google Fonts. Внутри HTML-каркаса мы создали первый блок-контейнер
1
div
с содержимым, к которому будем применять CSS-свойства.
Блок-контейнер div имеет три класса:
1
.content
- служит для задания CSS-свойств, общих для всех блоков-контейнеров;
1
.right
- задает контейнеру правило для смещения его содержимого вправо (немного позже мы будет создавать контейнеры со смещенным влево контентом);
1
.illustration_01
- создает правило для использования конкретного фонового изображения и для задания фонового цвета блока-контейнера.
Стилизация
Теперь у нас все готово для создания CSS-стилей нашей страницы. Начнем с добавления в файл style.css основных правил сброса стилей и форматирования шрифта:
В этом классе заключена почти вся магия нашего примера. Для текста задаем размер шрифта и цвет. Для фона блока-контейнера задаем свойство
1
background-size: 49% auto;
.
Это означает, что фоновое изображение блока будет всегда растягиваться или сжиматься в своем размере, стремясь заполнить 49% от ширины страницы; высота изображения при этом будет изменяться пропорционально. В нашем примере мы используем значение 49% вместо 50%, потому что браузер Firefox иначе будет отображать артефакт в виде странной линии по середине окна браузера.
Затем мы задаем правило
1
background-attachment: fixed;
, которое, как вы уже знаете из предыдущего описания, заставляет фоновое изображение занимать фиксированное положение относительно окна браузера.
И наконец, мы задаем правило
1
background-repeat: no-repeat;
чтобы наше изображение повторялось только один раз на странице.
Теперь добавим в стили еще один класс
1
.right
:
Этот последний класс помещает текст контейнера в одной половине экрана, а фоновое изображение - в другой половине.
Правило
1
background-position: 0 50%;
задает для фонового изображения нулевую позицию относительно левого края окна браузера и выравнивает его точно по центру по вертикали окна.
Наконец, для класса
1
.illustration_01
добавляем следующее содержимое:
Таким образом задается конкретное изображение и фоновый цвет контейнера.
Проверим нашу страницу - мы должны увидеть следующий результат:
Когда вы будете прокручивать страницу вниз, то увидите, что содержимое этой страницы будет перемещаться, в то время как изображение будет оставаться на своем месте.
Добавляем второй контейнер
Давайте добавим еще один контейнер, в котором содержимое будет смещено влево. Добавьте HTML-контейнер ниже последнего блока
1
div
:
Обратите внимание, что на этот раз мы используем класс
1
.left
вместо класса
1
.right
; также изменяем порядковый номер класса
1
.illustration_01
на
1
.illustration_02
.
Добавляем два новых класса в таблицу стилей:
На этот раз мы добавляем padding, равный 50%, с правой стороны блока-контейнера так, чтобы контент внутри блока смещался влево; фоновое изображение позиционируем по горизонтали на 100% - другими словами, вправо до упора. Также добавляем другой цвет для фоновой заливки блока и меняем файл изображения для фоновой картинки.
Снова проверим результат нашей работы и прокрутим страницу вниз в окне браузера. Когда мы достигнем нижнего края первого блока-контейнера то увидим, как начнет появляться верхний край второго блока, постепенно скрывая при этом первое фоновое изображение и открывая второе:
Добавляем блок-разделитель
Наш пример будет гораздо эффектнее смотреться, если мы добавим блок-разделитель между двумя блоками-контейнерами. Давайте так и поступим.
Между двумя блоками div вставляем следующий HTML-код:
И для него в таблице стилей создаем отдельный класс с несколькими правилами:
Теперь, если обновить нашу страницу-пример, то мы заметим, как между двумя контейнерами появился замечательный блок-разделитель:
Третий и четвертый контейнеры
Пример почти готов и мы можем добавить в него оставшиеся блоки-разделители и блоки-контейнеры. Для этого вставим нижеследующий HTML-код в индексную страницу index.html:
И добавим в таблицу стилей классы для двух оставшихся фоновых изображений:
Теперь потребуется вся ширина монитора для того, чтобы отобразились третий и четвертый блоки-контейнеры:
Прокручиваем страницу до конца и видим последний блок-разделитель:
Делаем страницу адаптивной
Последний штрих, который нам необходимо выполнить - это учесть вариант отображения нашей страницы на экранах устройств с разными размерами. Когда область просмотра страницы становится слишком маленькой для того, чтобы вмешать фоновые изображения, нам необходимо сделать так, чтобы картинки страницы из фоновых становились встраиваемыми (через тег
1
img
).
Для этого в начале каждого из блоков-контейнеров вставим еще один блок
1
figure
с классом
1
.smallscreen
, внутри которого поместим тег
1
img
для вставки тех же самых изображений, которые мы использовали для фона нашей страницы.
Для первого блока-контейнера добавим в его начало:
Второй блок-контейнер будет содержать:
Начало третьего блока-контейнера:
Четвертый контейнер:
Класс
1
.smallscreen
мы будем использовать для того, чтобы по умолчанию скрывать изображения
1
<image src="images/miniblack.png">
, но показывать их, когда размер экрана становиться маленьким.
Для этого добавим в таблицу стилей следующее правило:
И затем добавим медиа-запросы, которые будут отвечать за то, отображать ли на странице изображение как фоновую картинку или же как встроенную (обычную) картинку. Они также будут отвечать за то, чтобы пропорционально уменьшать размер текста страницы и расстояния в разметке таким образом, чтобы ширина страницы точно отвечала различной ширине области просмотра экрана устройств.
Для этого добавим медиа-запросы в таблицу стилей:
В приведенном выше коде первые четыре медиа-запроса просто уменьшают размер теста страницы и padding внутри блоков-контейнеров таким образом, чтобы ширина страницы соответсвовала ширине экрана.
В пятом медиа-запросе с правилом
1
max-width: 50rem
мы включаем код, который делает класс
1
.smallscreen
видимым, удаляет 50%-ый padding у содержимого блока-контейнера и скрывает фоновое изображение на странице. Когда медиа-запрос “обнаруживает”, что большое фоновое изоражение больше не вписывается в размер окна, он заменяет фоновое изображение на обычное, которое помещается в начале контента блока-контейнера.
Теперь после обновления уменьшаем страницу и в результате получаем плавно изменяемую ширину, которая подстаивается под различные размеры областей просмотра, до тех пор, пока размер не станет самым маленьким:
Заключение
Даже после многих лет работы с CSS я не устаю удивляться все увеличивающемуся количеству потрясающих вещей, которые можно сделать с помощью CSS. И чем проще прием, тем более впечатляющий получается результат.
Попробуйте сами создать описанный выше прием - это быстро и легко и должно вам понравиться!
Краткий обзор плагина jQuery Mask Plugin, упоминание о котором я нашел на Google+.
Этот плагин понравился мне простотой установки и настройки. Работа плагина jQuery Mask Plugin заключается в том, чтобы форматировать вводимые пользователем в полях данных и приводить их к виду, заданному соответствующей маской в коде.
Помимо этого, плагин jQuery Mask Plugin производит фильтрацию данных и не позволяет пользователю вводить недопустимое количество данных и данных другого формата.
В общем, весьма полезный и удобный плагин, который можно положить в копилку веб-разработчика “на всякий случай”. Наверняка такой может пригодиться при случае. Поэтому приступаю к установке и настройке плагина jQuery Mask Plugin.
Подключение jQuery Mask Plugin
Плагин jQuery Mask Plugin “живет” по этому адресу - jQuery Mask Plugin, где дано подробное описание работы этого скрипта. На этой странице дано краткое описание установки и настройки плагина “от автора” Igor Escobar - Masks With Jquery Mask Plugin.
Подключение скрипта в рабочем проекте производится стандартно для всех плагинов, созданных под библиотеку jQuery. Сначала производится подключение самой библиотеки jQuery, а затем скрипта jQuery Mask Plugin:
Плагин совместим со всеми версиями библиотеки jQuery. Более того, в архиве с исходниками находятся тестовые HTML-странички, с помощью которых можно проверить все возможности работы скрипта под конкретную библиотеку jQuery, конкретный браузер и конкретную ОС:
Создание разметки под jQuery Mask Plugin
Для примера работы с плагином jQuery Mask Plugin создаю тестовую разметку с несколькими полями ввода:
Как видно из примера выше, каждое поле предназначено для ввода определенной информации пользователем, будь то дата, время, проценты, номер телефона или денежная сумма. В принципе, больше ничего сказать по поводу HTML нечего. Самое интересное будет в настройке скрипта.
Расширенный пример с возможными вариантами масок можно посмотреть на странице примера - Basic Usage Examples. На ней также показаны примеры расширенной настройки плагина jQuery Mask Plugin.
Инициализация плагина jQuery Mask Plugin
Создаю еще один js-файл, в котором будет производиться инициализация скрипта и заданы маски для каждого из полей ввода. Файл будет иметь произвольное имя
1
masks.js
и в нем будет такое содержимое:
Видно, что из DOM-модели производится выборка элементов с указанными классами, к которым применяется функция
1
mask
с указанием в каждом конкретном случае маски. Ничего сложного в представленных масках нет, достаточно внимательно их изучить.
Открываю в браузере созданный мною HTML-файл и вижу форму с полями ввода:
Тестирование плагина jQuery Mask Plugin
Давайте попробуем ввести в созданные на примере поля данные. При вводе в каждом из полей хорошо видно, как данные приводятся именно к тому виду, который задан маской в js-коде. Более того, плагин не позволит ввести данные другого формата, то есть будет производиться фильтрация данных:
В поле ввода номера телефона маска создана мною произвольно, буквально на лету. Этот факт говорит о том, что создание масок в плагине jQuery Mask Plugin - дело очень простое и легкое.
На этом обзор плагина jQuery Mask Plugin можно завершить.
Большинство современных веб-сайтов используют CSS-сетку для визуальной организации контента в строки и столбцы.
И почти любой из современных front-end фреймворков имеют в своем составе полноценную систему CSS-сеток. Если читатель немного знаком с фреймворками, то система CSS-сеток в Zurb Foundation 5 должна почти полностью отвечать его потребностям. В пользу изучения CSS-сеток в фреймворке можно сказать, что она значительно снижает объем кода, который бы иначе потребовалось написать вручную.
Первым шагом при создании разметки под Foundation нужно скачать файл архива данного фреймворка и включить его в свой собственный проект. Если вы новичек в этом деле, то я рекомендую вам Getting Started With Foundation CSS; однако, помимо этого вы можете пойти по пути Getting Started With Sass или же Applications.
Основы CSS-сетки Foundation
Фреймворк Foundation создает на HTML-странице строки и столбцы с помощью соответствующих CSS-классов, которые применяются к HTML-элементам. Идея сама по себе проста, однако стоит обратить внимание на тот факт, Foundation прежде всего является адаптивным фреймворком, который ориентирован на мобильные устройства в первую очередь. Это означает, что Foundation был создан для работы на мобильных устройствах, планшетах и на устройствах большего размера, таких как ноутбуки и десктопы - именно в таком порядке.
При создании веб-сайтов под фреймворком Foundation наиболее правильным будет подход, ориентированный на мобильные устройства, в первую очередь. И только потом нужно плавно дорабатывать дизайн сайта так, чтобы он также хорошо смотрелся на на десктопных размерах устройств. Это может показаться нелогичным, но это наиболее правильный подход при работе с Foundation. Многоколоночная разметка плохо работает на мобильных браузерах, потому что мобильные устройства, как правило, имеют экран, у которого высота больше, чем ширина. Впихивание большой разметки в маленький экран - задача гораздо более трудная, нежели создание простой разметки под мобильный экран; а затем постепенное усложенение разметки под большие мониторы.
Шаблон CSS-сетки
Прежде чем описывать CSS-классы для создания сетки, я бы хотел показать вам HTML-шаблон на сайте Zurb:
CSS-сетка в фреймворке Foundation состоит из 12 колонок. По горизонтали страница разбивается на строки (row). Таким образом, колонки помещаются внутрь каждой из строк. Каждая группа колонок внутри строки row в сумме составляет 12, однако существуют дополнительные возможности для того, чтобы обойти это правило.
В приведенном выше HTML-шаблоне секция заголовка
1
header
является строкой. Внутри этой строки помещен блок div для логотипа и блок div для навигации. Блок-логотип имеет класс
1
large-3
, что означает, что данный блок должен в сумме занимать три колонки по ширине. Блок навигации имеет класс
1
large-9
, что заставляет этот блок в сумме занимать ширину девяти колонок. Оба класса
1
large-3
и
1
large-9
в сумме составляют 12 колонок (3 + 9 = 12) и полностью занимают всю ширину блока
1
header
.
Следующее, большое изображение по центру страницы также является строкой row, внутри которой расположена одна единственная колонка. Эта колонка имеет класс
1
large-12
, чтобы занимать ширину всех 12 колонок CSS-сетки в целом. Остальная часть этой страницы-примера построена по такому же принципу, используя строки
1
row
и колонки
1
columns
. на картинке ниже мною были добавлены оранжевые границы к блокам-колонкам для того, чтобы визуально облегчить понимание того, как была построена эта страница:
Если взглянуть на исходный код данной страницы-примера, то можно увидеть достаточно много кода, большая часть из которого не имеет отношения к созданию CSS-сетки на этой странице. Мною специально было произведено упрощение кода данного шаблона, чтобы оставить только те классы и элементы, которые создают CSS-сетку этой страницы. Изучите представленный мною ниже код с тем, чтобы затем перейти к более детальному описанию каждого из CSS-классов:
Классы CSS-сетки Foundation
Существует пять основных классов CSS-сетки, которые следует запомнить при работе в фреймворке Foundation 5:
1
row
- класс
1
.row
служит контейнером для вертикальных блоков-колонок; ни для каких других целей он не предназначен. При добавлении контента в HTML-страницу каждая новая строка занимает всю ее ширину. Например, такие блоки, как “шапка” сайта и его “подвал” обязаны иметь класс
1
row
с вложенными в него колонками.
1
columns
- внутри каждой строки любому HTML-элементу можно добавить класс
1
columns
для того, чтобы он смог занимать определенную часть от общей ширины в 12 колонок. Для удобства, можно использовать как класс
1
columns
, так и класс
1
column
- результат будет одинаковым. Каждый элемент, которому присвоен класс
1
columns
или
1
column
обязан иметь еще один класс, который определяет ширину этого элемента.
1
small-#
- фреймворк Foundation имеет в своем составе несколько CSS-классов, которые устанавливают адаптивную ширину колонки; каждый из таких классов имеет число, обозначающее, сколько именно колонок следует занимать для данного класса. Например, элемент с классом
1
small-4
будет занимать ширину четырех колонок. Если не указан никакой другой адаптивный размер, такой как
1
medium-#
или
1
large-#
, то указанные в этом классе CSS-правила унаследуются и для больших размеров экранов.
1
medium-#
- этот класс впервые был введен в Foundation 5 и он предназначен для экранов планшетных компьютеров. Если в коде HTML-элемент имеет как класс
1
small-#
, так и класс
1
medium-#
, то маленькие размеры колонок будут использоваться для показа на мобильных устройствах; средние размеры колонок будут использоваться на экранах планшетных компьютеров и десктопных также. Например, у вас в коде HTML-элемент может иметь одновременно класс
1
small-4
и класс
1
medium-8
, если необходимо, чтобы этот элемент занимал ширину четырех колонок на экране мобильного телефона, но увеличивал свой размер до восьми колонок на экране планшетного компьютера.
1
large-#
- как вы уже могли догадаться, класс
1
large-#
предназначен для создания колонок под экраны ноутбуков или десктопов. Однако, если для HTML-элемента будет задан только один класс для больших мониторов, без указания классов для средних и маленьких размеров экранов, то в результате разметка будет изменять свой вид и превращаться в одноколоночную при изменении размеров экрана. Это очень полезно в том случае, если разметка является многоколоночной для десктопного монитора, а для планшетного или мобильного - одноколоночной. В рассмотренном выше шаблоне-примере вы могли заметить, что все HTML-элементы имеют только один класс
1
large-#
; этот шаблон превращается в одноколоночный при меньший размерах экрана, потому что для элементов не заданы классы
1
small-#
и
1
medium-#
.
Рассказанное выше звучит довольно запутанно, но на самом деле все просто. Если необходимо создать двухколоночную разметку сайта, которая будет превращаться в одноколоночную на экранах мобильных телефонов, необходимо поступить таким образом:
Представленная выше разметка создана для больших мониторов и имеет ассиметричную ширину (один блок шире другого). Для средних и маленьких экранов нужно создать ширину, занимающую ровно половину экрана (оба блока имеют равную ширину). Для этого каждому элементу нужно добавить класс
1
small-6
:
Именно класс
1
small-6
заставляет оба блока быть равными по ширине. Эти классы переопределяют значения классов
1
large-8
и
1
large-4
.
Дополнительные возможности CSS-сетки
Как и следовало ожидать, у CSS-сетки фреймворка Foundation имеется гораздо больше возможностей, чем было описано выше. Данная статья имеет целью описать только ее основные возможности, но если вы хотите узнать больше, почитайте эту документацию - [Getting Started][8].
Вложенность в CSS-сетке
В CSS-сетке фреймворка Foundation имеется возможность вкладывать строки внутрь колонок. Такой прием называется “вложенность” и с ним нужно быть достаточно осторожным на практике, так как можно легко запутаться при написании кода:
Центрирование колонок в Foundation
В некоторых случаях может потребоваться создать HTML-элемент, который не должен занимать все 12 колонок сетки, но, тем не менее, этот элемент должен располагаться точно по центру. К примеру, может потребоваться добавить в “подвал” сайта изображение, которое по ширине немного уже, чем весь элемент
1
footer
в целом. Класс
1
small-centered
поместит маленький элемент точно по центру внутри его строки-контейнера. Если необходимо, чтобы элемент располагался по центру только для больших экранов, то к нему необходимо применить класс
1
large-centered
:
Смещение в CSS-сетке Foundation
Аналогично ситуации с центрированием колонок в CSS-сетке фреймворка Foundation, возможна ситуация, когда необходимо создать HTML-элемент небольшого размера, который не должен занимать всю ширину своего блока-родителя, но должен быть смещен таким образом, чтобы иметь некоторое пространство слева от себя. И при этом занимать всю оставшуюся ширину блока-родителя.
В этих случаях можно использовать классы смещения (offset), например, такой -
1
large-offset-3
. Такой класс заставит элемент сместиться вправо на указанную ширину. Также, как и с классами колонок, здесь есть варианты смешения для маленьких экранов (
1
small-offset-#
), средних экранов (
1
medium-offset-#
), маленьких экранов (
1
small-offset-#
):
Незавершенные строки в Foundation
Возможность смещения колонок в Foundation - это прекрасная вещь. Но что, если необходимо оставить пустое пространство справа элемента, а не слева? Вообще-то, в случае, когда сумма всех столбцов в строке не равняется 12, фреймворк Foundation перемещает последующий элемент право так, чтобы заполнить пустое пространство.
Такой подход позволяет решить некоторые проблемы, связанные с кросс-браузерностью, но если необходимо отменить такое поведение фреймворка, то просто добавьте класс
1
end
к последнему элементу, чтобы заставить его смещаться влево (
1
float: left
):
Порядок следования
При создании HTML-страниц с помощью строк row и колонок columns имеется уникальная возможность расположить элементы внутри этих страниц совсем не в том порядке, в каком они располагаются в браузере. Например, у вас имеется двухколоночная HTML-разметка, в которой есть левый боковой блок и блок с основным содержимым.
Исходя из вопросов удобства пользованием сайтом и аспектов SEO, необходимо сделать так, чтобы блок с основным содержимым размещался первым в HTML-странице; но при этом в окне браузера визуально боковой блок должен находиться перед блоком с контентом.
Два блока могут поменяться своими местами друг с другом используя такую возможность в фреймворке Foundation. Используя классы типа
1
large-pull-3
и
1
large-pull-9
можно изменить местоположение элементов (или группы элементов):
И еще …
Данная статья является всего лишь введением в систему CSS-сеток фреймворка Foundation; но в нем есть еще много тем для изучения, таких как стилизация форм, модули и типографика. Обо всем этом вы можете почитать в главе Getting Started.
Обзор установки слайдера slick под библиотеку jQuery. Данный плагин занимает одно из наиболее высоких мест в рейтинге плагинов для создания слайдшоу - slick - jQuery.
Наверное, это место он получил заслуженно, поэтому стоит с ним разобраться и положить в свою копилочку веб-разработчика. Домашняя страничка плагина с описание установки и различных примеров работы находится здесь - slick Demos. Плагин мне понравился всем - он имеет в своем составе все функции управления, легок и прост в установке, HTML-разметка для его создания проста и семантична. В комплекте плагин slick имеет полный набор настроек, которые легко подключить в файле конфигурации.
Подключение плагина slick
Процесс подключения плагина slick в рабочем проекте очень прост, только нужно соблюдать правильность выполнения шагов.
Создание разметки под slick
HTML-разметка под плагин slick семантична и проста. Достаточно создать список с произвольным именем класса. В руководстве Getting Started на официальной странице плагина slick приводится такой пример HTML-разметки:
Моя попытка создать слайдер на основе HTML-разметки в виде обычного маркированного списка:
… успеха не принесла - плагин slick не заработал! Возможно, стоит через CSS-стили преобразовать элементы
1
ul
,
1
li
в блочные и тогда все заработает? Однако, это дополнительные действия, без которых можно обойтись и поступить так, как описано в официальной документации.
Получение файла плагина slick
Следующим шагом будет получение архива плагина slick. Это можно сделать несколькими способами. Первый - это скачать его со страницы Go Get It. Или же перейти на страницу GitHub автора и забрать оттуда zip-архив плагина - slick GitHub. В обоих случаях получим архив с именем
1
slick-master.zip
, который нужно распаковать. И разархивированной папки нам необходима только одна папка, которая находиться внутри - slick. Переносим ее в свой проект целиком, как есть.
Как видим, в первых двух строках производится скачивание библиотеки jQuery-1.11.0 и плагина jQuery Migrate 1.2.1 через CDN. Третий плагин
1
slick.min.js
- сам скрипт slick, который подключается локально, из распакованной и перемещенной в проект папки slick.
Инициализация плагина slick
Перед закрывающим тегом
1
</body>
подключаем скрипт инициализации плагина:
Итоговая HTML-разметка и подключение CSS-таблиц, JS-скриптов будет выглядеть таким образом:
Консоль браузера Google Chrome
Мне хочется упомянуть о такой полезной вещи, как консоль браузера Google Chrome. Почему она полезная? Потому что она уже второй раз выручает меня (первый раз это было с плагином jqFancyTransitions - Слайдер jqFancyTransitions) и помогает найти ошибки при подключении скриптов в HTML-документе. Незаменимая штука!
Чтобы проиллюстрировать пример использования и полезности консоли Chrome, запускаю в браузере индексный index.html файл, который создал ранее.
И что?! Позвольте, а где-же плагин slick - где слайдер, созданный с его помощью? Где те обещанные красоты, которые так ярко продемонстрированы на официальной странице проекта - Demos?! Странно - но их нет!
Хех, а я правильно выполнил подключение скрипта? Ну-ка, еще раз “пробегусь” по документации… Все верно, но у меня ничего не работает… Может, все-же переписать индексную страницу заново? Может быть, но таких “а может” наберется большое количество, с различными вариациями…
Но давайте я открою консоль браузера Google Chrome и перейду в ней на вкладку “Network”:
Вот и причина того, что плагин slick не работает на моей странице! Просто библиотеку jQuery 1.11.0 и ее плагин jQuery Migrate 1.2.1 браузеру Chrome не удалось подгрузить через CDN. Сколько бы я еще потратил времени и нервов, чтобы методом “научного тыка” определить причину “поломки”, если бы не эта консоль, неизвестно.
Разбираться, почему не удалось браузеру подгрузить оба этих файла через CDN, у меня нет ни желания, ни времени. Поэтому я просто скачаю оба этих файла “вручную” и подключу локально:
Снова запускаю индексную страницу index.html в браузере Google Chrome и … о Чудо! Плагин slick работает:
Картинки прокручиваются автоматически и внизу видна пагинация, сгенерированная скриптом slick согласно настройкам:
… в конфигурационном файле. Помимо этого, были сгенерированы стрелки для перемотки изображений “вручную” взад-вперед (они не видны на белом фоне HTML-страницы). Другие многочисленные настройки плагина slick можно посмотреть на официальной странице - Settings.
Кстати, стоит отметить, что автор плагина slick настоятельно рекомендует выносить настройки плагина в отдельный внешний js-файл, вместо того, чтобы вставлять скрипт непосредственно в HTML-документ:
NOTE: I highly recommend putting your initialization script in an external JS file.
В этой статье я так не поступил по одной простой причине - ради наглядности примера и быстроты его создания.
Редактирование плагина slick
Теперь осталось дело за малым - вооружившись инспектором элементов страницы (к примеру, Firebug), “вытащим” из DOM-дерева нашей страницы имена классов нужных нам элементов и произведем их легкое редактирование через CSS-правила:
Создаю для тела HTML-документа
1
body
легкую заливку. Для блока со слайдером
1
.slider
добавлю padding, границу со скруглением и фоновую заливку; отцентрирую его на странице и немного опущу вниз. А также немного приподниму вверх блок
1
.slick-dots
с пагинацией.
Смотрим результат:
Заключение
Плагин slick мне однозначно понравился. Простая установка и подключение, генерирование элементов управления показом слайдшоу, большое количество разнообразных настроек. С разнообразными вариантами настройки внешнего вида можно и нужно разобраться на странице примеров - Demos. И подогнать под необходимые конкретные условия, если потребуется.