Методика написания CSS кода от Антонио Лупетти

Методика написания CSS кода от Антонио Лупетти

Вообще говоря, существует множество подходов для кодинга CSS, и различаются они прежде всего задачей, которую преследует автор. Если вы хотите сделать как можно быстрее и проще, сделать и забыть, то париться вы особо не будете. Если же вы работаете над развивающимся и важным для вас проектом, то за своими стилями будете следить, делать их читабельными и удобными для дополнений и изменений.  

В этой статье я хочу познакомить вас с методикой написания CSS-кода от автора блога Woorkup.com Антонио Лупетти. Мой собственный подход к написанию стилей очень похож на предложенный Антонио, поэтому в процессе описания я буду приводить примеры того, как это делаю я.

Общая схема 

Методика носит название «Модель четырех пузырьков» (Four bubbles model) и схематично ее можно представить вот так:

Общая схема подхода к написанию CSS кода

В принципе, все понятно уже здесь, но я хочу более подробно осветить каждый этап. 

1. Переопределяем стандартные HTML элементы

Как вы знаете, у браузеров есть дефолтные значения стилей элементов, и они различаются от браузера к браузеру. Для приведения всех стилей к общему виду используют так называемые сбросы CSS. Это и есть первая часть текущего этапа.

Далее, после сброса стилей, нам необходимо задать необходимые нам стили в свете текущего дизайна сайта. Просто берем все используемые нами элементы и задаем им нужные параметры.

На этом этапе у нас с Антонио разный подход — он делает два шага, я делаю один. У меня есть файлик, который я обычно называю typo.css. В нем нет сброса как такового, есть только определения стилей для основных элементов. Посмотрите на примере Временно.нет, вы сами поймете.

2. Определяем основные элементы разметки

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

Логично заключить, что раз структура повторяется, то нет смысле каждый раз заново писать все стили, так? У меня вот есть отдельная папочка, в которой есть верстки для двух- и трехколоночного макетов. Каждый раз, когда я что-то верстаю, я беру готовую разметку, немного правлю стили (отступы, ширины, высоты) и все. Для тех из вас, у кого нет таких запасов, советую воспользоваться готовыми CSS шаблонами или CSS фреймворками.

3. Добавляем специфичные стили элементов дизайна

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

Для того, чтобы не заблудиться потом в написанных стилях, разделяйте их на группы (общие, для списка статей, для вывода статьи), используйте вложенность стилей там, где это необходимо. Ваш код должен быть логичным, читабельным и удобным — так вы сэкономите время и свои силы.

4. Оптимизируем CSS код

Часто, после того, как вы сверстали и протестировали макет, в ваших стилях остаются какие-то неиспользуемые элементы — например, вы определили несколько стилей для стандартных элементов, но сейчас уже знаете, что никогда не будете их использовать на сайте. Зачем их тогда держать? Или в процессе работы вы пробовали разные селекторы, но некоторые из них больше не нужны. Для того, чтобы найти эти селекторы, воспользуйтесь инструментами для нахождения неиспользуемых CSS стилей.

Тепеь у вас отличный оптимизированный CSS код без лишних селекторов. Круто. Осталось только сделать так, чтобы он быстрее грузился браузером. Для можно удалить из него переносы строк, комментарии и лишние пробелы. У нас на Временно есть две версии каждого css-файла — сжатая и нет. Мы работаем с несжатой версией, а браузер получает сжатую. И нам работать удобно, и грузится все быстрее.

Заключение 

Я подробно рассмотрел предложенную Антонио схему и рассказал, как работаю я при написании CSS файлов. Теперь было бы здорово услышать и ваши схему работы. В общем, жду ваших вариантов в комментариях. Пока.

Расскажите друзьям

Оцените статью:
  • 1
  • 2
  • 3
  • 4
  • 5

Комментарии — 10

Влад
>>Так же обратите внимание на другие статьи раздела «HTML и CSS».
В данном случае "так же" будет слитно.
#
Влад
Cuprum
Перечитал свой взгляд по этому вопросу (http://cuprum.name/page/code-organization-in-css). Похоже. Мне кажется, что схема предложенная Антонио достаточна универсальна и с некоторыми вариациями ее многие используют.
Антон
я пишу css также, только начинаю я с макета. Ну тоесть я смотрю на отрисованный в фотошопе макет и по нему пишу таблицу стилей сначала стандартные элементы потом шапку {отступы ссылки фоны}. и так постепенно до конца. А потом когда верстаю всё само встаёт на свои места и принимает нужную форму.
#
Антон
Денис
Давно искал нечто подобное. Обычно все пишется сразу и получается несколько сумбурно и непригодно к оптимизации. Спасибо
splean
>>У нас на Временно есть две версии каждого css-файла — сжатая и нет.
>>Мы работаем с несжатой версией, а браузер получает сжатую.
>>И нам работать удобно, и грузится все быстрее.

а можно поподробнее, как это реализуется?
Grin
Ну есть PHP скрипт, который берет указанные несжатые файлы и сжимает их.
splean
я про отдачу браузеру одного css, а использования самим другого
Grin
Ну и я тоже ;-)
Вы сами работает с несжатыми файлами, далее запускаете скрипт, который делает их сжатую копию. Ее и подключаете к странице.
AngryCAT
А я для цели сжатия использую web optimizer Очень доволен. Не реклама.
#
AngryCAT
sunnybear
А вот Харисов рекомендует другой подход -- верстку независимыми блоками. Это эффективнее с точки зрения рендеринга получается.

Да, если кому нужна реклама информация по поводу Web Optimizer -- можно у меня спрашивать :)

Новый комментарий

как выглядит какой тег
жирный текст <b>жирный текст</b>
курсивный тект <i>курсивный тект</i>
зачеркнутый текст <s>зачеркнутый текст</s>
подчеркнутый текст <u>подчеркнутый текст</u>
ссылка <a href="адрес">ссылка</a>
function foo() { ... }
<pre><code>function foo() { ... } </code></pre>
разрешенные теги или посмотреть как будет выглядеть
как выглядит какой тег
жирный текст <b>жирный текст</b>
курсивный тект <i>курсивный тект</i>
зачеркнутый текст <s>зачеркнутый текст</s>
подчеркнутый текст <u>подчеркнутый текст</u>
ссылка <a href="адрес">ссылка</a>
function foo() { ... }
<pre><code>function foo() { ... } </code></pre>
разрешенные теги или посмотреть как будет выглядеть

metin2 pvp metin2 pvp serverler pvp serverler