如何为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;}
以上代码存在的问题:
- 如果我将my-second-widget插入到my-first-widget中(但不是在my-first-widget .item内),my-second-widget中的项目将会是蓝色的(我希望它们能够继承父元素的颜色)。
- 如果我将my-second-widget插入到定义为.item的项目中,my-second-widget中的项目将会是红色的 (我希望它们能够继承父元素的颜色,而不是无关联的通用.item类)。
怎样最好地为可导出的小部件设置样式?
解决方案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选择器冲突的问题...
还有其他的想法吗?
float:none
、position:static
等属性。您不能假设任何外部第三方样式表中可能存在的内容。事实上,有些小部件甚至会使用内联样式来确保您无法破坏小部件布局(例如Constant Contact电子邮件注册)。 - Marc Audet.my-unique-tag-item
,就可以解决问题。关键是要确保所有标签都有相应的CSS规则,选择器具有足够高的特异性,例如.my-unique-tag-container .my-unique-header a
等等。 - Marc Audet