Это интересный вопрос, и это то, над чем я тоже много боролся!
Вот как я сделал бы это в вашем случае. Подведем вверх два наиболее важных факта:
- Компоненты очень разные семантически
- Они должны выглядеть почти такой же
Не зная больше контекста о стилях, он будет трудно сказать, какой из них лучше всего подходит. Давайте разделим его на два основных случая.
Ключевым моментом здесь является то, что вы должны принять решение в этом случае вы:
Случай 1: если они запланированы, чтобы иметь схожие стили, поэтому, если стили к одному изменение, стили к другому должны также следовать тем же изменениям;
Дело 2: если эти два элемента имеют сходные стили.
Итак, основываясь на моем опыте, вот подход, я бы порекомендовал вам:
Случай 1: Просто используйте общий класс для обоих элементов и использовать модификатор (ы) для каждого (или одного) из них.Попробуйте абстрагироваться как можно более общее, потому что элементы очень разные семантически.
Например, если цвет тот же - аннотация его, определяя переменную/класс/mixin brand-color
. Если размер тот же, отрисуйте его, указав container-width
. Если маржа такая же, отрисуйте ее путем определения глобального margin
.
Вы могли бы рассмотреть абстрагирования не только один, но несколько подобных свойств в различных микро-абстракции (как примеры) и составляют смесь классов для каждого из двух элементов.
Дело 2: Используйте разные классы и назначьте их в том же стиле.
Возможно, это не так, и вы можете извлечь из этого выгоду. Если вы думаете об этом, эти два элемента имеют сходные стили - не нужно обновлять их оба в случае изменения одного стиля.
Конечно, во всех случаях, убедитесь, что вы делаете достаточно, чтобы расширить глобальную тему специфических свойств (например, brand-color
, например), которые должны быть согласованы по всем элементам.
Надеюсь, мой вход помогает!