为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;}
上述代码存在问题:
哪种样式可导出小部件的最佳解决方案?
解决方案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;}
对于解决方案2,我仍然与一般的.item选择器发生冲突......
还有其他想法吗?
答案 0 :(得分:2)
我认为以下内容对您有用。
如果这是您的HTML:
<div class="project">
<div class="item">item outside widget</div>
<div class="my-second-widget"><span class="item">item</span></div>
</div>
试试这个CSS:
.item {
color:red;
}
.my-first-widget {
}
.my-first-widget .item {
color: blue;
font-size:16px;
}
.my-second-widget {
}
.my-second-widget .item {
color: inherit;
font-size:14px;
}
.project {
}
请参阅演示:http://jsfiddle.net/audetwebdesign/3eLpU/
在color: inherit
上设置.my-second-widget .item
,这会强制嵌套.item
继承.my-second-widget
的颜色值(如果已设置),或颜色值{ {1}}(如果已设置)或最终,正文(设置或默认值)。
如果存在顶级.project
规则,则会在.item
之外应用。