Отзывчивый веб-дизайн
Шрифт:
Загружаем эту огромную картинку на сервер, обновляем страницу – и что мы видим? Отвратительно. Хуже не придумаешь (рис. 3.2).
Рис. 3.1. Вполне подходящее изображение робота, использованное с любезного согласия Джереми Ноубла
Рис. 3.2. Огромное изображение – огромные проблемы
Вообще-то удивляться тут нечему. Макет в принципе в порядке – гибкий контейнер работает как надо, а пропорции колонок остались неизменными. Но из-за того, что изображение шире, чем модуль. figure, то, что не поместилось, попросту вылезло за его пределы. Мы не применили к изображению никаких ограничений, которые бы сочетали его с гибким окружением.
Гибкие изображения
А что если ввести такое ограничение: написать правило, которое не позволит картинкам выходить за ширину их контейнера?
У меня для вас хорошие новости: сделать это проще простого:
Правило, открытое дизайнером Ричардом Раттером , накладывает на любое изображение в документе одно невероятно удобное ограничение. Теперь ширина элемента
Рис. 3.3. За счет добавления max-width: 100 % мы смогли удержать наше изображение в рамках контейнера. Вот за что я люблю max-width: 100 %
Рис. 3.4. Вне зависимости от изменения размеров гибкого контейнера изображение остается пропорциональным. Волшебство? Кто знает…
Более того, современные браузеры умеют пропорционально менять размеры картинок. Если гибкий контейнер будет менять свои размеры, уменьшая или увеличивая изображение, соотношение сторон картинки останется неизменным (рис. 3.4).
Я надеюсь, вы еще не устали от хороших новостей, поскольку, как оказалось, правило
Это может быть небольшое флеш-видео (рис. 3.5), встроенный медиафайл или скромное изображение – браузеры все сделают сами и поменяют размеры соответственно макету. И все благодаря этому чудесному ограничению
Так что же получается, мы действительно решили проблему гибких изображений? Одно правило – и все готово?
Рис. 3.5. С параметром max-width: 100 % гибкими становятся и другие элементы медиа. Я уже говорил, что люблю max-width: 100 %?
Если бы все было так просто…
Теперь займемся неприятными вещами и поговорим о некоторых особенностях браузеров по отношению к гибким изображениям.
Max-width в Internet Explorer
Суровая правда заключается в том, что Internet Explorer 6 и ниже не поддерживают свойство
Существует несколько путей заставить свойство
Что касается меня, я все-таки предпочитаю более простой CSS-подход. Все современные браузеры поддерживают свойство
Но в отдельной таблице стилей для IE6 я бы сделал так:
Заметили разницу? В IE6 и ниже правило
Вот здесь внимание: это совершенно разные правила. Если
В большинстве случаев этот прием работает отлично. Например, наша чрезмерно большая картинка
Что касается более мелких изображений, например миниатюр или большинства встроенных роликов, их не всегда можно слепо масштабировать при помощи CSS. В этом случае для IE лучше сделать так:
Если вы не хотите на вашей странице применять правило
Таким образом, если вы все еще работаете с морально устаревшими версиями Internet Explorer, внимательно применяйте это правило, и все получится. Эту проблему мы решили, переходим к следующей.
И это что-то.
…И здесь становится понятно, что Windows нас ненавидит
Если вы посмотрите на модуль блога в каком-нибудь браузере на базе Windows, наша картинка
Рис. 3.6. При просмотре в IE6 можно заметить, что наше изображение робота содержит некоторые нежелательные артефакты. Судя по всему, Windows не особенно пригоден для гибких изображений
И это проблема не браузера, а платформы: Windows не очень правильно определяет масштаб изображений. В Windows изображения, размеры которых изменены средствами CSS, быстро «обрастают» различными артефактами, что крайне плохо сказывается на их качестве.