html - 如果多个样式规则应用于一个元素,则优先顺序

标签 html css

在 HTML 中,当多个样式规则应用于一个元素时,优先顺序是什么?

Rules that apply to an element identified by an id
Rules that apply to all elements of a particular class
Rules that apply to one or more specified tags

我认为是 id>class> 标签,对吗?

最佳答案

说明

有很多事情在起作用(像往常一样……),但对您来说重要的顺序是:

  • 使用具有最高特异性的样式
  • 如果多个具有相同的特异性,则使用最新的

选择器的顺序 [和/或 css 的使用,为了完整性](以及它们添加到特异性值的是):

  • 标签
  • 编号
  • 内联样式(通过 style="")
  • !重要
  • tag + !important
  • class + !important
  • id + !important
  • 内联样式 + !important

有测试表明,一个元素/选择器上的 256 类比 id 具有更高的特异性。但在现实生活中,你将主要(如果你曾经“正确”地使用 CSS)处理类的数量 + 在 css 文件中的位置(你不应该使用 #id 来设置样式,因为它没有给你带来优于类和标签的优势大多只用于通用样式)

在此处阅读有关特异性的更多信息:http://coding.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/

例子

HTML:

<div id="johnny" class="walker whisky"> -- </div>

CSS:

/* example one */
div { border-color: red; } // border is red
.whisky { border-color: brown; } // now it's brown
#johnny { border-color: black; } // now it's black
div#johnny { border-color: red; } // it's red again
.walker { border-color: green !important; } // it's green

/* example two */ 
.whisky {border-color: brown; }
.whisky.walker {border-color: green; }
/* green */

/* example two */ 
.whisky.walker {border-color: brown; }
.whisky {border-color: green !important; }
/* green */

希望这对您有所帮助。

关于html - 如果多个样式规则应用于一个元素,则优先顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13376486/

相关文章:

javascript - 如何在一个元素内包含两个单独的 onClick 事件?

javascript - 根据单元格内容更改表格行的文本颜色,仅使用 Css

css - div 内容溢出,内联 block 无用

html - 表格位置文本 css

javascript - 如何覆盖库的属性? (colResizable.js)

javascript - 单击元素时更改 URL 和 CSS

jquery - 每2秒滑动一个div

php - 很简单的mod_rewrite问题

CSS 变换 3D 在 PC 和移动设备上看起来不同(表面交叉)

javascript - 隐藏谷歌丰富网页摘要