Чтение онлайн

ЖАНРЫ

Отзывчивый веб-дизайн
Шрифт:

Но это не решает проблему накладывания слайдов один на другой. И здесь мы немного схитрим: мы уберем со страницы все слайды, кроме одного, и переместим их в отдельный HTML-файл. Теперь основа нашей страницы выглядит значительно легче:

<div class="slides">

<div class="figure">

<b><img src="img/slide-robot.jpg" alt="" /></b>

<div class="figcaption">…</div>

</div><!– /end.figure – >

</div><!– /end.slides – >

Но

мы создали отдельный файл (давайте назовем его
slides.html
) и вставили в него разметку для четырех оставшихся слайдов.

<div class="figure">

<b><img src="img/slide-tin.jpg" alt="" /></b>

<div class="figcaption">…</div>

</div><!– /end.figure – >

<div class="figure">

<b><img src="img/slide-statue.jpg" alt="" /></b>

<div class="figcaption">…</div>

</div><!– /end.figure – >

Вы, вероятно, заметили, что

slides.html
– это даже не полноценный HTML-документ. Это на самом деле отрывок, мини-документ, в котором мы можем сохранить часть HTML-кода и использовать его позже. Фактически мы воспользуемся jQuery, чтобы открыть
slides.html
и загрузить изображения в слайд-шоу:

$(document). ready(function {

$.get("slides.html", function(data) {

var sNav = [

‘<ul class="slide-nav">’,

‘<li><a class="prev" href="#">Previous</a></li>’,

‘<li><a class="next" href="#">Next</a></li>’, ‘</ul>’

].join("");

$(".welcome.slides")

.append(data). wrapInner(‘<div class="slidewrap"><div id="welcome-slides" class="slider"></div></div>’)

.find(".slidewrap")

.append(sNav)

.carousel({

slide: ‘.figure’

});

});

});

На этом ставим точку. Функция jQuery

.get
открывает наш HTML-отрывок (
slides.html
) и вставляет его содержание в модуль при помощи
append
. Если JavaScript недоступен или если jQuery не может загрузить этот файл, то пользователь увидит одну картинку в верхней части страницы: абсолютно приемлемый вариант для нашего дизайна (рис. 5.19).

Рис. 5.19. Нет JavaScript? Никаких проблем. Слайд-шоу сокращается до размеров одной картинки, которая все равно отлично выглядит

Дальнейшие улучшения

Наш простой скрипт пополнился кодом, но конечный результат выглядит более надежно и функционально. Мы не принимаем во внимание возможности браузера или устройства, отображающего нашу страницу: если JavaScript доступен, на экране

появится слайд-шоу.

Но нет предела совершенству, и этот небольшой черновой образец – не исключение. Например, мы могли бы сделать так, чтобы слайд-шоу появлялось только на определенных типах экранов, то есть указать в скрипте определенные диапазоны разрешений. Так, если мы не хотим, чтобы оно отображалось на устройствах с маленькими экранами, мы могли бы вставить в скрипт простую проверку разрешения:

if (screen.width > 480) {)

$(document). ready(function({ … });

}

Этот оператор

if
выполняет те же функции, что медиазапрос
min-width: 480px
: если экран уже
480px
, вложенный JavaScript не будет применяться (рис. 5.20).

Рис. 5.20. Мы решили, что слайд-шоу станет доступным только для браузеров с разрешением свыше 480px. На более мелких экранах будет видна одна-единственная картинка

Пойдем еще дальше. Например, мы можем использовать легковесный JavaScript-загрузчик LabJS или Head JS для динамической загрузки jQuery, плагина «карусель» и нашего собственного

custom.js
для применения только в том случае, когда разрешение экрана достигает определенных значений. Благодаря этому пользователи устройств с маленькими экранами не окажутся заваленными лишним JavaScript, особенно если это препятствует загрузке «карусели». А поскольку мы учитываем пропускную способность канала, мы можем использовать фантастическую библиотеку «отзывчивых изображений», написанную Filament Group . На устройства с маленькими экранами она выдает более легкие картинки, а на обычные, широкоэкранные – полноразмерные.

Вперед! Будь отзывчивым!

Я упомянул эти расширения совсем не потому, что это единственный правильный и нужный подход. В век портативных точек доступа с 3G и телефонов, оснащенных Wi-Fi, мы не можем на основании размеров экрана делать вывод о пропускной способности устройств. Но при необходимости вы всегда сможете использовать эти расширения.

И все же я считаю, что решать связанные с функциональностью проблемы необходимо с точки зрения философии «сначала мобильные». Если я не подпускаю к хитрому интерфейсу мобильных пользователей, то какой от него прок для моей остальной аудитории? Если вы думаете, что это некорректный вопрос, знайте: легких ответов здесь нет.

Дело в том, что для успеха в веб-дизайне необходимо уметь задавать правильные вопросы. Отзывчивый веб-дизайн – это возможное решение, способ сделать дизайн более приспособленным к врожденной гибкости Сети. В первой главе я говорил, что отзывчивый дизайн состоит из «резиновой» сетки, гибких изображений и медиазапросов. Но на самом деле это всего лишь слова, которые мы используем, чтобы озвучить решения проблем, с которыми сталкиваются пользователи, описать рамки для упорядочивания контента в постоянно увеличивающемся море устройств и браузеров.

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

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

Благодарности

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

Поделиться с друзьями: