Это
не означает, однако, что нужно всегда прибегать к такому разнообразию. На
практике в большинстве случаев бывает достаточно ограничиться одним из
возможных способов. Возникает, однако, резонный вопрос— каким же
именно?
С точки зрения наиболее полной реализации принципа разделения
содержания и представления предпочтительны, разумеется, внешние листы стилей.
Только в этом случае один лист стилей сможет распространять свое влияние
на множество документов.
Если для всех страниц сайта используется единый внешний лист стилей, это
позволяет заметно сократить время загрузки страниц, поскольку обычно файл
стилей, единожды загрузившись, кэшируется браузером, не требуя повторной
передачи с каждым вновь открываемым HTML-документом.
Но, к сожалению, у внешних листов стилей есть недостаток — в некоторых
случаях, например, из-за плохой связи, бывает, что CSS-файлы не
загружаются, а это, в свою очередь, приводит к тому, что страница отображается
совсем не так, как задумывал ее создатель. Кроме того, при сохранении
пользователем веб-страницы в режиме «только HTML» сопутствующий CSS-файл
не сохраняется, что приводит к аналогичному результату.
Внутренние листы стилей свободны от этого недостатка, но они не обладают
главным преимуществом внешних листов стилей — способностью в полной
Глава 3. Оформление веб-страниц с использованием каскадных листов стилей 129
мере реализовать принцип разделения содержания и представления на уровне
конечного кода веб-страниц, возможностью управлять представлением
множества документов посредством модификации единственного файла.
Разумеется, это ограничение можно легко обойти, формируя веб-страницы
динамически на стороне сервера — при таком раскладе лист стилей в любом
случае будет физически храниться в единственном экземпляре вне
зависимости от того, каким способом он будет связан с HTML-кодом страницы.
Тем не менее, внедренные в HTML-код листы стилей увеличивают объем
веб-страниц, а с этим недостатком бороться уже никак нельзя.
К тому же, применение динамических технологий стороны сервера на
каждом шагу не всегда оправдано. Их использование порождает существенную
нагрузку на сервер, что, естественно, не лучшим образом сказывается на
времени отклика и продолжительности загрузки страниц. Кроме того, серверные
приложения зачастую таят в себе угрозы безопасности — в соответствующей
литературе описаны десятки способов атак на веб-сервер с использованием
уязвимостей, свойственных, например, скриптам, написанным на языке Perl.
Динамические технологии, при всех своих достоинствах, не смогут
сравниться со «статикой» по скорости обработки клиентских запросов и по
надежности.
Так или иначе, при выборе способа связи листов стилей с веб-страницами
нужно руководствоваться, прежде всего, соображениями здравого смысла.
Лист стилей, состоящий из 5—10 коротких правил, как мне представляется,
можно безболезненно внедрить в код веб-страницы при помощи тега ,
но вот «простыню» размером в пару десятков килобайт (а такие в настоящее
время не редкость) лучше уж оформить в виде отдельного файла…
Что касается способа связи внешнего листа стилей с веб-страницей, тег
является более универсальным средством, нежели директива @import,
которую не понимают многие устаревшие на сегодняшний день браузеры, не
поддерживающие CSS2 в полноте, например, Netscape Navigator 4.x. В то же
время, директива @ import может оказаться полезной как раз для того, чтобы
скрыть от подобных пользовательских агентов те правила, которые могут
быть ими неверно истолкованы.
От местных объявлений стилей, определяемых в значениях атрибутов style,
лучше вообще воздерживаться — они, как вы понимаете, препятствуют
«настоящему» разделению содержания и представления. Требуемого результата
всегда можно добиться, не применяя местные объявления, а используя вместо
этого «хитрые» селекторы в общем листе стилей.
Тем не менее локальные объявления стилей вполне уместны, например, для
указания линейных размеров графических изображений на странице,
особенно если размеры каждой картинки строго индивидуальны.
130
Часть I.
5th Фев 2011
|
Теги:
|