В последнее время сообщество CSS сосредоточено на новых трюках CSS3, а более важные темы, такие как CSS Layouts, остаются в тени. Многие вещи изменились, но мы все еще используем ID для прямого стиля. Это означает, что у нас есть #header, #footer, #navigation, #main… и мы применяем стили к этому идентификатору.
Что не так с этим кодом и подходом? В HTML нет ничего плохого; это совершенно семантически и логично. Проблема в CSS.
Вы все видели CSS так:
#main { margin:0 auto; width:900px;}
#header{
float:left;
width:900px;
}
#footer{
float:left;
width:900px;
}
#navigation{
float:left;
width:150px;
}
#sidebar{
float:left;
width:150px;
}
#content{
float:left;
width:600px;
}
и HTML
<div id="main">
<div id="header">#header</div>
<div id="navigation">#navigation</div>
<div id="content">#content</div>
<div id="sidebar">#sidebar</div>
<div id="footer">#footer</div>
</div>
Мы напрямую используем ID для макета. Но мы забываем, что ID можно использовать один раз и только один раз .
Это не гибкий!
Для каждого строительного блока (DIV) мы должны написать разные ID. Если у нас 1000 блоков, мы должны написать 1000 разных ID.
Почему бы нам не начать использовать класс, напишите его, используйте его несколько раз .
Вот второй пример с тем же HTML, но другим CSS. Обратите внимание, что эта модель поддерживает семантическое кодирование. Мы используем ID для придания битам HTML логических и семантических областей, которые мы используем для всех стилей.
#main { margin:0 auto; width:900px;}
.w150,.w600,.w900 {float:left;}
.w900 {width:900px;}
.w600 {width:600px;}
.w150 {width:150px;}
И HTML:
<div id="main">
<div id="header" class="w900"> </div>
<div id="navigation" class="w150"> </div>
<div id="content" class="w600"> </div>
<div id="sidebar" class="w150"> </div>
<div id="footer" class="w900"> </div>
</div>
Но эта система действительно работает, когда у нас есть один блок, который повторяется много раз.
Давайте создадим пример фотогалереи.
Галерея изображений с использованием ID
Галерея изображений с использованием класса
Просмотр исходного кода последних двух примеров.
И у нас есть 2 строки кода для макета с использованием класса против 9 строк CSS с использованием идентификаторов .
Я думаю, это более чем очевидно, что с помощью класса мы можем писать меньше кода.
Почему бы нам не попытаться расширить второй пример и построить систему расширения макетов.
/* w for width */
.w150, .w300, .w450, .w600, .w750, .w900 {float:left;}
.w150{width:150px}
.w300{width:300px}
.w450{width:450px}
.w600{width:600px}
.w750{width:750px}
.w900{width:900px}
.clear{clear:both;}
И у нас есть собственный CSS Framework . Пример CSS Framework . Кто-то спросит: а как же скорость выполнения. Согласно этому тесту класс работает лучше, чем ID в большинстве современных браузеров. К сожалению, я получаю противоречивые результаты по каждому показателю. Так что я буду счастлив, если кто-то может подтвердить мое заявление. Заключительные мысли : смысл этой статьи в том, что класс более гибкий, чем id. Эффективно вы можете написать меньше кода с классами. Вы всегда можете использовать семантический HTML и ID в сочетании с классом, если хотите. И, наконец, нет правильного или неправильного метода кодирования . Метод Райта — тот, который работает для
вы . Это метод, который я предпочитаю.
Ваши комментарии и мысли будут оценены.
С http://www.vcarrer.com/2011/05/write-modern-css-use-class.html