Html 浏览器如何解决冲突类?
我知道可以在HTML中的一个元素上指定多个类:Html 浏览器如何解决冲突类?,html,css,dom,Html,Css,Dom,我知道可以在HTML中的一个元素上指定多个类: <div class='one two'>Text</div> 结果是否取决于类的指定顺序?例如,我是否可以合理地期望上面的div显示为蓝色文本和绿色背景,因为two类变为第二个求值类,覆盖background color属性 取决于样式表的顺序。以后的样式声明优先。您可以反转两行css以查看 如果选择器具有(与此处相同),则以后面指定的为准。在这种情况下,背景应为绿色,但字体颜色为蓝色 从: 最后,指定按顺序排序:如果
<div class='one two'>Text</div>
结果是否取决于类的指定顺序?例如,我是否可以合理地期望上面的div显示为蓝色文本和绿色背景,因为two
类变为第二个求值类,覆盖background color
属性
取决于样式表的顺序。以后的样式声明优先。您可以反转两行css以查看 如果选择器具有(与此处相同),则以后面指定的为准。在这种情况下,背景应为绿色,但字体颜色为蓝色
从:
最后,指定按顺序排序:如果两个声明具有相同的
重量、来源和特异性,后者规定获胜。
导入的样式表中的声明被视为在任何
样式表本身中的声明
您用来设置这些样式的称为“级联样式表”。级联部分意味着它就像瀑布,未来的规则建立在(或覆盖)以前的规则之上。因此,第二条规则将覆盖背景色属性,但仍将保留字体颜色
(但要注意优先级。与类无关的规则相比,与id无关的规则具有更高的优先级,无论它们位于何处。)CSS具有非常明确的优先级顺序 在这种情况下,如果所有其他内容都相同且优先级相同,浏览器应选择样式表中最后定义的样式 在您给出的示例中,这意味着
div.two
样式将覆盖div.one
,其中在两者中定义了相同的属性
顺便说一句,这也是允许您在同一选择器中使用相同特性定义多个样式以支持不同浏览器功能的相同功能。例如,某些浏览器可能不支持rgba颜色,因此您可以执行以下操作:
.myclass {
background: rgb(200, 54, 54);
background: rgba(200, 54, 54, 0.5);
}
所有浏览器都将选择其支持的最后一个后台
声明,因此支持rgba
的浏览器将选择第二个,而不支持的浏览器将选择第一个
这也是为什么在使用供应商前缀样式时,还应在前缀版本之后指定非前缀版本的原因,以便当供应商的浏览器确实开始支持样式的非前缀版本时,您可以确保它将使用它而不是前缀版本(可能不支持最终版本的所有功能)。结果取决于类的指定顺序 下面是一篇关于CSS规则执行顺序的好文章:
阅读有关特异性的内容:
简短回答:如果两个选择器具有相同的特异性,则最后一个被声明的选择器获胜。更多的问题是应该产生什么样的结果(wrt标准等)当然,我可以在我试图支持的所有8种浏览器上测试它,但这些信息可能在两年后就不再有用了。请阅读:@FlyBy-我不同意;你没有看到人们在这里回答问题的速度有多快吗?;)据我所知,这取决于编写的css文件中类的顺序。在这种情况下,无论divs类是
one-two
还是two-one
,它都应该是绿色背景上的蓝色文本。如果您更改css并在div.one
之前定义div.two
,您将得到红色背景上的蓝色文本…名称“cascading”应该提供一个强烈的提示--“last”将优先于行驶属性。子级未指定的任何内容都由父级决定,一直到页面自己的样式表和默认浏览器样式。颜色属性除外。因此,将供应商前缀样式放在后面的问题是,在支持两个版本的浏览器上,它将使用前缀样式(支持的版本中较不“标准”的版本)? 我不知道为什么这本身就是个问题。@Steven Lu-re供应商前缀:问题是,前缀版本可能不支持最终版本所支持的所有功能,但为了向后兼容,浏览器的更高版本可能会继续支持前缀版本。但如果可能的话,您希望非前缀版本优先。感谢您提供有关使用优先顺序在不支持功能的情况下提供回退的提示。
.myclass {
background: rgb(200, 54, 54);
background: rgba(200, 54, 54, 0.5);
}