Правильно ли я делаю подклассы моего CSS?
Я делаю набор кнопок для своего сайта, и мне нужна профессиональная проницательность.
Чтобы уменьшить раздувание CSS, я хочу разделить мои кнопки на разные цвета, например.button.blue.
Будут ли следующие проблемы в будущем? (при условии, что я не создаю класс просто.blue) Должен ли я использовать что-то вроде.button.button-blue?
.button {
display:inline-block;
padding: 9px 18px;
margin: 20px;
text-decoration: none;
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
font-weight: bold;
text-align: center;
background: #FFE150;
}
.button.blue {
background: #49b8e7;
border:1px solid #54abcf;
border-bottom:1px solid #398fb4;
color:#FFF
text-shadow: 0 1px 0 rgba(255,255,255, 0.5);
}
.header{
height: 50px;
}
.header.blue {
background: blue;
color: #fff;
}
4 ответа
То, что у вас есть с мультиклассами, будет работать нормально, если вы хотите, чтобы они работали так:
<div class="button blue">
Will use .button and .button.blue
</div>
<div class="button">
Will only use .button
</div>
<div class="header blue">
Will use .header and .header.blue
</div>
<div class="header">
Will only use .header
</div>
<div class="blue">
Will use neither of the .blue declarations because it doesn't contain header or button.
</div>
Селектор, такой как.button.blue, фактически выбирает для элемента, у которого в качестве классов есть "синий" и "кнопка", а не класс с именем.button.blue. См. http://www.w3.org/TR/CSS21/selector.html.
Вы можете использовать правило стиля.button.blue, которое вы перечислили, но вам нужно будет перестроить свой HTML, чтобы у вас было что-то вроде <button type="button" class="button blue"/>
, Тем не менее, вам не нужно иметь класс кнопки, так как это кнопка (или <input type="submit">
и т. д.) достаточно для использования в вашем селекторе. Вы можете написать правило CSS, которое просто button.blue, input[type=submit].blue{}
Объедините классы, применяя цвет, который вы хотите к теме.
HTML:
<input type="text" class="text-field-required default" .../>
<select class="autocomplete-drop-down blue">...</select>
<a href="#" class="button-link green" .../>
CSS:
.text-field-required {
//component css theme without colors
}
.default {
//default color css theme for any component
}
.blue {
//blue css theme for any component
}
.green {
//green css theme for any component
}
Похоже на button.blue
достаточно.
Единственная разница между ними заключается в том, если вы используете <button class="button blue">
, или же <button class="button button-blue">
,
Вам даже не нужно дублировать картину синим цветом... Вы можете просто сделать что-то вроде этого:
.button
{
// button style
}
.header
{
// header style
}
.blue
{
background: blue;
color: #fff;
}
Конечно, если вы добавите синий класс к каждому из них. (<div class="header blue">
а также<button class="button blue">
)