• CSS的继承性和层叠性


    CSS的继承性和层叠性

    css有两大特性:继承性和层叠性

      继承性>>

      给父级设置一些属性,子级继承了父级的该属性,这就是我们的css中的继承,css没有方法的概念

      可以继承的属性: color, font-*, text-*, line-*.主要是文本级的标签元素,

      盒子元素属性,定位(浮动,核对定位,固定定位)不能继承.

      

      层叠性>>

      就是权重的标签覆盖了权重小的标签  

      权重: 谁的权重大浏览器就会显示谁

    数:id的数量  class的数量  标签的数量,顺序不能乱

    优先级比较:  行内标签 > id > class > 标签

     

    复制代码
    /*1  0  0 */显示红色
    #box{
    color: red; } /*0 1 0*/ .container{ color: yellow; } /*0 0 1*/ p{ color: purple; }
    复制代码

     

    是不是感觉明白了呢?好的,再给大家加深点难度。

    复制代码
    1     <div id='box1' class="wrap1">
    2         <div id="box2" class="wrap2">
    3             <div id="box3" class="wrap3">
    4                 <p>再来猜猜我是什么颜色?</p>
    5             </div>
    6         </div>
    7     </div>
    复制代码

     

    复制代码
            #box1 #box2 p{
                color: yellow;
            }
            
            #box2 .wrap3 p{
                color: red;
            }
            
            div div #box3 p{
                color: purple;
            }
            
            
            div.wrap1 div.wrap2 div.wrap3 p{
                color: blue;
            }
    复制代码

     

    好的。那么上面的这个案例大家是否懂了呢?那么接下来我们继续看案例

    还是上面那个html结构,如果我设置以下css,会显示什么颜色呢。

    复制代码
    1         #box2 .wrap3 p{
    2             color: yellow;
    3         }
    4         
    5         #box1 .wrap2 p{
    6             color: red;
    7         }
    复制代码

     

    答案是红色的。结论:当权重一样的时候 是以后来设置的属性为准,前提必须权重一样 。‘后来者居上 ’。

    Good,我们继续看下面的css,你来猜以下此时字什么颜色?

    复制代码
    #box1 #box2 .wrap3{
        color: red;
    }
            
    #box2 .wrap3 p{
        color: green;
    }
    复制代码

     

    答案是绿色。哈哈,是不是感觉快懵掉了。其实大家只要记住这点特性就可以。第一条css设置的属性值,是通过继承性设置成的红色,那么继承来的属性,它的权重为0。它没有资格跟我们下面选中的标签对比。

    那大家猜想一下如果都是被继承来的属性,那么字会显示什么颜色呢?

     

    复制代码
    #box1 #box2 .wrap3{
        color: red;
    }
    .wrap1 #box2{
        color: green;
    }
    复制代码

     

    小案例证明:权重都是0:那么就是"就近原则" : 谁描述的近,就显示谁的属性。所谓描述的近,就是选中到最内层的距离越近。

     

    总结:

      1.先看标签元素有没有被选中,如果选中了,就数数 (id,class,标签的数量) 谁的权重大 就显示谁的属性。权重一样大,后来者居上 2.如果没有被选中标签元素,权重为0。 如果属性都是被继承下来的 权重都是0 。权重都是0:"就近原则" : 谁描述的近,就显示谁的属性

     


     

    层叠性权重相同处理>>

     

    1. 当权重相同时,以后来设置的属性为准,前提一定要权重相同

    复制代码
    #box2 .wrap3 p{
        color: yellow;
    }
            
    #box1 .wrap2 p{
        color: red;
    }
    
    
    显示的是红色的。
    权重相同时

     

    2. 第一个选择器没有选中内层标签,那么它是通过继承来设置的属性,那么它的权重为0。第二个选择器选中了内层标签,有权重。所以 继承来的元素 权重为0。跟选中的元素没有可比性,显示选中的元素的.

    复制代码
    #box1 #box2 .wrap3{
        color: red;
    }
    #box2 .wrap3 p{
        color: green;
    }
    有无权重

    3.如果都是继承来的属性,谁描述的近,显示谁的属性。'就近原则'

    #box1 #box2 .wrap3{
        color: red;
    }
     .wrap1 #box2{
        color: green;
    }
    都是继承属性,无权重

    !important 的使用。

    !important:设置权重为无限大 !important 不影响继承来的权重,只影响选中的元素。不要随便使用!important,因为使用它会影响页面的布局

     

  • 相关阅读:
    使用ConcurrentLinkedQueue惨痛的教训【转】
    非阻塞算法在并发容器中的实现【转】
    ConcurrentLinkedQueue的实现原理分析
    jQuery Validate验证框架详解
    Java中的ReentrantLock和synchronized两种锁定机制的对比
    ReentrantLock与Condition
    Java线程创建的两种方式
    JAVA并发:深入分析volatile
    Java线程同步
    JAVA jstack命令详解
  • 原文地址:https://www.cnblogs.com/konghui/p/9893319.html
Copyright © 2020-2023  润新知