selector { | color: red; }
这个竖线其实是CSS中的“命名空间”的一部分,用于指定属性属于哪个命名空间,避免不同命名空间中的同名属性冲突。
例如,HTML中有许多元素都具有”lang”属性,表示元素中包含的语言信息。而在CSS中,大家可能也需要使用类似的属性来控制元素的样式。但是如果不指定命名空间,就有可能会发生冲突。为了解决这个问题,CSS引入了命名空间的概念。
selector { | color: red; | font-size: 16px; } [attr=value] { | color: blue; }
上面的例子中,所有带有竖线的属性都属于一个命名空间,表示这些属性控制的是某一类元素的样式,不同命名空间中的同名属性不会互相干扰。
除了使用竖线,还可以使用其他字符作为命名空间的前缀:
- ^ 表示属性名以命名空间前缀开头
- $ 表示属性名以命名空间前缀结尾
- * 表示属性名包含命名空间前缀
selector { ^color: red; $background: yellow; *-size: 16px; }
最后需要注意的是,命名空间仅仅是CSS规范中的一个概念,实际使用中可以不使用命名空间,而是依靠具体的命名规范来避免属性名冲突。