2003-03-30 19:01:59 UTC
Надеюсь вы в курсе, что существует 2 места для размещения каскадных таблиц стилей (CSS) :
- Внутри HTML документа в тегах
<style>
или в атрибутахstyle
— внутренние таблицы стилей - Во внешнем файле подключаемом к нужному документу, либо с использованием тега
<link>
в заголовке, либо с использованием директивы@import
в любом из тегов<style>
HTML документа — внешние таблицы стилей.
Каждый из этих способов имеет свои достоинства и недостатки. Обсудим это. Начну пожалуй, с внутренних таблиц.
Из достоинств имеем:
- Здесь просто невозможна ситуация, когда страница неверно отображается по причине отсутствия/незагрузки нужного внешего файла с таблицами стилей. Увы, такое иногда бывает при использовании внешних стилей.
- Возможность рулить таблицами при помощи, например парсера, php, asp ну или ещё какой другой технологии, о которой мне ничего не известно. Например, можно динамически(при формировании страницы) создавать нужную таблицу стилей, в зависимости от некоторых условий.
- Возможность некоторой оптимизации размера таблиц стилей при помощи опять таки парсера, php, asp ну или ещё какой другой технологии, о которой мне ничего не известно. Понятно, что нормальный человек не станет писать код, экономя на табуляторах, пробелах и переводах строк, по причине оптимизации размера кода (я имею ввиду CSS) или ещё более клинический случай — писать код в одну строчку (самый, кстати, оптимальный вариант с точки зрения размера). Нормальный человек будет руководствоваться удобством восприятия и легкости чтения кода. Следовательно, размер файла в этом случае, будет далеко не самым оптимальным и в случае с внутренними таблицами стилей можно убрать ненужные пробельные символы.
На этом реальные достоинства заканчиваются, и начинаются недостатки:
- Разные сущности всегда плохо смешивать вместе — в данном случае HTML и CSS (а если используется XSLT, то ещё и это). Спагетти код ужасно трудно поддерживать, в случае если он достаточно объёмен. Абстракции хороши, когда они работают достаточно независимо и имеют точки соприкосновения через как можно более узкий интерфейс.
- Такие таблицы стилей очень трудно, а часто и невозможно, создавать и поддерживать с помощью специализированных средств, например, с помощью широко известного редактора TopStyle. Согласитесь, что гораздо удобнее иметь подсветку синтаксиса, редактор с проверкой правильности таблиц в зависимости от выбранного стандарта, AutoComplete функцию (это избавляет от держания в голове синтаксиса сотен конструкций) ну и других полезных функций.
- Если HTML пишется руками (без использования динамических технологий) и в разных документах нужно иметь одинаковое оформление, приходится использовать старинный народный метод copy/paste, который весьма хорош, если вы являетесь поклонником товарища Сухова и любите помучитсья.
Теперь о внешних таблицах стилей. Начнём с достоинств:
- Здесь сущности разделены и CSS не переплетена ни с каким другим кодом, что существенно упрощает поддержку и совместную работу(разработку).
- Возможность разработки таблиц стилей с помощью специализированных инструментов, существенно повышающих скорость работы, избавляющих от ненужных умственных усилий и в итоге, уменьшающих количество ошибок в коде.
- Возможность кэширования таблиц стилей, в случае если страница формируется динамически, например в случае с форума или чата.
- Если данный стиль нужен в разных документах, в них просто подключается нужный файл и никакого copy/paste. Разумеется это верно в случае неиспользования динамических технологий. В случае динамических технологий, просто слегка снижается нагрузка на сервер и уменьшается использование памяти.
Ну и напоследок, — о недостатках внешних таблиц стилей:
- Возможно неправильное отображение страницы если не загрузился нужный файл с таблицей. Такое частенько бывает в случае хреновой связи с Интернетом или в случае перегрузки веб-сервера — известно, что если сервер перегружен, то часто не грузятся нужные картинки, таблицы стилей и пр.
- Код написанный человеком не всегда оптимален с точки зрения размера (особенно если у вас CSS размером килобайт эдак 50).
- Невозможность руления таблицами стилей с помощью разных динамических технологий, что часто, приводит к дублированию одних и тех же данных, например если один и тот же цвет нужен в нескольких местах, его придется писать несколько раз и в случае изменения либо использовать функцию поиска и замены вашего любимого редактора, либо, если вы извращенец, ползать по всем таблицам и руками вносить изменения. Эх если бы в CSS были переменные.
- Возросшая важность проектирования таблиц стилей, что увеличивает время и сложность создания сайта.
Для меня, достоинства внешних таблиц стилей, перевесили их недостатки и достоинства внутренних таблиц, поэтому, совсем недавно, я перешел на использование внешних таблиц стилей, о чём пока не жалею.