今天面试的时候面试官提问了选择器优先级的问题,本身是知道这个问题的答案的,由于第一次面试紧张,各种选择器的名字被置于脑后,一切的根源还是因为不够熟悉,所以通过这篇博客加强并深入了解选择器优先级的问题。

一、选择器优先级: !Important>行内样式>ID 选择器>类选择器>标签选择器>通配符>继承>浏览器默认属性

  1. !important:!important拥有最高的优先级,加上!importanrt可以覆盖父级的样式,使用方法为直接在样式后添加加上!importanrt,如 color : red !important;
  2. 行内样式:行内样式指写在标签style属性中的样式,优先级仅次于!important,缺点为多个元素难以共享样式,不利于代码复用;HTML和CSS代码混杂,结构样式没有分离,不利于后期维护。所以建议尽量少使用行内样式。
  3. ID选择器:ID 选择器会根据该元素的 ID 属性中的内容匹配元素,一个id只能使用一次。
  4. 类选择器:类选择器会根据元素的类属性中的内容匹配元素,可以重复使用,是最常用的选择器。
  5. 标签选择器:标签选择器是指用HTML标签名称作为选择器,优点是能快速为页面中同类型的标签统一样式,缺点是不能设计差异化样式。
  6. 通配符选择器:通配符选择器为*,指给当前界面上所有的标签设置属性。由于通配符选择器是设置界面上所有的标签属性,所以在设置之前会遍历所有的标签,如果当前界面上的标签比较多,那么性能就会比较差。
  7. 继承:继承指当子元素没有设置某个属性时,会继承父元素的属性。
  8. 浏览器默认属性:浏览器本身设置好的属性,若未对元素设置属性,则会设置为浏览器默认属性。

注:关于继承的详情

  1. 不可继承的:display、margin、border、padding、background、height、min-height、max- height、width、min-width、max-width、overflow、position、left、right、top、 bottom、z-index、float、clear、table-layout、vertical-align、page-break-after、 page-break-before和unicode-bidi。

  2. 所有元素可继承:visibility和cursor。

  3. 内联元素可继承:letter-spacing、word-spacing、white-space、line-height、color、font、 font-family、font-size、font-style、font-variant、font-weight、text- decoration、text-transform、direction。

  4. 块状元素可继承:text-indent和text-align。

  5. 列表元素可继承:list-style、list-style-type、list-style-position、list-style-image。

  6. 表格元素可继承:border-collapse。

二、CSS权重

    1.权重:
                第一等:内联样式,如:style="color:red;",权值为 1000.(该方法会造成 css 难以管
                理,所以不推荐使用)。
                第二等:ID 选择器,如:#header,权值为 0100。
                第三等:类、伪类、属性选择器如:.bar, 权值为 0010。
                第四等:标签、伪元素选择器,如:div ::first-line 权值为 0001。
                最后把这些值加起来,再就是当前元素的权重了。
                其他:
                        无条件优先的属性只需要在属性后面使用!important。它会覆盖页面内任何位置定义
                        的元素样式。(ie6 支持上有些 bug)
                        通配符,子选择器,相邻选择器等。如*,>,+, 权值为 0000。
                        继承的样式没有权值。

        2.CSS 权重计算方式
                2.1.计算选择符中的 ID 选择器的数量(=a)
                2.2.计算选择符中类、属性和伪类选择器的数量(=b)
                2.3.计算选择符中标签和伪元素选择器的数量(=c)
                2.4.忽略全局选择器
                2.5.在分别计算 a、b、c 的值后,按顺序连接 abc 三个数字组成一个新的数字,改值即
                      为所计算的 选择符的权重。如果两个选择符的计算权重值相同,则采取“就近原则”。
                示例:
div#app.child[name="appName"] /*a=1,b=2,c=1 —>权重 = 1 + 100 + 10 +10 = 121*/

                 注:CSS 选择器:

                1、id 选择器( # myid)
                2、类选择器(.myclassname)
                3、标签选择器(div, h1, p)
                4、相邻选择器(h1 + p)

                5、子选择器(ul > li)
                6、后代选择器(li a)
                7、通配符选择器( * )
                8、属性选择器(a[rel = "external"])
                9、伪类选择器(a:hover, li:nth-child)

                

CSS选择器优先级以及权重计算方法相关推荐

  1. css选择器优先级及权重计算

    一.优先级分类 通常可以将css的优先级由高到低分为6组: 第一优先级:无条件优先的属性只需要在属性后面使用!important.它会覆盖页面内任何位置定义的元素样式.ie6不支持该属性. 第二优先级 ...

  2. html5css选择器优先级,CSS选择器优先级[重要]

    CSS选择器优先级 浏览器是通过判断CSS优先级,来决定到底哪些属性值是与元素最为相关的,从而作用到该元素上.CSS选择器的合理组成规则决定了优先级,我们也常常用选择器优先级来合理控制元素达到我们理想 ...

  3. css选择器优先级问题

    css选择器优先级问题(选择器的权重图) A.为啥有此问题的产生? a.众所周知,css对于同一属性先进行优先级别的判断,若比之前渲染的优先级别高,那么就会渲染成这个优先级别较高的. b.对于单一的选 ...

  4. CSS 选择器优先级与效率优化

    CSS选择器优先级与效率优化 Date: 7th of Aug, 2015 Author: HaoyCn 本文收集网上各处关于CSS选择器的文章总结,并自己归纳一篇. 各类选择器的优先级 import ...

  5. 谁动了我的选择器?深入理解CSS选择器优先级

    深入理解CSS选择器优先级

  6. css选择器优先级和photoshop快捷键以及100度享乐网框架

    css选择器优先级 CSS选择器的优先级:作用的元素一样,样式一样,就会有优先级问题,当优先级相同时,一旦发生重叠,以样式后面为主 CSS选择器:统配选择器,类选择器,标签选择器,id选择器,后代选择 ...

  7. html5选择器优先级,css选择器优先级怎么比较

    css选择器优先级怎么比较 CSS选择器中比较常见的有标签选择器.ID选择器.类选择器以及子选择器.而事实上,CSS选择器如果细分下来,竟然多达40多种.那他们的优先级该怎么比较呢,下面就来看看吧. ...

  8. css选择器优先级深入理解

    css基础选择器有标签选择器.类选择器.id选择器.通用选择器,本文将深入介绍css选择器优先级,这会给正在解决优先级问题的朋友,带来些许帮助 一.基础选择器  css基础选择器有标签选择器.类选择器 ...

  9. css选择器优先级顺序是什么?css基本选择器优先级的介绍

    css的选择器有很多种,那么,自然而然的就会有优先级这一概念出现,所以,css选择器优先级顺序是怎样的呢?本篇文章将来给大家介绍css选择器优先级的排序,话不多说,我们来直接看正文内容. 打造全网we ...

  10. css选择器优先级及,CSS选择器优先级(转)

    1. 引言 上一节<css知多少(5)--选择器>最后提到,选择器类型过多将导致一些问题,是什么问题呢?咱们直接举例子说明. 上图中,css中的两个选择器都是针对的,而且两个设置的颜色不一 ...

最新文章

  1. 再来一个吊打百度网盘的开源神器,还是99年妹子开发的
  2. 吐血整理:关于机器学习不可不知的15个概念
  3. 关于oracle sql语句查询时表名和字段名要加双引号的问题详解
  4. C学习笔记-基础数据结构与算法
  5. 经典最优滤波器(概述)
  6. JDK 11,Tomcat卡在Deploying web application directory
  7. kubernetes存储详解
  8. 苹果cmsv10自适应高仿时光影院视频网站免费模板
  9. 办公室计算机应用简单知识,新入职办公室人员基础电脑操作知识.doc
  10. 层次分析法(AHP)模型的应用案例
  11. git项目提交报rejected问题解决
  12. 来阿里三年,他从宠妻狂魔到正义战士
  13. JavaScript中如何删除节点?
  14. 23种常见设计模式详解
  15. 深度操作系统20.7正式发布
  16. dB单位与放大倍数关系
  17. 基于计算机底层基础设计一个高性能的单机管理主机的心跳服务
  18. oracle远程不能访问权限,oracle限制远程访问
  19. 职教平台粉笔科技递交港股IPO招股书:2021年1-9月营收26.3亿
  20. C语言——| 和 ||—— 和 的区别用法

热门文章

  1. 搭建 Ubuntu 可视化界面
  2. 远程桌面未知的用户名_远程桌面连接 提示用户名密码错误的解决办法
  3. QGIS下载安装 文档
  4. 【机器学习】一文理解BP神经网络 附代码
  5. (一)vmware中Linux共享文件夹设置
  6. 关闭微软拼音输入法自带的emoji表情包
  7. 2018年华为数通技术大赛复赛拓扑题
  8. 2022-2028中国安全代码审查软件市场现状研究分析与发展前景预测报告
  9. 用java写一个博客网站
  10. 最速下降法matlab全局最小值_MATLAB实现最速下降法