什么是CSS优先级

所谓CSS优先级,即是指CSS样式在浏览器中被解析的先后顺序;浏览器是通过优先级来判断哪些属性值与元素最相关以决定并应用到该元素上的。优先级就是分配给指定的CSS声明的一个权重,它由匹配的选择器中的每一种选择器类型的数值决定。

什么是CSS优先级

本教程操作环境:windows7系统、CSS3版、Dell G3电脑。

一、优先级

所谓CSS优先级,即是指CSS样式在浏览器中被解析的先后顺序。

浏览器根据优先级来决定给元素应用哪个样式,而优先级仅由选择器的匹配规则来决定。

立即学习“前端免费学习笔记(深入)”;

内联》ID选择器》伪类=属性选择器=类选择器》元素选择器【p】》通用选择器(*)》继承的样式

二、优先级计算:

上面说了,优先级仅有选择器决定,怎么个计算方法呢?

a、用a表示选择器中ID选择器出现的次数

b、用b表示类选择器,属性选择器和伪类选择器出现的总次数。

c、用c表示标签选择器、伪元素选择器出现的总次数

d、忽略通用选择器

e、然后计算a*100+b*10+c的大小,这就是优先级了。

权重:内联样式1000》id选择器100》class选择器10》标签选择器1

Note:

ID选择器「如:#header」,Class选择器「如:.foo」,属性选择器「如:[class]」,伪类「如::link」,标签选择器「如:h1」,伪元素「如::after」,选择器「*」

接下来从以下几点深入分析优先级。

1、优先级计算无视DOM树中的距离

开头说明的例子:

body h1 {  color: green;}html h1 {  color: purple;}

Here is a title!

body h1和html h1的优先级相同。

【推荐教程:CSS视频教程 】

2、伪类选择器,属性选择器和class选择器的优先级一样

伪类=属性选择器=类选择器

所以后面的会覆盖前面的。

    :focus {        color: red;    }    [class] {        color: blue;    }    .classtest {        color: green;    }
什么颜色文字

如下图类选择器在后,所以覆盖前面的样式,所以文字绿色。

什么是CSS优先级

如下图属性选择器在后,会覆盖前面的类选择器样式,所以文本蓝色。

什么是CSS优先级

focus同理,只有放后面才生效,否则会被伪类和属性选择器覆盖

什么是CSS优先级什么是CSS优先级

3、基于类型的优先级

优先级是根据选择器的类型进行计算的。

举例:属性选择器尽管选择了一个ID但是在优先级计算中还是根据类型计算,因此即使选择的是相同的元素,但ID选择器有更高的优先级,所以* #foo设置的样式生效。

* #foo {  color: green;}*[id="foo"] {  color: purple;}

I am a sample text.

什么是CSS优先级

4、:not伪类不参与优先级计

【:not】否定伪类在优先级计算中不会被看做是伪类,但是,会把:not里面的选择器当普通选择器计数。这句话有点不好理解,其实就是忽略掉:not,其他伪类(如:hover)参与CSS优先级的计算,但是「:not」不参与计算。

举个例子:

div.outer p {  color:red;}div:not(.outer) p {  color: blue;}

This is in the outer div.

HTML5手机验证抽奖领券代码
HTML5手机验证抽奖领券代码

HTML5手机验证抽奖领券代码,这个要先输入手机号码,才能够进行抽奖,这样也会知道是谁中了什么奖,个人觉的这样的效果是非常不错的,创想鸟推荐下载!

HTML5手机验证抽奖领券代码 86
查看详情 HTML5手机验证抽奖领券代码

This text is in the inner div.

什么是CSS优先级

该例子中,选择器p.outer p 和选择器p:not(.outer) p的优先级是相同的,:not被忽略掉了,:not(.outer)中的.outer正常计数。

如果调换位置,inner元素会变成红色

    div:not(.outer) p {        color: blue;    }    div.outer p {        color:red;    }

什么是CSS优先级

5、优先级计算不升位

不要把权重简单的作为10进制数字比较其大小。

a=1的规则优先级将永远高于其他a=0的。

比如一个选择器的a>0,b=0即使另外一个选择器的a=0,b=12,c=12那么前者的权重依然更大!!

为证明我做了一个不现实的demo

#test{ /*a=1*/    color: blue}div.classtest div.classtest div.classtest div.classtest div.classtest div.classtest div.classtest div.classtest div.classtest div.classtest div.classtest div.classtest{ /*b=12*/color:green;}
什么颜色文章

可见文本颜色还是蓝色!!

同样有一个带有10个id选择器的规则,优先级也不如内联样式。

总之优先级的计算不是基于十进制升位的,后面的数优先级再高也不能升到前一位。

6、其他

下面再给出一个经典的例子,自己计算一下就明白了。

Examples:*               /* a=0 b=0 c=0 -> specificity =   0 */LI              /* a=0 b=0 c=1 -> specificity =   1 */UL LI           /* a=0 b=0 c=2 -> specificity =   2 */UL OL+LI        /* a=0 b=0 c=3 -> specificity =   3 */H1 + *[REL=up]  /* a=0 b=1 c=1 -> specificity =  11 */UL OL LI.red    /* a=0 b=1 c=3 -> specificity =  13 */LI.red.level    /* a=0 b=2 c=1 -> specificity =  21 */#x34y           /* a=1 b=0 c=0 -> specificity = 100 */#s12:not(FOO)   /* a=1 b=0 c=1 -> specificity = 101 */

如果确实有棘手的情况,可以在Firebug中查看优先级。Firebug中按照优先级排序显示规则,将优先级更高的规则显示在最上面,并将被覆盖的规则用删除线划掉。

什么是CSS优先级

三、!import

为什么没有把!import放在优先级顺序中,因为官方认为!import和优先级没一点关系。

不建议使用!import

Never 绝不要在全站使用!import。

Only 只在需要覆盖全站或外部 css(例如引用的 ExtJs 或者 YUI )的特定页面中使用   !important

Never 永远不要在你的插件中使用 !important

Always 要优先考虑使用样式规则的优先级来解决问题而不是 !important

选择元素时尽量不要多选,不要放宽选择器的范围。因为范围越小,越具有针对性,优先级越高。

1、什么场合使用!import?

使用!import的场合也是有的,但是是在没有别的解决方案的时候。

比如需要覆盖内联样式,因为内联样式的优先级最高,只能用!import去覆盖内联样式。

还有一种情况

#someElement p {    color: blue;}p.awesome {    color: red;}

some text

在外层有 #someElement 的情况下,你怎样能使 awesome 的段落变成红色呢?这种情况下,如果不使用 !important ,第一条规则永远比第二条的优先级更高。这也是没有别的办法,如果用内联结果只会更糟糕。

2、怎样覆盖已有!import规则

a、再加一条!import的css语句,将其应用到更高优先级的选择器(在原有基础上添加额外的标签、类或者ID选择器)。

几个更高优先级选择器的例子:

table td    {height: 50px !important;}.myTable td {height: 50px !important;}#myTable td {height: 50px !important;}

b、选择器一样,但添加的位置在原有声明后面。因为相同优先级,后边定义的声明覆盖前面的。

相同选择器的例子:

td {height: 30px !important;}td {height: 50px !important;}

更多编程相关知识,请访问:编程视频!!

以上就是什么是CSS优先级的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1617989.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 06:05:11
下一篇 2025年12月24日 06:05:30

相关推荐

  • 使用CSS3实现简单时间轴效果(附代码)

    本篇文章分享一个使用css3实现的时间轴效果。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 【推荐教程:CSS视频教程 】 最近打开电脑就能看到一个实战路径图页面,效果是这样的: 立即学习“前端免费学习笔记(深入)”; 有点像时间轴的赶脚,而且每一块鼠标悬浮上去也有下拉效果展开介…

    2025年12月24日
    000
  • css3中怎么调节透明度

    css3中调节透明度的方法:可以使用opacity属性来设置透明度,如【opacity:0.5; filter:Alpha(opacity=50);】,表示将元素透明度设置为0.5。 本文操作环境:windows10系统、css 3、thinkpad t480电脑。 属性介绍: opacity 属性…

    2025年12月24日
    000
  • 浅谈css3 device-width和width之间的差异

    本篇文章和大家谈谈css媒体查询中device-width与width的区别。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 【推荐教程:CSS视频教程 】 1.device-width 定义:定义输出设备的屏幕可见宽度。 立即学习“前端免费学习笔记(深入)”; 不管你的网页是在s…

    2025年12月24日
    000
  • css3怎么设置元素背面不可见

    在css3中,可以利用backface-visibility属性,通过给元素添加“backface-visibility: hidden;”样式来设置背面不可见。backface-visibility属性可以设置当元素不面向屏幕时是否可见。 本教程操作环境:windows7系统、CSS3&&…

    2025年12月24日 好文分享
    000
  • 详细了解CSS3中的border-image-slice属性

    【推荐教程:CSS视频教程 】 首先我们来了解一下它是干嘛的。 说明: 文档说明:它是控制图像边界向内偏移的。 what???这是嘛意思啊?根本看不懂!!!好的,我们先不要急,我们在看看: 立即学习“前端免费学习笔记(深入)”; 基础知识: 当我们通过 border-image-source 引用边…

    2025年12月24日 好文分享
    000
  • 浅谈CSS3 Grid网格布局(display: grid)的用法

    【推荐教程:CSS视频教程 】 我们一起来学习一下CSS 的Grid布局是如何使用的 通过这篇文章以后等我们自己做UI库的时候就会多了一种做法。 我们来使用CSS Grid创建一个超酷的图像网格图,它可以根据屏幕的宽度来改变列的数量。最精彩的地方在于:所有的响应特性被添加到了一行css代码中。这意味…

    2025年12月24日 好文分享
    000
  • 聊聊你可能不了解的CSS属性函数 attr()

    本篇文章带大家了解一下css属性函数 attr()。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 属性函数 attr() 用于获取HTML元素里面的属性值,并用于样式中,但目前暂时只能应用于CSS元素中的伪元素。 例子 实现一个Tooltip 立即学习“前端免费学习笔记(深入)”…

    2025年12月24日 好文分享
    000
  • css3字体可以模糊吗

    css3字体的可以模糊的;开发者可以使用CSS3中的filter属性来实现字体模糊效果,filter语法是“filter: blur(px);”,其filter属性定义了元素的可视效果。 本教程操作环境:windows7系统、CSS3版本,DELL G3电脑。 推荐:css视频教程 我们可以使用CS…

    2025年12月24日
    000
  • vs2010 如何支持css3

    vs2010支持css3的方法:首先下载CSS 3 Intellisense Schema并安装;然后用“Win+R”输入“regedit”打开注册表;接着将css30.xml拷贝到“schemasCSS”中;最后重启VS2010即可。 本教程操作环境:windows7系统、vs2010&&…

    2025年12月24日
    000
  • CSS3实现文字折纸效果的方法(代码示例)

    本篇文章给大家通过示例介绍一下使用css3来实现文字折纸效果的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下,希望对大家有所帮助。 CSS3文字折纸  代码如下,复制即可使用: html { height: 100%;}body { background: -webkit-lin…

    2025年12月24日
    000
  • css3给背景图层加颜色遮罩的方法

    (学习视频分享:css视频教程) 在开发中,有时遇到需要给背景层加颜色遮罩的项目,现在特定总结一下给背景图层加颜色遮罩的方法。 方法一:通过定位叠加(注意层级) .wrap1 { position: relative; width: 1200px; height: 400px; background…

    2025年12月24日
    000
  • 使用CSS实现的几种进度条

    (学习视频分享:css视频教程) 进度条是一个非常常见的功能,实现起来也不难,一般我们都会用 div 来实现。 作为一个这么常见的需求, whatwg 肯定是不会没有原生组件提供(虽然有我们也不一定会用),那么就让我们来康康有哪些有意思的进度条实现方式。 常规版 — div 一波流 这是比较常规的实…

    2025年12月24日 好文分享
    000
  • css3代码和css有不同吗

    不同:css3是css技术的升级版本,css3中添加了一些新属性和选择器,可以更好更方便的进行网站的开发,例如圆角、阴影、渐变、媒体查询、“:root”选择器等。css3有兼容问题,有些属性需要添加针对浏览器的前缀以便支持,例“-ms-”。 本教程操作环境:windows7系统、css3版、Dell…

    2025年12月24日
    000
  • css3怎么缩小文字

    css3缩小文字的方法:首先创建一个HTML示例文件;然后定义一个p标签;最后通过“transform:scale(x)”样式实现文字缩小即可。 本教程操作环境:windows7系统、HTML5&&CSS3版本、Dell G3电脑。 推荐:css视频教程 css3缩小文字 trans…

    2025年12月24日
    000
  • css3 menu怎么用

    css3 menu的使用方法:首先下载CSS3Menu工具;然后把产生的HTML和CSS打开;接着将html复制到网页中相应的位置;最后将CSS复制到样式文件里即可。 本教程操作环境:windows7系统、CSS3 Menu v3.8版本、Dell G3电脑。 推荐:css视频教程 CSS3Menu…

    2025年12月24日
    000
  • css3 扇形怎么画

    css3画出扇形的方法:首先创建一个HTML示例文件;然后给指定div添加border-radius属性;最后设置复合属性如“border-radius:80px 0 0;”即可。 本教程操作环境:windows7系统、HTML5&&CSS3版本、Dell G3电脑。 css已经越来…

    2025年12月24日
    000
  • css中resize属性有什么用

    resize属性的作用:指定一个元素是否是由用户调整大小的;若值为“none”则用户无法调整元素的尺寸,值为“both”则可调整元素的高度和宽度,值为“horizontal”则可调整元素的宽度,值为“vertical”则可调整元素的高度。 本教程操作环境:windows7系统、css3版本、Dell…

    2025年12月24日
    000
  • 五种常用CSS3网页小效果分享

    本篇文章给大家分享5种很常用的css3网页小效果。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 教程推荐:css视频教程 第一种效果: 由于录制gif图片会掉帧,所以看起来不流畅,很卡,但其实实际效果还是不错的,有弹性一些。 立即学习“前端免费学习笔记(深入)”; html代码:…

    2025年12月24日 好文分享
    000
  • css3有那些内置函数

    css3内置函数有:calc()、cubic-bezier()、hsl()、hsla()、linear-gradient()、radial-gradient()、rgba()、var()、max()、min()、cycle()等等。 本教程操作环境:Windows7系统、css3版本、Dell G3…

    2025年12月24日
    000
  • css3兼容ie8吗

    css3中只有小部分兼容ie8,而ie8也只支持非常小的一部分css3,比如“box-sizing:border-box”;但还有很多CSS3特性ie8及以下版本是不支持的,比如样式选择器、圆角、阴影等。 本教程操作环境:Windows7系统、css3&&internet explo…

    2025年12月24日 好文分享
    000

发表回复

登录后才能评论
关注微信