Нужна помощь в понимании того, как я должен определять oocss объекты и скины

Прежде чем задать вопрос, вот код, на который я ссылаюсь:

Коробка Объект

Используется для блокировки контента, такого как Остров или Островок в Bootstrap.

.box { margin-bottom: 24px; padding: 12px; }    
.box--s { padding: 8px 12px; }  
.box--l { padding: 24px 12px; }

Круглая кожа

Делает закругленные углы. Он используется несколькими классами абстракции, такими как box.

.round { border-radius: 4px; }  
.round--s { border-radius:2px; }    
.round--l { border-radius:8px; }

В коде для создания абстракции вы должны написать:

<div class="round box">  Example </div>

У меня есть другие скины, которые расширяют рамки, такие как серый, предупреждение и метка.


Теперь к вопросу

Я работаю над кнопкой объекта. Но так как он имеет те же правила и модификаторы, что и box, и может иметь такие же модификаторы round, я должен просто объявить его скином? Все, что нужно сделать, это добавить около четырех правил для "внешнего вида". Если бы он портился с полями или отступами, я бы сказал, что это ДОЛЖЕН быть объект.

В коде вы бы написали

<a class="round btn box">  Example </a>

Или уменьшить его размер

<a class="round btn box box--s">  Example </a>

Сохраняет ли это сухим излишним? Что меня беспокоит, так это то, что кнопка - это такой общий элемент на странице, но на самом деле это просто расширение объекта и модификаторы, которые я уже написал.

1 ответ

Все это сводится к вопросу, должны ли мы иметь глобальные модификаторы (такие как.round, .box) или нет. Что касается меня, у них настолько мало семантики, что я предпочитаю всегда интегрировать их в отдельные объекты. Глобальные вещи, такие как ".hidden", ".round" или ".green", не должны использоваться в качестве отдельных объектов.

Поэтому я предпочел бы иметь объект "кнопка", который семантически не совпадает с "коробкой". Все модификации этой кнопки будут неотъемлемой частью этой кнопки, а не некоторых глобальных классов. Если вам нужно сделать вещи круглыми, используйте модификаторы для определенных объектов; для объединения значений у вас всегда есть свой CSS-препроцессор, который не обязательно должен быть представлен на семантическом (то есть на основе имени класса) уровне.

Кстати, это полностью мое личное мнение.

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