详解CSS中的选择器和优先级

详解CSS中的选择器和优先级

CSS选择器优先级得关系为:

!important>内联>ID选择器>类选择器>标签选择器。

一种优先级算法

1、内联样式表的权值最高 () 权值为1000

2、统计选择符中的ID属性个数。(#id) 权值为100

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

3、统计选择符中的CLASS属性个数。(.class)  权值为10

4、统计选择符中的HTML标签名个数。 {例如:p}  权值为1

按这些规则将数字符串逐位相加,就得到最终的权重,然后在比较取舍时按照从左到右的顺序逐位比较。

1、文内的样式优先级为1,0,0,0,所以始终高于外部定义。 2、有 !important 声明的规则高于一切。3、如果!important声明冲突,则比较优先权。4、如果优先权一样,则按照在源码中出现的顺序决定,后来者居上。5、由继承而得到的样式没有specificity的计算,它低于一切其它规则(比如全局选择符*定义的规则)。

浏览器中也具有优先级得算法

浏览器中得优先级是由A、B、C、D的值来决定的,计算规则如下:

如果存在内联样式,那么A=1,否则A=0;B的值为ID选择器出现的次数C的值为类选择器属性选择器伪类出现的总次数D的值为标签选择器伪元素出现的总次数

li                                  /* (0, 0, 0, 1) */ul li                               /* (0, 0, 0, 2) */ul ol+li                            /* (0, 0, 0, 3) */ul ol+li                            /* (0, 0, 0, 3) */h1 + *[REL=up]                      /* (0, 0, 1, 1) */ul ol li.red                        /* (0, 0, 1, 3) */li.red.level                        /* (0, 0, 2, 1) */a1.a2.a3.a4.a5.a6.a7.a8.a9.a10.a11  /* (0, 0, 11,0) */#x34y                               /* (0, 1, 0, 0) */li:first-child h2 .title            /* (0, 0, 2, 2) */#nav .selected > a:hover            /* (0, 1, 2, 1) */html body #nav .selected > a:hover  /* (0, 1, 2, 3) */

登录后复制

比较规则是: 从左往右依次进行比较 ,较大者胜出,如果相等,则继续往右移动一位进行比较 。如果4位全部相等,则后面的会覆盖前面的

内联样式优先级最高,但是外部样式也可以覆盖内联样式,只需要 ! important,如果不是为了覆盖内联样式,尽量少使用!!!

css基本选择器

在这里插入图片描述

1、标签选择器:匹配所有使用p标签的样式p{color:red}

2、id选择器:匹配指定的标签#p2{color:red}

3、class选择器:谁指定的class谁变色,可选多个,比如.info{color:red}、p.info{color:red}

4、通用选择器:所有的标签都改变

组合选择器

nbsp;html>/*后代选择器,选择所有class为div1后的p标签*/.div1 p{background-color: red;}/*子代选择器*/.div3>p{color:#0000FF;}/*相邻选择器*/.div2+p{background-color: #008000;}/*兄弟选择器*/.div2~p{background-color: hotpink;}/*多元素选择器*/.div2,p{background-color: #7FFFD4;}.div1 .div2,.div1~p{background-color: blueviolet;font-size: 20px;}

你好我是p

我是div2下p1

div3

我是div2相邻的元素p

h1

h2

hello world

hello world div2


hello hello

h3

    

最后一个p

登录后复制

属性选择器

nbsp;html>/*1.匹配所有A属性,并且在div中*/div[A]{color: aquamarine;}/*2.匹配所有A=a1的并且只是在div标签中的*/div[A=a1]{color: blueviolet;/* * 这个和第一个优先级是相同的 * 应该显示下面的,但是第一个查找的范围广 * 所以也会显示第一个的样式 *//*3.匹配所有属性为A,并且具有多个空格分隔的值,其中一个只等于a1的*/div[A~=a1]{background-color: darkkhaki;}/*4.匹配属性值以指定值开头的每个元素,并且在div标签中*/div[A^=a]{background-color: antiquewhite}/*5.匹配属性值以指定值结尾的每个元素*/div[A$=1]{background-color: blue;}/*6.匹配属性值中包含指定值的每个元素 */div[A*=a] {background-color: saddlebrown;}}
1111
2222
3333
4444

登录后复制

伪类

anchor伪类:专用于控制链接的显示效果

    a:link(没有接触过的链接),用于定义了链接的常规状态。    a:hover(鼠标放在链接上的状态),用于产生视觉效果。        a:visited(访问过的链接),用于阅读文章,能清楚的判断已经访问过的链接。        a:active(在链接上按下鼠标时的状态),用于表现鼠标按下时的链接状态。        伪类选择器 : 伪类指的是标签的不同状态:                   a ==> 点过状态 没有点过的状态 鼠标悬浮状态 激活状态        a:link {color: #FF0000} /* 未访问的链接 */        a:visited {color: #00FF00} /* 已访问的链接 */        a:hover {color: #FF00FF} /* 鼠标移动到链接上 */        a:active {color: #0000FF} /* 选定的链接 */ 格式: 标签:伪类名称{ css代码; }

登录后复制

before after 伪类

:before    p:before       在每个

元素之前插入内容     

:after     p:after        在每个

元素之后插入内容     

例:p:before{content:”hello”;color:red;display: block;}

css的继承

继承是一种机制,它允许样式不仅可以应用于某个特定的元素,还可以应用于它的后代

body{color:blue;}

登录后复制

给body设置了颜色,这样body里面元素都会继承该样式,但是继承的权重很低,比普通元素还要低,给任意元素添加个颜色,都会把继承的颜色覆盖掉。由此可见:任何显示申明的规则都可以覆盖其继承样式。 

CSS继承也有一些限制,有一些属性不可被继承, 如:border、margin、padding、background。等

相关教程推荐:CSS视频教程 、CSS视频教程

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

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

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2885070.html

(0)
上一篇 2025年3月10日 20:35:18
下一篇 2025年2月25日 08:03:46

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • css中有哪些常见的布局方式

    常见的几种布局方式: (推荐教程:css快速入门) 固定布局 流式布局(自适应布局) 弹性布局(伸缩布局) 立即学习“前端免费学习笔记(深入)”; 定位布局 浮动布局 响应式布局(媒体查询) 固定布局的固定说的是盒子的宽高都是固定的。mar…

    2025年3月10日
    200
  • css中的display属性有哪些值?各有什么作用?

    display属性值介绍: (推荐教程:css快速入门) none    此元素不会被显示。     block    此元素将显示为块级元素,此元素前后会带有换行符。     inline    默认。此元素会被显示为内联元素,元素前后没…

    2025年3月10日
    200
  • 前端常见css的面试题目

    随着疫情的不断好转,各地都开始逐步的复工,当然对我们来说,也马上迎来所谓的金三银四跳槽季。在此,分享自己在前端领域中积累的一些经验,供自己温故知新。   对于前端来说,涉及的知识面广,内容繁多,但是万变不离其宗,主要也就是围绕着html(5…

    2025年3月10日
    200
  • 谈谈CSS实现水平垂直居中布局的方法

    最近面试的时候,面试官问到了CSS水平垂直居中布局的方式,对于刚入前端没多久的我,无疑是一脸懵逼,闲了赶紧查阅资料分析一波,给各位分享一下,避免落坑。 首先先说明一下html和一些基础css样式,下面就不再赘述!html 垂直水平居中 登录…

    2025年3月10日
    200
  • 在html元素中设置css样式的方式是什么

    如果我们要在HTML元素中设置CSS样式,那么我们就需要在元素中设置”id” 和 “class”选择器。 (推荐教程:CSS教程) 下面我们来分别说一下id选择器和class选择器。 id选择…

    2025年3月10日
    200
  • css如何设置透明度不会影响子元素

    通过RGBA设置透明度,只有最新的浏览器支持,支持IE9+,可通过RGBA的alpha通道的方式设定。 (推荐教程:CSS教程)  显示文字   登录后复制 前三个值是rgb的颜色值,最后一个透明度的值,取值为0~1,值越小越透明。 兼容所…

    2025年3月10日
    200
  • css怎样实现DIV高度自适应

    可以添加表格特性。 (推荐教程:CSS教程) 父级元素添加属性  display: table; 子一级元素添加属性 display: table-cell; 立即学习“前端免费学习笔记(深入)”; 代码:          .div-ro…

    2025年3月10日
    200
  • 利用css实现鼠标悬停效果

    我们先来看下效果: (推荐教程:CSS教程) html代码: 立即学习“前端免费学习笔记(深入)”;                     这是是pic-1                                        这…

    2025年3月10日
    200
  • css如何实现按钮居中显示

    先来看下效果: (推荐教程:CSS教程) 通过简单的Css样式就可以实现 立即学习“前端免费学习笔记(深入)”; 登录后复制 使用margin-left:auto;margin-right:auto; 可以让你的div居中对齐。 .styl…

    2025年3月10日
    200
  • CSS如何清除浮动?3种方法介绍

    css如何清除浮动?本篇文章给大家介绍一下使用css清除浮动的3种方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 首先这里就不讲为什么我们要清楚浮动,反正不清除浮动事多多。 下面我就讲三种常用清除浮动的方法,够用了。…

    2025年3月10日 编程技术
    200

发表回复

登录后才能评论