Разделение структуры и кожи с помощью ITCSS, BEM и OOCSS

Я создаю таблицу стилей, вдохновленную ITCSS, BEM и OOCSS, и не знаю, как отделить свойства структуры от свойств косметики.

Пример как я понимаю ITCSS и OOCSS:

//First the structure. Button is an object (ITCSS)
.o-btn {
    height: ...;
    width: ...;
}

//Then declare the cosmetics in components
.c-btn-login {
    background: ...;
    color: ...;
    ...
}

То, что у меня есть проблемы, связано с ITCSS. Два разных префикса (две категории) для одного и того же элемента, когда у меня мог быть один и тот же префикс для одного и того же элемента и, возможно, было бы более понятно для понимания.

Правильный ли этот подход?

1 ответ

В моем мнении я думаю, что c-btn-login неправильный... в этом случае компонент - форма.

 <form class="o-form c-form-login t-form-dark" >
    <input type="text" class="o-input">
    <input type="password" class="o-input" >
    <input type="submit" value="Login" class="o-btn">
  </form>

с помощью этой структуры вы можете применять косметические стили с классом t-form-dark ко всем дочерним компонентам или использовать определенный класс для дочерних элементов, например t-btn-dark

.t-form-dark {
    .o-input{}
    .o-btn{}
}
Другие вопросы по тегам