Лучше ли связывать CSS-классы или называть их отдельно для модульных целей?

Например, что лучше:

Метод 1 (назовите классы отдельно):

/* CSS */

.textbox-red, 
.textbox-green {
   padding: 10px;
   border: 1px solid #CCC;
   border-radius: 10px;   
}

.textbox-red { color: #900; }
.textbox-green { color: #3c3; }

/*HTML*/

<div class="textbox-red"></div>
<div class="textbox-green"></div>

ИЛИ ЖЕ ------------

Метод 2 (цепочка классов):

/* CSS */

.textbox {
  padding: 10px;
  border: 1px solid #CCC;
  border-radius: 10px;
}

.textbox.text-red { color: #900; }
.textbox.text-green { color: #3c3; }

/*HTML*/

<div class="textbox text-red"></div>
<div class="textbox text-green"></div>

Что является лучшей практикой среди двух?

4 ответа

Решение

Мое мнение таково, что вы должны использовать модульную CSS - вы также можете комбинировать классы вместо того, чтобы связывать их:

/*CSS*/
.textbox {
  padding: 10px;
  border: 1px solid #CCC;
  border-radius: 10px;
}

.text-red { color: #900; }
.text-green { color: #3c3; }

/*HTML*/

<div class="textbox text-red"></div>
<div class="textbox text-green"></div>

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

Лично я бы выбрал способ 2. Таким образом, вы можете легко заменить текстовый красный или текстовый зеленый на синий или текстовый желтый и при этом сохранить основной стиль для вашего текста. По сути, метод 2 предусматривает большую гибкость и ремонтопригодность, ИМХО.

По моему опыту модульный подход дает вам наибольшую гибкость. Модульный шаблон CSS также используется в Twitter Bootstrap, где гибкость очень важна.

Сначала лучше, если вы создаете стиль для IE6, потому что этот браузер не поддерживает второй метод.

Другие вопросы по тегам