Известно, что html атрибут style признан устаревшим в Transitional XHTML и не разрешен в Strict XHTML 1.0.
Но нередко бывают ситуации, когда конкретный стиль нужно применить только в одном месте, причем это может быть страница, которая открывается очень редко. Допустим, для конкретной таблицы я решил, что надо добавить margin-bottom: 0.3em, чтобы красивее смотрелось, или у формы сделать рамку и задать паддинг (больше таких форм у меня на всем сайте нет).
И что, ради одного места использования выносить это во внешний styles.css ? Действительно ли это оправдано? Я сомневаюсь.
Да, я знаю теорию, что разметка описывает структуру и содержимое документа, а стили — оформление. Но лично я на практике никогда не страдал от inline стилей, наоборот, я смотрю разметку и сразу по месту могу увидеть соответствующий стиль, мне не нужно его в отдельном файле разыскивать.
Повторюсь, я всегда выношу во внешний файл стили, которые используются более одного раза, или стили, которые всегда обязательны к загрузке у новых посетителей сайта (например стили для оформления главной и основных страниц сайта). Но стили которые нужны только в одном очень редко открывающемся месте?
Стараетесь ли вы не иметь абсолютно ни одного inline стиля? Если да, то можете убедить меня что это оправдано?
Может быть в таких ситуациях нужно использовать какую-то золотую середину, например не выносить стиль во внешний основной файл стилей, а выносить такие одноразовые стили в тег <style> в заголовке конкретной страницы?
Здравствуйте, MozgC, Вы писали:
MC>Может быть в таких ситуациях нужно использовать какую-то золотую середину, например не выносить стиль во внешний основной файл стилей, а выносить такие одноразовые стили в тег <style> в заголовке конкретной страницы?
Как правило, в таких случаях решаю вопрос посредством атрибута тега style="". И валидно и в основной файл не надо заносить, и править можно тут же.
В этом вопросе однозначности не добиться еще долго.
Здравствуйте, MozgC, Вы писали:
MC>Здравствуйте,
MC>Известно, что html атрибут style признан устаревшим в Transitional XHTML и не разрешен в Strict XHTML 1.0.
Уверен?
Есть куча тегов и атрибутов, признаных устаревшими. но атрибута style среди них нет.
Здравствуйте, MozgC, Вы писали:
MC>Известно, что html атрибут style признан устаревшим в Transitional XHTML и не разрешен в Strict XHTML 1.0.
Как уже выше заметили — нет.
MC>Но нередко бывают ситуации, когда конкретный стиль нужно применить только в одном месте, причем это может быть страница, которая открывается очень редко. Допустим, для конкретной таблицы я решил, что надо добавить margin-bottom: 0.3em, чтобы красивее смотрелось,
Если конкретная таблица будет смотреться лучше с отступом, то следует предположить, что все остальные таблицы тоже будут лучше смотреться с отступом.
MC>или у формы сделать рамку и задать паддинг (больше таких форм у меня на всем сайте нет).
Аналогичное рассуждение. Сегодня нет, а завтра появится.
MC>И что, ради одного места использования выносить это во внешний styles.css ? Действительно ли это оправдано? Я сомневаюсь.
Да. Потому что завтра появится ещё одна таблица, и если стиль будет inline или даже в <style>, то получится в лучшем случае дублирование кода, в худшем — неконсистентность.
MC>лично я на практике никогда не страдал от inline стилей, наоборот, я смотрю разметку и сразу по месту могу увидеть соответствующий стиль, мне не нужно его в отдельном файле разыскивать.
Когда смотришь разметку, стиль должен быть не важен.
MC>Стараетесь ли вы не иметь абсолютно ни одного inline стиля? Если да, то можете убедить меня что это оправдано?
Да, постольку, поскольку это способствует единообразию. Если я добавляю таблицу в один файл из ста и пишу стиль inline или в <style> страницы, с большой вероятностью получится не тот стиль, что Вася прописал на другой таблице в другом файле. Если же Вася прописал стиль для всех таблиц в глобальном внешнем файле стилей, у меня всё заработает сразу. Ну или я пойду и поправлю глобальный стиль, не забыв проверить, где ещё он используется.
Разумеется, если внешняя таблица стилей начинает по размеру переходить границы разумного — её следует дробить. Но так, чтобы не возникало сомнений, какие стили должны быть в каком .css.
Здравствуйте, samius, Вы писали:
S>Уверен? S>Есть куча тегов и атрибутов, признаных устаревшими. но атрибута style среди них нет.
А разве нет? Меня дезинформировали? Вот цитаты из двух книг по XHTML/CSS, которые я читал/листал:
Beginning Web Programming with HTML, XHTML, and CSS (с) Jon Duckett:
The style attribute was deprecated in Transitional XHTML and is not allowed in Strict XHTML 1.0 because it introduces stylistic markup, when documents should really contain only markup that explains semantics and structure of the document.
The Essential Guide to CSS and HTML Web Design (c) Craig Grannell:
Inline styles also happen to be deprecated in XHTML 1.1, so they’re eventually destined for the chop.
Здравствуйте, Centaur, Вы писали:
C>Разумеется, если внешняя таблица стилей начинает по размеру переходить границы разумного — её следует дробить. Но так, чтобы не возникало сомнений, какие стили должны быть в каком .css.
Несколько замечаний и вопросов:
1) Даже если дробить, то все равно будет грузиться куча стилей, которые нужно очень редко. Т.е. грузиться будет всегда (при первом заходе на сайт), а использоваться часть стилей будет редко или даже никогда поситетель и не зайдет на какую-нибудь далекую страницу. На большом сайте файл со стилями может достигать сотни килобайт, и грузить такой размер, зная что далеко не все из него понадобится, имхо неоправданно.
2) Есть ли какие-то рекомендации по дроблению внешнего файла стилей? Как это наиболее принято и наиболее эффективно делать?
3) Значит вы думаете что вынос одноразово используемых стилей в тег <style> конкретной страницы — это не выход и все равно в конечном итоге будет приводить к дублировованию стилей и нарушению единообразия?
Здравствуйте, MozgC, Вы писали:
MC>Здравствуйте, samius, Вы писали:
S>>Уверен? S>>Есть куча тегов и атрибутов, признаных устаревшими. но атрибута style среди них нет.
MC>А разве нет? Меня дезинформировали? Вот цитаты из двух книг по XHTML/CSS, которые я читал/листал:
Найди страницу с онлайн стилями, да скорми ее валидатору
Здравствуйте, MozgC, Вы писали:
S>>Уверен? S>>Есть куча тегов и атрибутов, признаных устаревшими. но атрибута style среди них нет.
MC>А разве нет? Меня дезинформировали? Вот цитаты из двух книг по XHTML/CSS, которые я читал/листал:
Не надо читать/листать книги, надо читать спецификации. И особенно DTD.
MC>Beginning Web Programming with HTML, XHTML, and CSS (с) Jon Duckett: MC>
The style attribute was deprecated in Transitional XHTML and is not allowed in Strict XHTML 1.0 because it introduces stylistic markup, when documents should really contain only markup that explains semantics and structure of the document.
Здравствуйте, MozgC, Вы писали:
MC>1) Даже если дробить, то все равно будет грузиться куча стилей, которые нужно очень редко. Т.е. грузиться будет всегда (при первом заходе на сайт), а использоваться часть стилей будет редко или даже никогда поситетель и не зайдет на какую-нибудь далекую страницу. На большом сайте файл со стилями может достигать сотни килобайт, и грузить такой размер, зная что далеко не все из него понадобится, имхо неоправданно.
Ну так надо постоянно используемые стили иметь в одном файле, а используемые редко — в других. Вот, скажем, в примере с таблицей и формой стиль таблицы пойдёт в tables.css, а стиль формы — в forms.css, включаемые только из тех страниц, где они нужны. Но человек, добавляющий новую таблицу, увидит, что есть файл про таблицы, посмотрит в него и увидит, что это хорошо, и затащит его.
MC>3) Значит вы думаете что вынос одноразово используемых стилей в тег <style> конкретной страницы — это не выход и все равно в конечном итоге будет приводить к дублировованию стилей и нарушению единообразия?
При определённой самодисциплине, может быть, и не приведёт. Но работы добавит.
Я вообще считаю, что к оптимизации времени загрузки стилей нужно относиться как ко всякой другой оптимизации — делать в последнюю очередь и только когда сильно припрёт, осознавая, что это усложнит дальнейшие изменения всего остального.
Здравствуйте, Centaur, Вы писали:
C>Ну так надо постоянно используемые стили иметь в одном файле, а используемые редко — в других. Вот, скажем, в примере с таблицей и формой стиль таблицы пойдёт в tables.css, а стиль формы — в forms.css, включаемые только из тех страниц, где они нужны. Но человек, добавляющий новую таблицу, увидит, что есть файл про таблицы, посмотрит в него и увидит, что это хорошо, и затащит его.
Может быть вы знаете где можно почитать более подробнее на тему дробления/организации внешних css файлов?
Здравствуйте, MozgC, Вы писали:
MC>Здравствуйте, Centaur, Вы писали:
C>>Ну так надо постоянно используемые стили иметь в одном файле, а используемые редко — в других. Вот, скажем, в примере с таблицей и формой стиль таблицы пойдёт в tables.css, а стиль формы — в forms.css, включаемые только из тех страниц, где они нужны. Но человек, добавляющий новую таблицу, увидит, что есть файл про таблицы, посмотрит в него и увидит, что это хорошо, и затащит его.
MC>Может быть вы знаете где можно почитать более подробнее на тему дробления/организации внешних css файлов?
Такое Вы вряд ли найдёте.
В Яндексе пользуются БЭМ http://clubs.ya.ru/bem/ у них есть критерии по размеру и некоторые трюки по оптимизации. Возможно в клубе есть описание организации файлов css.
Обычно css сильно не дробят на файлы. Стараются записать всё в один файл и закешировать на клиенте.
Прочитайте на http://pepelsbey.net/ статьи о семантической вёрстке, очень хорошо про правильную вёрстку.
Здравствуйте, MozgC, Вы писали:
MC>Может быть вы знаете где можно почитать более подробнее на тему дробления/организации внешних css файлов?
Глобальный сброс в один файл, стили отвечающие за каркас (лейаут) во второй, всё остальное — в третий. Если есть шрифты содержащиеся в css — их отдельно. Ну, и жабаскрипт библиотеки использующие свои стили тоже добавляют отдельные стили идущие вместе с библиотекой. Остальное излишне.
"Сотни килобайт" даже на крупном портале, это говнокодерство какое-то. Да и не бывает такого (не берём шрифты содержащиеся в css). "Десятки килобайт" это уже говнокод.