css的三大特性:层叠,继承、优先级以及权重的计算

1.1

三大特性:层叠性、继承性、优先级

1.1.1层叠性

相同选择器给设置相同的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式。层叠性主要解决样式冲突问题。

        div{
            color:red;
            font-size:20px;
        }
        div{
            color:pink;
        }
<div>长江后浪推前浪,前浪死在沙滩上</div>

在这里会显示的颜色为pink,字体大小为20px。

  • 就近原则
  • 样式不冲突不会层叠
1.1.2继承性

子标签会继承父标签的某些样式

        div{
            color:red;
            font-size:20px;
        }
<div>
<p>长江后浪推前浪,前浪死在沙滩上</p>
</div>

在这里p标签会显示红字,20px。

  • 恰当使用可以简化代码
  • 子元素可以继承父元素的样式(text-,font-,line-这些元素开头的可以继承以及color属性)

行高的继承

div{
            color:red;
            /* 12px是字体大小,24px是行高 */
            font:12px/24px 'Microsoft YaHei';
        }
body{
            color:red;
             /* 12px是字体大小,24px是行高 
            font:12px/24px 'Microsoft YaHei'; */
            font:12px/24px 'Microsoft YaHei';
        }
        div{
            /* 子元素继承了父元素body的行高1.5
            这个1.5就是当前元素大小font-size的1.5倍 所以当前div的行高就是21px */
            font:12px;
        }
        p{
            /* 1.5*16=当前行高 */
            font-size:16px;
        }
<body>
    <div>长江后浪推前浪,前浪死在沙滩上</div>
    <p>长江后浪推前浪,前浪死在沙滩上</p>
</body>
1.1.3优先级

当同一个元素指定多个选择器,就会有优先级的产生

  • 选择器相同,则执行层叠性
  • 选择器不同,则根据选择器权重执行
选择器 选择器权重
继承或者* 0.0.0.0
元素选择器 (div) 0.0.0.1
类选择器,伪类选择器 (.test)(:hover) 0.0.1.0
id选择器 (#demo) 0.1.0.0
行内样式 style=" " 1.0.0.0
important 重要的 无穷大
  • 继承的权重为0,无论父类权重多高,子类得到的权重都是0
     #div{
            color:red;
        }
        p{
           color:#fff;
        }
<div>
    <p>长江后浪推前浪,前浪死在沙滩上</p>
    </div>

p为白色因为继承权重为0,无论父类是什么权重都不继承。

body{
            color:red;
        }
<body>
        <!-- 显示为蓝色,因为浏览器默认给a标签设置了一个蓝色的 有下划线的样式 -->
    <a href="#">我是一个单独样式</a>
</body>

所以如果要给a设置样式就要单独设置一个a的样式。

  • 权重的叠加
   /* 复合选择器会有权重叠加的问题 */
      /* ul li的权重为0,0,0,1+0,0,0,1=0,0,0,2 */
       ul li{
           color:green;
       }
       /* li的权重是0,0,0,1 */
       li{
           color:red;
       }
       /* .nav li的权重为0,0,1,0+0,0,0,1=0,0,1,1 */
       .nav li {
           color:blue;
       }
<ul class="nav">
          <li>大猪蹄子</li>
          <li>大肘子</li>
          <li>猪尾巴</li>
      </ul>

这里显示的为蓝色,因为权重大。

  • 权重练习
    /* .nav li的权重为0,0,1,0+0,0,0,1=0,0,1,1  11*/
       .nav li {
           color:blue;
       }
       /* .pink的权重为10   .nav .pink 的权重为20 */
       .nav .pink{
           color:red;
       }
 <ul class="nav">
          <li class="pink">大猪蹄子</li>
          <li>大肘子</li>
          <li>猪尾巴</li>
      </ul>

最终大猪蹄子的颜色为红色,大肘子和猪尾巴为蓝色。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容