1、ID 选择符 > 类选择符 > 元素选择符。特指度高的优先级高

2、行内样式 > 内嵌样式 > 链接样式

3、设定的样式 > 继承的样式

特指度的计算:

特指度能够用一个公式 I-C-E 来计算,当中

I 是 ID

C 是 Class

E 是 Element

对于一个 CSS 规则,若选择符中有一个 id,则 I 的值 +1。若选择符中有一个 class ,则 C 的值 +1;若选择符中有一个 element,则 E 的值 +1。

最后。从 I 的值開始比較,比較的规则例如以下伪代码所看到的:

if(a.I > b.I){
a 的优先级高
}
else if(a.I < b.I){
b 的优先级高
}
else{
if(a.C > b.C){
a 的优先级高
}
else if(a.C < b.C){
b 的优先级高
}
else{
if(a.E > b.E){
a 的优先级高
}
else if(a.E < b.E){
b 的优先级高
}
else{
if(a 先于 b 出现){
b 的优先级高
}
else{
a 的优先级高
}
}
}
}

比如:

<div id="redText">
<p>red</p>
<p id="greenText">green</p>
</div> <style>
#redText p{
color: red;
}
#greenText{
color: green;
}
</style>

如上样例所看到的。尽管 greenText 的设置是在后面,但并没有覆盖前面的样式,最后的结果是两个文本都是红色的

我们计算一下两个样式的特指度:

1、#redText p     这个选择符中出现了一次 ID 和一次 Element,所以特指度是 1-0-1

2、#greenText      这个选择符中仅仅出现了一次 ID,所以特指度是 1-0-0

所以第一个的优先级高,不会被后者覆盖

CSS 优先级和特指度的更多相关文章

  1. 一篇文章带你初步了解—CSS特指度

    CSS特指度 说明 这篇博客在在两台电脑上分别完成的,故而有些截图是Firefox,有些是Chrome,有些改动了浏览器的用户样式表,有些没改,但不会影响阅读,特此说明,勿怪. CSS选择器 单个CS ...

  2. CSS学习(三)特指度和层叠

    一.特指度 特制度的一般形式是0,0,0,0 行内样式,第一位的特指度加一 id选择符,第二位的特指度加一 类选择符.属性选择符.伪类,第三位的特指度加一 元素选择符.伪元素,第四位的特指度加一 特指 ...

  3. css选择器及css优先级

    三个css选择器:id选择器#test1{ }.class选择器.test2{ }.标签选择器div{ }对三个div:<div>我是普通div</div>.<div i ...

  4. 关于CSS的优先级,CSS优先级计算

    原则一: 继承不如指定原则二: #id > .class > 标签选择符原则三:越具体越强大原则四:标签#id >#id ; 标签.class > .class CSS优先级权 ...

  5. css 优先级 机制

    多重样式(Multiple Styles):如果外部样式.内部样式和内联样式同时应用于同一个元素,就是使多重样式的情况. 一般情况下,优先级如下: (外部样式)External style sheet ...

  6. z-index、display、selector选择器优先级css优先级面试用到

    z-index:控制元素叠放顺序,哪个z-index数值越大,那个优先被叠放在上面. relative.absolute.fixed这三种情况可以使用z-index. static不可以使用. dis ...

  7. css优先级和层叠

    css优先级和层叠 1.优先级    计算方法:        a.行内样式        b.id选择器的数量        c.类,伪类和属性选择器的数量        d.标签选择器和伪元素选择 ...

  8. 使用background和background-image对CSS优先级造成影响

    在写一个关于背景图的CSS时候发现一个奇怪的现象, 原图: 如下代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitiona ...

  9. CSS优先级算法是如何计算?

    CSS的specificity特性或非凡性,它是一个衡量css优先级的一个标准, 既然的标准就有判定规定和计算方式,specificity用一个四位数来表示, 更像四级从左到右,左的最大级,一级大于一 ...

随机推荐

  1. 在Xcode中手动添加pch文件

    在Xcode中手动添加pch文件: 一: 在工程中新建.pch文件,pch文件名通常用工程名字命名: 二: 在Targets->build Settings->Prefix Header ...

  2. CentOS7配置中文

    CentOS7配置中文 yum install kde-l10n-Chinese -y vim /etc/locale.conf修改为zh_CN.UTF-8 vim /etc/environment添 ...

  3. [转]vs2012 + web api + OData + EF + MYsql 开发及部署

    本文转自:http://www.cnblogs.com/liumang/p/4403436.html 先说下我的情况,b/s开发这块已经很久没有搞了,什么web api .MVC.OData都只是听过 ...

  4. storm之topology的启动

    一个topology的启动包括了三个步骤 1)创建TopologyBuilder,设置输入源,输出源 2)获取config 3)提交topology(这里不考虑LocalCluster本地模式) 以s ...

  5. [javaEE] jsp入门

    Servlet写java代码很好,但是拼接html的时候,非常不方便 JSP可以在html中嵌套java代码,这样在展示的时候,就会比较方便 Tomcat帮我们把jsp的页面翻译成了Servlet去运 ...

  6. JQuery的一些基础知识

    JQuery的核心的一些方法 each(callback) '就像循环$("Element").length; ‘元素的个数,是个属性$("Element"). ...

  7. oauth2.0授权码模式详解

    授权码模式原理 授权码模式(authorization code)是功能最完整.流程最严密的授权模式.它的特点就是通过客户端的后台服务器,与"服务提供商"的认证服务器进行互动. 它 ...

  8. thinkphp中ajax接收参数值

    if(IS_AJAX) { $oldpwd=I('param.oldpwd'); }

  9. express的proxy实现前后端分离

    var express = require('express') var proxy = require('http-proxy-middleware') var app = express() ap ...

  10. JS判断请求来自Android手机还是iPhone手机

    <script type="text/javascript"> var browser = { versions: function () { var u = navi ...