2003-03-30 19:01:59 UTC

Надеюсь вы в курсе, что существует 2 места для размещения каскадных таблиц стилей (CSS) :

  1. Внутри HTML документа в тегах <style> или в атрибутах style — внутренние таблицы стилей
  2. Во внешнем файле подключаемом к нужному документу, либо с использованием тега <link> в заголовке, либо с использованием директивы @import в любом из тегов <style> HTML документа — внешние таблицы стилей.

Каждый из этих способов имеет свои достоинства и недостатки. Обсудим это. Начну пожалуй, с внутренних таблиц.

Из достоинств имеем:

  1. Здесь просто невозможна ситуация, когда страница неверно отображается по причине отсутствия/незагрузки нужного внешего файла с таблицами стилей. Увы, такое иногда бывает при использовании внешних стилей.
  2. Возможность рулить таблицами при помощи, например парсера, php, asp ну или ещё какой другой технологии, о которой мне ничего не известно. Например, можно динамически(при формировании страницы) создавать нужную таблицу стилей, в зависимости от некоторых условий.
  3. Возможность некоторой оптимизации размера таблиц стилей при помощи опять таки парсера, php, asp ну или ещё какой другой технологии, о которой мне ничего не известно. Понятно, что нормальный человек не станет писать код, экономя на табуляторах, пробелах и переводах строк, по причине оптимизации размера кода (я имею ввиду CSS) или ещё более клинический случай — писать код в одну строчку (самый, кстати, оптимальный вариант с точки зрения размера). Нормальный человек будет руководствоваться удобством восприятия и легкости чтения кода. Следовательно, размер файла в этом случае, будет далеко не самым оптимальным и в случае с внутренними таблицами стилей можно убрать ненужные пробельные символы.

На этом реальные достоинства заканчиваются, и начинаются недостатки:

  1. Разные сущности всегда плохо смешивать вместе — в данном случае HTML и CSS (а если используется XSLT, то ещё и это). Спагетти код ужасно трудно поддерживать, в случае если он достаточно объёмен. Абстракции хороши, когда они работают достаточно независимо и имеют точки соприкосновения через как можно более узкий интерфейс.
  2. Такие таблицы стилей очень трудно, а часто и невозможно, создавать и поддерживать с помощью специализированных средств, например, с помощью широко известного редактора TopStyle. Согласитесь, что гораздо удобнее иметь подсветку синтаксиса, редактор с проверкой правильности таблиц в зависимости от выбранного стандарта, AutoComplete функцию (это избавляет от держания в голове синтаксиса сотен конструкций) ну и других полезных функций.
  3. Если HTML пишется руками (без использования динамических технологий) и в разных документах нужно иметь одинаковое оформление, приходится использовать старинный народный метод copy/paste, который весьма хорош, если вы являетесь поклонником товарища Сухова и любите помучитсья.

Теперь о внешних таблицах стилей. Начнём с достоинств:

  1. Здесь сущности разделены и CSS не переплетена ни с каким другим кодом, что существенно упрощает поддержку и совместную работу(разработку).
  2. Возможность разработки таблиц стилей с помощью специализированных инструментов, существенно повышающих скорость работы, избавляющих от ненужных умственных усилий и в итоге, уменьшающих количество ошибок в коде.
  3. Возможность кэширования таблиц стилей, в случае если страница формируется динамически, например в случае с форума или чата.
  4. Если данный стиль нужен в разных документах, в них просто подключается нужный файл и никакого copy/paste. Разумеется это верно в случае неиспользования динамических технологий. В случае динамических технологий, просто слегка снижается нагрузка на сервер и уменьшается использование памяти.

Ну и напоследок, — о недостатках внешних таблиц стилей:

  1. Возможно неправильное отображение страницы если не загрузился нужный файл с таблицей. Такое частенько бывает в случае хреновой связи с Интернетом или в случае перегрузки веб-сервера — известно, что если сервер перегружен, то часто не грузятся нужные картинки, таблицы стилей и пр.
  2. Код написанный человеком не всегда оптимален с точки зрения размера (особенно если у вас CSS размером килобайт эдак 50).
  3. Невозможность руления таблицами стилей с помощью разных динамических технологий, что часто, приводит к дублированию одних и тех же данных, например если один и тот же цвет нужен в нескольких местах, его придется писать несколько раз и в случае изменения либо использовать функцию поиска и замены вашего любимого редактора, либо, если вы извращенец, ползать по всем таблицам и руками вносить изменения. Эх если бы в CSS были переменные.
  4. Возросшая важность проектирования таблиц стилей, что увеличивает время и сложность создания сайта.

Для меня, достоинства внешних таблиц стилей, перевесили их недостатки и достоинства внутренних таблиц, поэтому, совсем недавно, я перешел на использование внешних таблиц стилей, о чём пока не жалею.

2003-03-30 19:01:59 UTC css stylesheet web