官方表述的CSS样式优先级如下:

通用选择器(*) < 元素(类型)选择器 < 类选择器 < 属性选择器 < 伪类 < ID 选择器 < 内联样式

那么,我们来举个例子

html代码:

<div class="img-div">
<img src="data:images/icon.png" class="img" id="img" alt="img" style="width:50px" />
</div>

引入一个style.css样式:

<link type="text/css" rel="stylesheet" href="css/style.css" />

在style.css样式中写入

*{width:100px}
.img{width:400px;}
img[alt="img"] {width:300px}
img:hover{width:350px}
img{width:450px}
#img{width:250px;}

打开html可以发现

图1 ↑

可见内联式的样式权重要高于外部引用,那么我们把内联的style样式去掉,图片显示大小如图2:

图2↑                           图3↑                              图4↑

同样是外部引用的样式,ID比其他的都要优先,把#img的样式去掉,效果如图3:效果是引用了属性选择器宽度为300px

再把鼠标移动上去效果如图4。

以此类推,分别去掉属性选择器(图4),类选择器(图5),元素选择器(图6)

图4↑                               图5↑                      图6↑

再将外部引用的样式复制到html中嵌入<style></style>:

<style>
*{width:500px}
#img{width:550px;}
img[alt="img"] {width:600px}
img:hover{width:650px}
.img{width:700px;}
img{width:750px}
</style>

发现嵌入式的样式权重都要高于外部引用,最后的优先级如下:

内联

嵌入

外部

内联

1

-

-

ID 选择器

-

2

3

伪类

-

4

5

属性选择器

-

6

7

类选择器

-

8

9

元素(类型)选择器

-

10

11

*

-

12

13

*上述表格从小到大,数值越小越优先!


事实上,CSS内部是按每条样式的权重值来计算优先级的,各类型选择器所对应的权重值如下:

元素, 伪元素: 1 – (0,0,0,1)
类, 伪类, 属性: 1 – (0,0,1,0)
ID: 1 – (0,1,0,0)
内联样式: 1 – (1,0,0,0)

也就相当于:

  1. 第一等:代表内联样式,如: style=””,权值为1000
  2. 第二等:代表ID选择器,如:#content,权值为100
  3. 第三等:代表类,伪类属性选择器,如.content,权值为10
  4. 第四等:代表类型选择器伪元素选择器,如div p,权值为1

实例:

<div class="img-div" id="img-div">
<div id="img-div1">
<img src="data:images/u484.png" class="img" id="img" alt="img" />
</div>
</div>
#img-div #img-div1 #img{width:300px}//300
#img-div #img{width:200px}//200
#img{width:150px;}//100

显示结果:


!important修改权重

如非特殊情况,慎用!important。因为使用!important会扰乱原本层叠和权重产生正常的作用顺序,使后期维护带来麻烦。

css样式优先级问题的更多相关文章

  1. CSS 样式优先级

    首先,选择器优先级顺序 优先级逐级增加的选择器列表: 通用选择器(*) 元素(类型)选择器 类选择器 属性选择器 伪类 ID 选择器 内联样式 !important 规则例外,该样式声明会覆盖CSS中 ...

  2. CSS样式优先级

    关于CSS样式优先级 一般情况下: [1位重要标志位] > [4位特殊性标志] > 声明先后顺序 !important > [ id > class > tag ] 使用 ...

  3. 强制改变css样式优先级

    .list{ left:20px!important; } css !important作用是提高指定CSS样式规则的应用优先权. !important是CSS1就定义的语法,作用是提高指定样式规则的 ...

  4. css样式权重优先级,css样式优先级

    原文:http://www.bkjia.com/Javascri... 样式选择器权重优先级: important > 内嵌样式 > ID > 类 > 标签 | 伪类 | 属性 ...

  5. 权重和层叠规则决定了CSS样式优先级

    一.基本的优先级规则 比较同一级别的个数,数量多的优先级高,如果相同即比较下一级别的个数,至于各级别的优先级如下: important > 内联 > ID > 类 > 标签 | ...

  6. 关于CSS样式优先级

    一般情况下: [1位重要标志位] > [4位特殊性标志] > 声明先后顺序 !important > [ id > class > tag ] 使用!important可 ...

  7. css样式优先级计算规则

    css样式的优先级分为引入优先级和声明优先级. 引入优先级 引入样式一般分为外部样式,内部样式,内联样式. 外部样式:使用link引入的外部css文件. 内部样式:使用style标签书写的css样式. ...

  8. 通过!important设置css样式优先级

    CSS写在不同的地方有不同的优先级,一般 .css文件中的定义 < 元素style中的属性,但是如果使用!important,则会变得不一样,使用!important的css定义是拥有最高的优先 ...

  9. css样式优先级和权重问题

    内联样式: <div style="font-size: 12px;">姓名</div> 外部样式: <link rel="styleshe ...

随机推荐

  1. java基础知识 学习 关于URL中传递的参数含有特殊字符

    有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了.下表中列出了一些URL特殊符号及编码                                   ...

  2. C# 使用 StreamWriter 写入数据

    NetworkStream 类.MemoryStream类 和 FileStream 类都提供了以字节为基本单位的读写方法,但是这种方法首先将待写入的数据转换为字节序列后才能进行读写,当操作的是使用字 ...

  3. 面试题: 数据库操作面试 已看1 很典型的sql面试题

    摘要:今天参加了大展公司的一个电话面试,那位先生首先问我查询一个表的问题,条件是:1.一个数据表,有username字段.2.查询数据表中姓名姓张的.姓李的.姓刘的总数,并展现在一张表中.我当时就糊涂 ...

  4. eclipse(java)&nbsp;使用SQL&nbsp;…

    java连接sqlserver2005数据库   首先得下载驱动程序到微软网站下载Microsoft JDBC Driver 4.0 for SQL Server 下载地址 :http://msdn. ...

  5. Bind 远程连接DNS服务器时出现 rndc: connection to remote host closed

    使用命令:rndc -s 192.168.1.2 status 连接远程的bind 搭建的DNS服务器时出现下面的错误:   rndc: connection to remote host close ...

  6. layer常用方法

    弹出层layer的使用 弹出层layer的使用 Intro layer是一款web弹层组件,致力于服务各个水平段的开发人员.layer官网:http://layer.layui.com/ layer侧 ...

  7. 多进程小例子--fork+pipe

    1 #include<stdio.h>  2 #include<unistd.h>  3   4 #define m 6  5 int main()  6 {  7       ...

  8. Linux做脚本定时任务(定时清理日志)

    无论一些面试问题,还是实际应用,都会用到虚拟机的定时任务.现做定时清理日志日志做一总结. 1.查看/etc/crontab文件. linux 系统则是由 cron (crond) 这个系统服务来控制的 ...

  9. 7.19实习培训日志- java进阶

    java进阶 java集合 Collection List ArrayList jdk1.2,异步处理,性能高,线程不安全 Vector jdk1.0,同步处理,性能低,线程安全 Set HashSe ...

  10. 异步和多线程,委托异步调用,Thread,ThreadPool,Task,Parallel,CancellationTokenSource

    1 进程-线程-多线程,同步和异步2 异步使用和回调3 异步参数4 异步等待5 异步返回值 5 多线程的特点:不卡主线程.速度快.无序性7 thread:线程等待,回调,前台线程/后台线程, 8 th ...