Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 290|回复: 0

[默认分类] css的优先级和权重问题 以及!important优先级

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-5-18 13:51:11 | 显示全部楼层 |阅读模式
      
    一,前言:
      刚加的css怎么没有渲染出来?浏览器中查看,发现是被其他的css给覆盖了,相信我们都曾遇到过这样的问题。那么浏览器是如何选择css标签的渲染顺序的呢?换句话说,css选择器的优先级是怎么规定的?
      
    二、正文:
      先上一个例子

    1. <div id = "outerId" class = "outerClass">
    2.     <div id = "innererId" class = "innerClass">
    3.           <p id = "thisId" class = "thisClass" style = "">这是一个CSS选择器的测试</p>
    4.       <button type = "button" class = "buttonClass">按钮</button>
    5.     </div>
    6. </div>
    复制代码


    问:有多少种css选择器可以对<p>标签样式产生影响呢?
    如果详细的进行分析,排列组合有太多种了,太过麻烦。我们就说说有哪几个类别:

    行内样式:        即  style = "font-size: 12px";
    id选择器:      即  #thisId {font-size: 12px;}
    class选择器:   即 .thisClass {font-size: 12px;}
    元素选择器:    即  p {font-size: 12px;}

    如上四种类别都可以对<p>标签的样式产生影响,那么谁先谁后,谁打谁小呢?
      
    有如下两种解释:

    一个selector的权重表示方式:0.0.0.0,按照计算规则给每位填充数字,对应位置相等,则比较下一位;
    也有分别以1000、100、10、1四个权值系数对CSS选择器进行权重计算。


      
       
       选择器类别
       说明
       权重表示
       权值表示
       
       
       行内样式
       行内只有一个 style = ""
       (1.0.0.0)  
       1000
       
       
       id选择器
       selector中使用了几个id,即#的个数
       (0.1.0.0)  
       100
       
       
       类选择器
        类,伪类,以及属性的个数,如: .outerClass .buttonClass[type="button"]:hover{} 选择器中有2个类,1个属性,1个伪类  
       (0.0.1.0)  
       10
       
       
       元素选择器
        伪元素和标签元素的个数,如: p:first-child 选择器中有一个标签元素p和一个伪元素first-child  
       (0.0.0.1)  
       1
       
      

      
      
      
      
      
      
      
      
      
      
      
      
    最后的几点说明:

      !important 表示强制应用该样式,例如:button{ width: 150px !important;},与以上的选择器相遇时,强制使用此样式;  
      如果比较后权重相同,那么后者覆盖前者,后渲染的胜出;  
      内联样式  > id选择器样式 > 类选择器样式 > 元素选择器样式;  
      CSS选择器的使用,应该尽量避免使用 !important 和 内联样式;id通常也是与class区分开使用,前者多用于JS中的结点定位,后者多用于CSS选择器。  
      重中之重,1000/100/10/1这种权值系数的比较方式只是便于理解,真实情况下10个class并不能逆转1个id。  

    张鑫旭的256个class类名选择器干掉一个id选择器实例页面 ,我试了下256个好像也不行。。。


    C
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-17 01:55 , Processed in 0.382324 second(s), 37 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表