Лучше всего иметь весь стиль во внешнем файле CSS, чтобы использовать кеширование, разделение разметки и дизайна, лучший обзор и т.д.
Однако я обычно сталкивался с проблемой, что элементы должны выглядеть одинаково, т.е. иметь один и тот же класс (ы), но должны отличаться положением, например. требуют разного запаса или заполнения из-за различий в составе.
Я подумал о трех вариантах:
Вариант 1. Разделите стили внешнего вида из стилей позиции (margin/padding), используйте их в отдельных классах и объедините их по мере необходимости.
.myClass { ...; }
.myClass.top { margin-top: 20px; }
.myClass.inside { margin: 10px 0px; }
.myClass.bottom { margin-bottom: 20px; }
Вариант 2. Дублируйте классы, переименуйте их соответственно и сохраните все различия в своем классе.
.myClassTop { ...; margin-top: 20px; }
.myClass { ...; margin: 10px 0px; }
.myClassBottom { ...; margin-bottom: 20px; }
Вариант 3. Используйте встроенный стиль для объявления разных полей/дополнений.
<div class="myClass" style="margin-top: 20px;">
<div class="myClass">
<div class="myClass" style="margin-bottom: 20px;">
имеющий
.myClass { ...; margin: 10px 0px; }
Мой здравый смысл подсказывает мне использовать варианты 1 и каскадные различия в зависимости от структуры parent/child. Но это обычно заканчивается довольно запутанным, особенно для других разработчиков, читающих CSS. Поэтому я попробовал вариант 3 (имея только несколько внешних полей/дополнений), и это, похоже, работает очень хорошо.
Я по-прежнему чувствую себя плохо в этом странным образом. Есть так много людей, которые говорят, что не используют встроенный стиль. Обычно я бы сказал "все, что лучше работает", но в последнее время я понял, что встроенная маржа/дополнение может повлиять на процесс рендеринга веб-сайта, вызывая "танцевальные блоки". Я не уверен, действительно ли этот эффект вызван порядком обработки стилей или, скорее, некоторыми другими неприятными вещами, которые происходят там, я думаю.
Любые советы?