浅谈CSS优先级机制(一)

初次写随笔,如果有哪个地方不足还望大神指点改正,下面我来谈谈我对于CSS优先级的了解吧。

CSS优先级,通俗的理解就是你给元素等一堆属性描述,然后最后到底是哪个描述作为最终显示的效果的规则或机制(个人理解)。以下我将分为几个点来谈谈优先级的确定。

1.引入方式:

CSS引入的方式,我目前只知道四种:内联式内嵌式导入式链接式(当然网上的说法名称不一,理解就好)。

各种引入方式的用法我在这里就不再多说了。以上我所按顺序罗列的四个方式是理论上的优先级顺序,也就是说,我使用内联式引入的css代码作用优先级大于内联式,其次是导入式,再次是链接式,简单记:内联式>内嵌式>导入式>链接式。但实际上可就不一样了,比如下列代码:

link标签在style标签前:

1 <link rel="stylesheet" href="Untitled-1.css" type="text/css"/>
2 <style type="text/css">
3 #p1{
4     color:#6C6;}
5 </style>

Untitled-1.css的代码为:

1 #p1{  color:#F0C;  }

结果,style标签的css代码胜出了,取得了优先级。

如果,你将link标签和style标签的顺序调换一下,你猜到底是哪个取得优先级呢?

答案是link标签引入的CSS文档胜出了。(以上你将style标签里的代码换成@import(导入式)也是如上情况)。

加入你再使用如下代码:

1 <p id="p1" style="color=#fff">这里测试一下CSS的优先级</p>

结果,p标签里的style的描述胜出了(内联式)。

由此我总结一下根据引入方式判断优先级的方法:针对某一对象,看看描述该对象的css代码是否最接近,最靠近于它(就近原则),最接近于它的优先级最高(内联式是在引入方式最高的),内嵌式、导入式、链接式还要看情况判断。

2.特殊性:

谈到特殊性就必须和选择器挂钩。说简单点,就是我要看看到底哪个选择器更为特殊咯。选择器可以划分为四种:

1.ID选择器;

2.类、伪类、属性及属性值选择器;

3.元素、伪元素选择器;

4.通配选择器。

让我们来瞧瞧上面哪种更为特殊。首先通配选择器针对的是全体对象,没有什么特殊,很一般;元素、伪元素选择器则是针对某些元素而言,其特殊程度高于通配;再看看类、伪类、属性及属性值选择器,就是对某些元素某种状态下的选择,比元素、伪元素选择器特殊点;最后是ID咯,就像一个人的身份证号码,特指一个,最为特殊。根据我以上的描述,我来给各种选择器按特殊程度排下序:ID选择器>类、伪类、属性及属性值选择器>元素、伪元素选择器>通配选择器。特殊性更强的就可以取得优先。

例如下列代码:

 1 <!doctype html>
 2 <html>
 3 <head>
 4 <meta charset="utf-8">
 5 <style type="text/css">
 6 #p1{
 7     color:#f00;
 8 }
 9 p[id="p1"]{
10         color:#ff0;
11 }
12 p{
13         color:#6C6;
14 }
15 *{
16         color:#00f;
17 }
18 </style>
19 <title>无标题文档</title>
20 </head>
21 <body>
22 <p id="p1">这里我要测试一下样式的优先级</p>
23 </body>
24 </html>

结果,p标签里的文字会显示为红色(即使属性值选择器中的属性是id,也是按照以上顺序)。

怎么?很简单?我来一道更为复杂点的,看下列代码:

 1 <html>
 2   <head>
 3     <style type="text/css">
 4         #P1 p {
 5              color:#F00;  /* 红色 */
 6         }
 7
 8         #P1 .red em {
 9              color:#00F; /* 蓝色 */
10
11         }
12
13         #P1 p span em {
14              color:#FF0;/*黄色*/
15         }
16     </style>
17   </head>
18   <body>
19      <div id="P1">
20         <p class="red">red
21            <span><em>em red</em></span>
22         </p>
23         <p>red</p>
24      </div>
25   </body>
26 </html>

来猜猜em标签里面的p标签的文字是什么颜色的?

嘿嘿,答案是蓝色!那为什么会这样呢?

其实,以上四种选择器是有权重之分的,我们可以使用权重值描述他们的权重,具体如下:

1.ID选择器:0,1,0,0;

2.类、伪类、属性及属性值选择器:0,0,1,0;

3.元素、伪元素选择器:0,0,0,1;

4.通配选择器:0,0,0,0。

来,我们来分析一下以上代码,#P1 p{color:#f00;}它的权重值这样计算:0,1,0,0+0,0,0,1=0,1,0,1;

#P1 .red em{color:#00f;}它的权重值:0,1,0,0+0,0,1,0+0,0,0,1=0,1,1,1;

#P1 p span em{color:#ff0;}它的权重值:0,1,0,0+0,0,0,1+0,0,0,1+0,0,0,1=0,1,0,3;

所以,#P1 .red em{color:#00f;}胜出,最后显示结果为蓝色。

再补充一下:如果权重值为0,1,0,0和权重值为0,0,1,7的到底哪个优先呢?答案是0100。其中的规则就是:看最高位(左边),最高位相同再往下一位看。

好,那暂时先讲到这,很累想休息一下,更多内容补充请继续看我下一篇文章:浅谈CSS优先级(二)。

以上内容有什么缺漏之处还望大神指点改正,留下您的评论,谢谢!

时间: 2024-10-25 01:55:58

浅谈CSS优先级机制(一)的相关文章

转:浅谈CSS在前端优化中一些值得注意的关键点

前端优化工作中要考虑的元素多种多样,而合理地使用CSS脚本可以在很大程度上优化页面的加载性能,以下我们就来浅谈CSS在前端优化中一些值得注意的关键点: 当谈到Web的“高性能”时,很多人想到的是页面加载时间,但其实性能不仅仅是指加载时间,还包括浏览器性能.网络性能.开发效率.在Web前端开发中,性能是一个非常重要的需要考虑的点.本文将介绍一些开发原则和性能准则,这些都是提高Web前端性能的基础. 1. 开发原则 1.1 编写符合当代浏览器性能的代码如果想提高前端性能,就必须理解浏览器的工作原理,

浅谈CSS盒子模型

[摘要]盒子模型是CSS中的一个重要概念,虽然CSS中没有盒子这个单独的属性对象,但它却是CSS中无处不在的一个重要组成部分.掌握盒子模型的原理和使用方法可以极大地丰富HTML元素的表现效果,同时对于整个HTML文档的布局也会产生很大的帮助和促进.本文尝试在介绍CSS盒子模型基本概念和组成元素属性的基础上,结合个人学习经验对其在网页制作中的实际应用谈一谈自己浅显的观点和看法.[关键词]盒子模型:表现效果:网页布局: CSS是Cascading Style Sheets的缩写,中文意思是层叠样式表

【转】浅谈 CSS 清除浮动的 6 种方法

转载:浅谈 CSS 清除浮动的 6 种方法 在开发网页的时候经常需要用到各种浮动,此时便需要及时的清除浮动,否则将会导致布局出现问题 引出问题: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style> .outer{ border: 1px solid black;

浅谈JavaScript运行机制

浅谈JavaScript运行机制 ? 想要了解一门语言,最好的办法就是了解它的运行机制.掌握了运行机制,能够让我们在开发中少走许多弯路,写出高质量的代码.本文简单介绍什么是JavaScript的运行机制,给刚刚接触JavaScript的小白一个初步的了解,为将来打好基础. 一.JavaScript 代码运行分两个阶段: 1.预解析---把所有的函数定义提前,所有的变量声明提前,变量的赋值不提前 2.执行---从上到下执行(按照js运行机制) 二.JavaScript运行机制的特点 1.JavaS

css 优先级 机制

多重样式(Multiple Styles):如果外部样式.内部样式和内联样式同时应用于同一个元素,就是使多重样式的情况. 一般情况下,优先级如下: (外部样式)External style sheet <(内部样式)Internal style sheet <(内联样式)Inline style 有个例外的情况,就是如果外部样式放在内部样式的后面,则外部样式将覆盖内部样式. 选择器的优先权--->权值 内联样式---1000: ID选择器----100:class选择器---10: 标签

css优先级机制

所谓CSS优先级,即是指CSS样式在浏览器中被解析的先后顺序. 1.important >(内联样式)Inline style  >(内部样式)Internal style sheet >(外部样式)External style sheet (有个例外的情况,就是如果外部样式放在内部样式的后面,则外部样式将覆盖内部样式.) 2.CSS选择器优先级:id选择器优先级 > 类class选择器优先级 > 标签选择器优先级 1.文内的样式优先级为1,0,0,0,所以始终高于外部定义.

浅谈css中选择器的优先级

学习web前端,主要学习的课程html5,css,js,ajax等一些基本的编程语言,当然这是一门高深的学问.而这篇文章主要是谈谈我对css中选择器优先级的一些简单的理解与看法,希望对您的学习提供一些帮助.好了,废话不多说了,让我们开始进入主题吧. css中文解释是“层叠式样式表”,在这里我要说一下,所谓层叠样式表的意思就是说我们可以给一个标签或者文本内容同时添加许多种样式,简单点说就是可以通过多种方式去支配同一个东西.那么就会出现这样的问题了——选择优先级的问题.就是谁的属性能起到控制的最终目

浅谈css position属性

今天来谈一下css的position属性,刚学的时候对定位还是有点不太了解,看了很多视频和文档,但是还是没有真正的了解,要做到真正的了解,还是需要多去实现. 简单的来说,position就5个属性,在网页布局中中会经常使用到,怎么单个用,怎么搭配起来用,能够用的好的人我相信并不多. 那它一共就static | relative | absolute | static | fixed | inherit五大熟悉,但是后面的3个属性就用的比较少,现在来讲讲他们的特点. 我显示分别测试了将一个盒子先后

浅谈 css 之 position用法

在 css中, position 属性有四个值可用: static(默认值).absolute.relative.fixed. relative:相对定位(相对于自身进行在常规流中的位置进行定位,保留自身原始的位置) absolite: 1.相对于自身的包含块定位: 2.寻找包含块的规则:从自身网上寻找祖先元素,寻找到的第一个position为非static修饰的祖先元 素的内边距边界 就是当前绝对定位元素的包含块:如果没有的话,则相对于 html进行定位: 3.完全脱离文档流: 4.displ