网站开发外包费用会计科目,看房子的网站,今天31个省新增最新消息视频讲解,模仿淘宝详情页做网站CSS 选择器#xff08;Selector#xff09;的权重#xff08;Specificity#xff09;决定了对于同一元素#xff0c;到底哪一条 CSS 规则会生效。且仅有当多条 CSS 规则都对同一元素声明了相应样式时#xff0c;才会涉及到权重计算的问题。 选择器的分类 正式计算选择器权… CSS 选择器Selector的权重Specificity决定了对于同一元素到底哪一条 CSS 规则会生效。且仅有当多条 CSS 规则都对同一元素声明了相应样式时才会涉及到权重计算的问题。 选择器的分类 正式计算选择器权重之前先来看选择器是如何被分类的。 因为 CSS 选择器众多在计算时这些选择器被归为了三大类按其权重由大到小依次为 ID 选择器比如 #dialog元素类型选择器type selector和伪选择器pseudo selector比如 h1::before。类名选择器class selector属性选择器attribute selector及伪类选择器pseudo class selector 比如 .btn[typeradio]:hover其中两类特殊的样式会影响权重的生效 一是内联样式stylecolor:red。内联样式始终拥有最高的权值会覆盖样式文件的样式。另一个是 !important 修饰词。应用该修饰词的规则权重会高于正常的规则但不推荐。其他选择器 全局选择器*选择连接符,,-, ,||伪类反向选择器:not()以上对权重的计算没影响即不参与计算。 权重的计算 根据以上对选择器的分类对任意样式规则可得到 (W,X,Y,Z) 这么一个值其中 W标识是否有内联样式XID 的数量Y类名选择器属性选择器及伪类选择器的数量Z元素选择器伪选择器 的数量对于同一元素身上的多条样式对第条样式规则计算出上面四个值然后从左往右逐个比较数字大的胜出。 如果权重全部一样后面的规则会生效。 示例 示例一 考察下面的示例代码 ul classlistli classlist-itemitem1/lili classlist-itemitem2/lili classlist-itemitem3/li
/ul ul li {color: blue
}.list .list-item {color: red;
} 先来分析第一条规则 ul li 包含 2 个元素类型选择器得到的权值为 (0,0,0,2)。 再看 .list .list-item包含 2 个类名选择器权值为 (0,0,2,0)。 两者一对比在进行到第三位时后面的 20所以后者胜出它的样式将生效列表颜色为红色。 示例二 nav idnavulli1/lili2/lili3/li/ul
/nav nav#nav li:hover{color: purple;
}li: nth-child(2):hover{color:pink;
} 首先 nav#nav li:hover 规则中有 1 个 ID 选择器2 个元素选择器以及 1 个伪类选择器权值为 (0,1,1,2) li: nth-child(2):hover 中2 个伪类选择器和 1 个类型选择器权值为 (0,0,2,1) 一对比前者胜出因为比较到第二位时前者是 1 后者是 0。只要有大于的情况后面的值就不用比较了。 因此列表中元素在 hover 时会是紫色purple。 相关资源 MDN - SpecificitySpecifishity :: Specificity with FishCSS SpecificitySpecifics on CSS Specificity转载于:https://www.cnblogs.com/Wayou/p/css-specificity-calculation.html