Что представляет собой лучшая стратегия для создания селекторов CSS для виджетов html. Эти селекторы не должны вступать в конфликт с дочерними элементами или с возможными общими селекторами.Как предотвратить конфликты между правилами css
/* this item class it is already done, has no relation with my widgets´ items
and i can´t modify it*/
.item { color:red; }
.my-first-widget{...}
.my-first-widget .item { color: blue; font-size:16px;}
.my-second-widget{...}
.my-second-widget .item { font-size:14px;}
Проблема с кодом выше:
- Если я вставляю-второй-виджет внутри моего первого-виджета (но не в моем первом-виджете .item), элементы из my-second-widget будет синим (я хочу, чтобы они наследовали цвет от его родителя).
- Я вставляю my-second-widget внутри проекта с правилом, определенным как .item, элементы из my-second-widget будут красными (я хочу, чтобы они наследовали цвет от его родителя, а не от неродственного общего класс предмета).
который является лучшим решением для стилизации экспортных виджетов?
Решение 1 (используйте родительский класс префикс)
.my-first-widget{...}
.my-first-widget-item { color: blue; font-size:16px;}
.my-second-widget{}
.my-second-widget-item { font-size:14px;}
Решение 2 (использование дочерних селекторов)
.my-first-widget{...}
.my-first-widget > .item { color: blue; font-size:16px;}
.my-second-widget{ color: black;}
.my-second-widget > .item { font-size:14px;}
С solution2 я до сих пор конфликт с генералом. пункт ...
Любые другие идеи?
Спасибо. Ваш код работает, но что я должен делать, чтобы предотвратить влияние других правил в общем классе .item, таком как border, background, ...? Написание наследования для всех из них не кажется хорошим. – PsychoJohn
Я боюсь, что для этой проблемы нет волшебной пули. Вам нужно, чтобы правила CSS виджета были как можно более автономными, а это означает, что вам нужно будет указать каждое свойство, которое имеет для вас решающее значение, и убедитесь, что такие свойства, как 'float: none',' position: static' и так что они явно заданы. Вы не можете предполагать ничего о том, что может быть во внешней сторонней таблице стилей. Фактически, некоторые виджеты даже заходят так далеко, чтобы использовать встроенные стили, чтобы убедиться, что вы не можете сгладить макет виджетов (например, постоянный контакт электронной почты). –
Что вы думаете о решении 1, описанном в открытии? Я думаю, что это решение в сочетании с вашим (указать все свойства критических свойств) для селекторов тегов типа «.my-widget a "может быть хорошей стратегией – PsychoJohn