首页 > 其他分享 >第三篇 css - 优先级 - 【 级联 和 继承 】

第三篇 css - 优先级 - 【 级联 和 继承 】

时间:2023-03-28 14:59:37浏览次数:35  
标签:box 级联 优先级 样式 继承 样式表 选择器 css

概述

CSS样式优先级分为 两 大类

  1、级联
  
  2、继承
级联
CSS 级联 规则决定了 样式冲突 时 胜出 的样式,这 三条 规则按照优先级 从高到低 分别为

  1、样式表来源
  
  2、选择器优先级
  
  3、代码顺序
  
样式表来源 优先级最高

如果来源一致,那么取决于 选择器 优先级(行内样式归纳到选择器这一条)

如果 选择器 也一致,那么优先级取决于 代码的顺序  
1、样式表来源

样式表来源主要有 两个 地方

   1、作者样式表【 也就是咱们自己写的样式 】
   
   2、用户代理样式表【 也就是俗称的浏览器默认样式 】
   
     比如 列表 有 左侧内边距,有左侧小黑点,链接 是蓝色而且有下划线
     
 作者样式表的优先级高于用户代理样式表    
2、选择器优先级

分为两部分

  1、HTML 行内样式
  
  2、选择器的样式
  
a、HTML 行内样式 优先级 规则

  1、HTML行内样式 的优先级高于所有 其他样式 的优先级

  2、除了 !important  加了 !important 的样式优先级最高

  3、没有别的样式能覆盖 行内样式 +!important 
  
b、选择器的优先级  规则  【 很复杂 】

  1、ID选择器 最多的样式优先级最高
  
  2、如果 ID选择器 数量一致,那么 类选择器 最多的样式 优先级 最高
  
  3、如果ID选择器和类选择器的数量都一样,那么标签选择器最多的样式胜出
  
  4、伪类选择器(:hover)和 属性选择器([type="input"]与类选择器优先级相同
3、源码顺序

如果前边所述的优先级都相同,那么出现在代码顺序后边的样式会覆盖代码顺序在前边的样式

.nav a {
    background-color: red;   
}

a.featured {
    background-color: orange;
}

上面两个样式的优先级相同,一个选中了.nav的后代a,一个选中了 a 中的 .feature ,因为后者出现在代码后边,所以优先级更高,会覆盖前面的样式
继承
除了级联之外,还有一种给元素添加样式的方式  => 继承

  1、继承的样式没有优先级

  2、不是所有的属性都能被继承
  
     默认情况下,只有特定的一些属性能被继承,通常是我们希望被继承的那些
     
     1、它们主要是跟文本相关的属性
     
       color
       
       font
       
       font-family
       
       font-size
       
       font-weight
       
       font-variant
       
       font-style
       
       line-height
       
       letter-spacing
       
       text-align
       
       text-indent
       
       text-transform
       
       white-space 
       
       word-spacing
       
    2、还有一些其他的属性也可以被继承,比如列表属性
    
      list-style
      
      list-style-type
      
      list-style-position
      
      list-style-image
      
      表格的边框属性 border-collapse  border-spacing
      
3、可以在适当的场景使用继承

   比如给 body 元素应用字体,让后代元素继承该字体,因为继承的样式没有优先级,所以很容易被覆盖      

4、inherit 关键字

   1、inherit 关键字可以让元素继承父元素的属性,可以用来覆盖原来的值
   
   
   <div class="footer">
      <a href="#"></a>
   </div>
   
   /* 全局尚未访问链接的颜色 */
   
   a:link{
     color:blue
   }

   /* 父元素 */
   
   .footer {
     color: #666
   }
   
   /* 优先级与 a:link 相同,都是一个标签选择器和一个(伪)类选择器,所以全局 color 被父元素的 #666 覆盖 */
   
   .footer a {
     color: inherit
   }

   a 的 color 设置了继承,所以第三个规则覆盖了全局规则

  2、还可以使用 inherit 继承一些默认不会被继承的属性
  
  :root {
    box-sizing: border-box;
   }

  *,
  ::before,
  ::after {
    box-sizing: inherit;
  }
  
  如代码所示,将根元素盒模型设置为 border-box,然后全局继承根元素
  
  这么做是考虑到有的组件是使用的 content-box,但是我们全局的选择器把所有元素的盒模型都改成了 border-box
  
  所以这时候只需要把这个组件顶级容器的盒模型改成 content-box,那么组件内的元素就会继承这个顶级元素,恢复到 content-box
  
  .some-component {
    box-sizing: content-box;
   }

标签:box,级联,优先级,样式,继承,样式表,选择器,css
From: https://www.cnblogs.com/caix-1987/p/17265109.html

相关文章

  • 第四篇 css - 基础 - 颜色
    颜色基本概述1、颜色颜色是指不能透过其他颜色的混合调配而得出的“基本色”,以不同比例将原色混合可以产生出其它的新颜色。由于人类肉眼有三种不同颜色的感......
  • 第六篇 css - 样式 - 【 字体样式 + 文本样式 】
    字体样式1、color2、font-size3、font-family4、font-style5、font-weight字体样式解析1、font-family该属性用于设置字体1、网页中常用的字体有......
  • 第五篇 css - 单位值
    css单位css单位主要分为1、相对单位2、绝对单位相对单位相对单位,是相对于当前元素的字号font-size或者视口viewport尺寸。1、em:1em与当前元素......
  • 伪元素和CSS类
    伪元素可以结合CSS类: p.article:first-letter{color:#ff0000;}<pclass="article">文章段落</p>https://www.lekaowang.com/cjhjs/zx/ksdg/上面的例子会使所有class......
  • CSS - :before 伪元素
     ":before"伪元素可以在元素的内容前面插入新内容。下面的例子在每个<h1>元素前面插入一幅图片:实例h1:before{content:url(smiley.gif);}https://www.lekao......
  • linux内核线程优先级配置
    linux内核线程优先级配置/*referencedriver/spi/spi.c*/#include<linux/sched/rt.h>#include<uapi/linux/sched/types.h>staticstructsched_paramparam={......
  • 几段纯 CSS 代码实现的 漂亮边框效果
    半透明边框border:10pxsolidhsla(0,0%,100%,.5);background-clip:padding-box;缝边效果outline:1pxwhitedashed;outline-offset:-10px;border......
  • 级联pwm整流器(级联H桥CHB)(单相交流220V-直流135*3整流)仿真,动稳态性能良好
    级联pwm整流器(级联H桥CHB)(单相交流220V-直流135*3整流)仿真,动稳态性能良好,0.5s切换不平衡负载,0.6s启动直流电压均衡控制,附带仿真介绍文档,详细讲述仿真搭建过程,并附带参考文献......
  • EasyCVR视频融合平台如何通过国标GB28181协议级联至海康云眸平台?
    EasyCVR视频融合平台基于云边端一体化,能实现海量视频资源的轻量化接入、汇聚与管理,平台可提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、智能......
  • CSS之伪类选择器,属性选择器
    一.结构伪类选择器伪类选择器一般的格式是使用冒号来表示  :一般其它的伪类选择器很少使用,但是a标签的个性化都是使用的伪类选择器来个性化,所以对于a标签的个性化需要......