• css:三大特性(层叠性、继承性、优先级)


    1、层叠性

    (1)概念

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

    (2)原则

    遵循就近原则,哪一个样式距离结构近,就执行哪一个样式

    样式不冲突,不会层叠

    (3)验证

    <html>
    
        <head>
            <meta charset="utf-8">
            <title></title>
            <style>
                div {
                    color: red;
                }
                
                div {
                    color: yellow;
                }
            </style>
        </head>
    
        <body>
            <div>三人行,必有我师</div>
        </body>
    
    </html>

     相同的选择器,不是所有的样式都相同的情况:不会覆盖

    <html>
    
        <head>
            <meta charset="utf-8">
            <title></title>
            <style>
                div {
                    color: red;
                    text-decoration: line-through;
                }
                
                div {
                    color: yellow;
                }
            </style>
        </head>
    
        <body>
            <div>三人行,必有我师</div>
        </body>
    
    </html>

    2、继承性

    子标签会继承父标签的某些样式,如:文本的颜色和字号

    (1)子标签继承父标签

    <html>
    
        <head>
            <meta charset="utf-8">
            <title></title>
            <style>
                div {
                   color: pink;
                   font-size: 12px;
                }
            </style>
        </head>
    
        <body>
            <div>
                <p>子不教,父之过</p>
            </div>
        </body>
    
    </html>

     选择器的样式为<div>标签,但是<p>标签依旧会有<div>的样式,这就是继承。恰当地使用css的继承性可以简化代码。例如:在<body>标签里面定义了属性之后在他里面的所有标签就会有该属性(子元素会继承父元素的样式)。

    (2)行高的继承

    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
            <style>
                body {
                   color: pink;
                   font-size: 12px/1.5;
                }
                div{
                    font-size: 14px;
                }
            </style>
        </head>
    
        <body>
            <div>字如其心</div>
            <p>子不教,父之过</p>    
        </body>
    
    </html>

    将子标签的行高设置为父标签的1.5倍:

    子元素可以继承的父元素包含:text、font、line和color

    3、优先级

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

    选择器相同,就执行层叠性

    选择器不同,就根据选择器权重执行:继承或者*>元素选择器>类选择器或伪类选择器>ID选择器>行内样式style=“”>!important

    (1)优先级

    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
            <style>
                div {
                   color: pink;
                }
                .test{
                  color: red;
                }
            </style>
        </head>
    
        <body>
            <div class="test">字如其心</div>    
        </body>
    
    </html>

    元素选择器>类选择器,因此文字的颜色为红色

    (2)!important的优先级

    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
            <style>
                div {
                   color: pink!important;
                }
                .test{
                  color: red;
                }
            </style>
        </head>
    
        <body>
            <div class="test">字如其心</div>    
        </body>
    
    </html>

     在加了!important之后,即使元素选择器的优先级较高,也会先执行类选择器

    (3)继承的权重是0

    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
            <style>
                #father{
                    color: red;
                }
                p{
                    color: pink;
                }
            </style>
        </head>
    
        <body>
            <div id="father">
                <p>字如其心</p>
            </div>    
        </body>
    
    </html>

    虽然父亲的标签的优先级较高,但是,从父亲继承来的优先级为0,当然,还是执行p标签自己定义的优先级

     (4)链接:浏览器默认指定了一个样式,有下划线

    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
            <style>
                body{
                    color: red;
                }
            </style>
        </head>
    
        <body>
            <a href="#">新闻</a>
        </body>
    
    </html>

     给body书写的样式的颜色为红色,但是,并没有继承父亲的红色,而是自己的蓝色

    4、权重的叠加

    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
            <style>
                li{
                    color: red;
                }
                ul li{
                    color: greenyellow;
                }
            </style>
        </head>
    
        <body>
            <ul>
                <li>小猪猪</li>
                <li>大笨猪</li>
                <li>大猪蹄子</li>
            </ul>
        </body>
    
    </html>

     style里面的样式都是指向 li 的,但是ui li 是两个标签的叠加,li是一个标签,因此,ul li的权重更大

    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
            <style>
                li{
                    color: red;
                }
                ul li{
                    color: greenyellow;
                }
                .nav li{
                    color:sandybrown;
                }
            </style>
        </head>
    
        <body>
            <ul class="nav">
                <li>小猪猪</li>
                <li>大笨猪</li>
                <li>大猪蹄子</li>
            </ul>
        </body>
    
    </html>

     .nav li 的权重大于ul li 的权重

    如果是复合选择器就会存在权重的叠加,需要计算权重

  • 相关阅读:
    《移动Web前端高效开发实战》笔记4--打造单页应用SPA
    《移动Web前端高效开发实战》笔记3--代码检查任务
    《移动Web前端高效开发实战》笔记2——使用Gulp构建一个ECMAScript 6和Sass应用
    《移动Web前端高效开发实战》笔记1——静态布局在移动端上的自适应
    Node.js 历史
    《超实用的Node.js代码段》连载三:Node.js深受欢迎的六大原因
    《超实用的Node.js代码段》连载二:正确拼接Buffer
    《超实用的Node.js代码段》连载一:获取Buffer对象字节长度
    换个地方写博客
    【转一篇出处不明的文章】 Windows多线程通信方式
  • 原文地址:https://www.cnblogs.com/zhai1997/p/13032319.html
Copyright © 2020-2023  润新知