CSS中的选择器优先级顺序的详细介绍

特殊性是什么

在对一个HTML元素应用CSS样式时,常常有很多种方法可以找到元素,比如:

这是一个段落

#container p { color:red } p p { color:green } p { color:yellow }

可见,如果要作用到一个HTML元素的方法有很多,远远不止这些。那么如果一个元素被应用了很多同样的样式,最终会显式到哪一个样式呢?CSS对于多个选择器的优先性使用了一个叫做特殊性的方式。

CSS特殊性
选择器的特殊性分为4个等级,a b c d,从左到右,越左边的越优先, 如果一个选择器规则有多个相同类型选择器,则+1。
如果是HTML内样式,那么特殊性最优先,a=1
id选择器的特殊性是b,
类选择器、伪类选择器、属性选择器为c
标签选择器、伪元素选择器为d
先来说说一些选择器类型:
1.id选择器

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

#myid { ... }

2.类选择器

.myclass { ... }

3.标签选择器

p { ... }

4.属性选择器

[title="mytitle"] { ... }

由于大多数文档例如W3CSCHOOL可能并没有详细说明,或许不少人认为属性选择器是这样的  p[title=”mytitle”] 或#id[title=”mytitle”]等等,这样是属性选择器,严格来说,这样的并非单纯的属性选择器,而是由id选择器、标签选择器等等和属性选择共同组成的。
5.伪类选择器

p:hover { ... }

常见的伪类选择器有:
链接伪类,:link, :visited,用于锚元素。
动态伪类,:hover,:focus,:active,用于任何选择。
6.伪元素选择器

p::after { ... }   p::before { ... }

伪元素和伪类是完全不同的概念,之所以称之为伪元素,因为其确实可以生成一个虚拟的HTML元素,只不过伪元素无法被DOM获取到。
伪元素的应用有很多,最常见的比如::after清除浮动:

  • A
  • B
li { float:left } ul::after { content: ""; display: block; clear: both }

CSS特殊性示例
下面是一些CSS选择器的特殊性示例:

选择器 特殊性 以10为基数的特殊性

style="color: red"1, 0, 0, 01000#id {}0, 1, 0, 0100#id #aid0, 2, 0, 0200.sty {}0, 0, 1, 010.sty p[title=""] {}0, 0, 2, 020p:hover {}0, 0, 1, 010p {}0, 0, 0, 11ul::after {}0, 0, 0, 11p p {}0, 0, 0, 22

如果两个规则的特殊性相同,那么后定义的会覆盖先定义的。

CSS重要性
CSS中还有一种东西可以无视特殊性,那就是!important,使用此标记的CSS属性总是最优先的。

#id { color: red }   .class { color: yellow !important }

第二个样式会优先于第一个样式,即使id选择器的特殊性高于类选择器。
如果两个属性都有 !important 那么由特殊性来决定优先级。

#id { color: red !important }   .class { color: yellow !important }

结果是第一个样式优先于第二个样式。
IE6对 !important 的支持并不完全,在IE6中,如果一个选择器中先定义了 !important 属性,后面又定义了一个同样的不带 !important 的属性,那么!important 会失效。

p {     color: yellow !important;       color: red;   }

在IE6中,可就没办法黄了,还是见点血吧!
IE6/7还可以在 !important 后面加点料,也不会失去味道,但是建议别这么无聊!

div {     color: yellow !important you are dead;   /* IE6/7依然有效 */  }

以上就是CSS中的选择器优先级顺序的详细介绍的详细内容,更多请关注创想鸟其它相关文章!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月23日 21:07:13
下一篇 2025年12月12日 15:01:38

相关推荐

  • 在CSS中Box Model盒模型中的边距图文详解

    盒模型由以下css属性组成: 0.内容(content)1.padding 内边距2.border 边框3.margin 外边距下面有一个最常见的例子,虚线不属于盒模型,用于标识范围。 .box { width: 200px; height: 200px; background-color: gre…

    2025年12月23日
    000
  • 详解Less框架中将CSS强制打包到单个文件中的技巧

    在使用less预编译框架时我们总是希望能高效管理css文件的部署结构,这里我们就来看一个在less框架中将css强制打包到单个文件中的技巧,需要的朋友可以参考下 less 在import 其它less文件的时候会将其合并到单个文件中。但是当引入css 文件时,默认不会将css 合并进来 。使用inl…

    好文分享 2025年12月23日
    000
  • CSS的box-align属性控制子元素布局实例分析

    box-align 说明 box-align属性, 指定元素内子要素纵方向排列指定时使用。容器元素比子元素大很多的情况下,使用box-align属性,可以指定子元素的排序顺序,并且可以指定子元素如何表示。还有,纵方向排列一说,可以解释为元素内子元素的配置方向默认值为水平,使用此属性后垂直方向进行排列…

    2025年12月23日
    000
  • 详解CSS绘制三角形箭头图案技术解析

    最近我想修改一下这个网站,我想在上面放置一个提示框。这是很容易,但我想让提示框上有一个三角形的箭头。可是,一想到这需要使用图片,并且各种颜色,各种方向的箭头要准备无数种,这几乎是一种灾难。幸运的是,mootools的核心开发着darren waddell告诉了我一个非常棒的技术:用css绘制三角形箭…

    好文分享 2025年12月23日
    000
  • CSS实现商品图片点击放大效果的方法

    本文实例为大家分享了纯css实现图片点击放大带关闭按钮的图片特效代码,效果非常棒,供大家参考,具体内容如下 源码下载、演示 实现代码: CSS代码: .product { width:320px; height:150px; border:1px solid #ddd; margin:0 auto;…

    2025年12月23日
    000
  • 使用CSS的@supports标记来检测浏览器的兼容情况分析

    @supports可以用来检查浏览器是否支持某css属性,并且可以通过javascript进行控制,以下就来详细说明使用css的@supports标记来检测浏览器的兼容情况的方法 CSS @supports标记在CSS代码里跟@media查询语句的语法相似: @supports(prop:value…

    好文分享 2025年12月23日
    000
  • 详解CSS的overflow属性防止float撑开div的使用方法

    我们在使用float设定浮动元素的时候经常会遇到撑破p的情况,其中一种解决方法即是利用overflow: hidden,这里我们就来看一下使用css的overflow属性防止float撑开p的方法: 许多应征前端工程师的人,在面试时都会被问到这类float的问题。例如:p元素内的两个子元素p都flo…

    2025年12月23日
    000
  • CSS下拉菜单简单制作方法介绍

    本文实例为大家分享了css下拉菜单的具体实现代码,供大家参考,具体内容如下 下拉菜单实例 .dropdown { position: relative; display: inline-block; } .dropdown-content { display: none; position: abs…

    2025年12月23日
    000
  • CSS中的table-cell属性使用实例

    先让我们来研究下table,那些年曾经使用的table布局为何如此辉煌荡漾呢?她的特点有哪些呢?抛弃table的兼容性、seo、加载等与本文无关的内容不谈,只看属性,那么就两个特点: 1.同行等高。2.宽度自动调节。那么table-cell是不是具备这个特点呢?答案是yes,为什么呢?css中有一个…

    2025年12月23日 好文分享
    000
  • CSS的table-cell属性实现左图右文的排版方法示例介绍

    一些情况下使用table-cell比float来得更加简单有效,比如水平菜单的样式编写,这里我们则来看一下使用css的table-cell属性实现左图右文的排版方法详解: 对要素进行横向排列的时候,一般都会使用float, display:inline-block等方法。我们使用table-cell…

    2025年12月23日
    000
  • CSS实现隐藏和显示功能的代码

    废话不多说,直接给大家贴代码了 关键代码如下所示: .trans-fadeout{ -webkit-transition:all 1s linear; -moz-transition:all 1s linear; -ms-transition:all 1s linear; -o-transition…

    好文分享 2025年12月23日
    000
  • CSS的子元素选择器用法详细介绍

    基础 子元素选择器只能一级一级向下寻找,不能跨越  HTML代码: this is my web page. 立即学习“前端免费学习笔记(深入)”; CSS代码: p>strong { color: purple; } p>strong>i { font-size: 50px; }…

    2025年12月23日
    000
  • css实现三角的简单实例详解

    在很多页面制作中会设计到突出一个三角,下面给出一种兼容各种浏览器的设计方法: .corner-top{ width:0px; height:0px; font-size:0; border-width:20px; border-style:solid dashed dashed dashed; bo…

    好文分享 2025年12月23日
    000
  • 详细介绍CSS之margin知识点

    1.margin的百分比值普通元素的百分比maigin相对于容器元素的宽度(width) 进行计算的。 这里我们在图片外面设置一个宽高分别为800 * 600的容器。设置img{ margin: 10%; } 结果如下    结果margin值都是 800 * 10% = 80px; 所以这里都是相…

    2025年12月23日 好文分享
    000
  • CSS使用float属性设置浮动元素的方法介绍

    浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。 由于浮动框不在文档的普通流中,所以文档的普通流中的块表现得就像浮动框不存在一样。 float效果展示基本设置 在网页中正常添加3个p色块: HTML代码: 立即学习“前端免费学习笔记(深入)”; p1 p2 p3 简单设…

    2025年12月23日 好文分享
    000
  • CSS的clear属性清除浮动的用法详细介绍

    什么是css清除浮动?  网络上流行的说法是:在非IE浏览器(如Firefox)下,当容器的高度(height)为auto,且容器的内容中有浮动(float为left或right)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高度,使得内容溢出到容器外面而影响(甚至破坏)布局的现象。这个现…

    2025年12月23日
    000
  • DIV+CSS布局中自适应高度的解决方法

    代码 Equal height(DIV+CSS布局中自适应高度的解决方法) body{ padding: 0; margin: 0; font-size: 12px; font-family: Arial, Helvetica, sans-serif; line-height: 140%; text…

    2025年12月23日
    000
  • 浅谈css中的clip裁剪用法介绍

    clip 属性是用来设置元素的形状。用来剪裁绝对定位元素(absolute or fixed)。 clip有三种取值:auto |inherit|rect。inherit是继承,ie不支持这个属性, auto是默认  前两个基本属于打酱油的,我们主要来说一下clip的rect属性。 clip的rec…

    2025年12月23日
    000
  • 详解css优先级计算方法

    主要的css选择器有id,class,tag,[],:,::等,而通常需要对其优先级进行判断的有id,class,tag,另外内联样式和!important也和css的优先级有关系。 如果将这五种不同情况的优先级以数字的形式来表示的话,其对应关系如下: !important(10000) > …

    好文分享 2025年12月23日
    000
  • 浅谈css中margin的重叠

    父子元素margin重叠 解决办法: 给子元素添加浮动属性,相应父元素添加必要的清浮动属性; 给父元素添加边缘属性,如padding、border; 同级元素margin反向重叠 立即学习“前端免费学习笔记(深入)”; 同级元素margin反向重叠时,元素之间的距离为两个margin值中较大的那个。…

    好文分享 2025年12月23日
    000

发表回复

登录后才能评论
关注微信