• CSS的继承性和层叠性


    一 继承性

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

      面向对象语言都会存在继承的概念,在面向对象语言中,继承的特点:继承了父类的属性和方法。那么我们现在主要研究css,css就是在设置属性的。不会牵扯到方法的层面。

      继承:给父级设置一些属性,子级继承了父级的该属性,这就是我们的css中的继承。

      记住:有一些属性是可以继承下来 : color 、 font-*、 text-*、line-* 。主要是文本级的标签元素。

      但是像一些盒子元素属性,定位的元素(浮动,绝对定位,固定定位)不能继承。

      
     

    二 层叠性

      层叠性: 权重的标签覆盖掉了权重小的标签,说白了 ,就是被干掉了
      权重: 谁的权重大,浏览器就会显示谁的属性

      谁的权重大? 非常简单就是小学的数数。

      数:id的数量 class的数量 标签的数量,顺序不能乱 
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    /*1  0  0 */显示红色
    #box{
     
     
        color: red;
    }
    /*0  1  0*/
    .container{
        color: yellow;
    }
    /*0  0  1*/
    p{
        color: purple;
    }

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

    1
    2
    3
    4
    5
    6
    7
    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>

      

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #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
    2
    3
    4
    5
    6
    7
    1         #box2 .wrap3 p{
    2             color: yellow;
    3         }
    4        
    5         #box1 .wrap2 p{
    6             color: red;
    7         }

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

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

    1
    2
    3
    4
    5
    6
    7
    #box1 #box2 .wrap3{
        color: red;
    }
             
    #box2 .wrap3 p{
        color: green;
    }

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

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

    1
    2
    3
    4
    5
    6
    #box1 #box2 .wrap3{
        color: red;
    }
    .wrap1 #box2{
        color: green;
    }

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

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

    三 层叠性权重相同处理

     

      直接上代码,看效果!

      第一种现象:当权重相同时,以后来设置的属性为准,前提一定要权重相同

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

      我们会发现此时显示的是红色的。

      第二种现象: 第一个选择器没有选中内层标签,那么它是通过继承来设置的属性,那么它的权重为0。第二个选择器选中了内层标签,有权重。

      所以 继承来的元素 权重为0。跟选中的元素没有可比性。

    1
    2
    3
    4
    5
    6
    #box1 #box2 .wrap3{
        color: red;
    }
    #box2 .wrap3 p{
        color: green;
    }

      我们会发现此时显示的是绿色的。

      第三种现象:如果都是继承来的属性,谁描述的近,显示谁的属性。'就近原则'

    1
    2
    3
    4
    5
    6
    #box1 #box2 .wrap3{
        color: red;
    }
     .wrap1 #box2{
        color: green;
    }

      !important 的使用。

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

  • 相关阅读:
    Python3 之 列表推导式
    python3 之 趣味数学题(爱因斯坦)
    python3 之 判断闰年小实例
    python3 之 判断字符串是否只为数字(isdigit()方法、isnumeric()方法)
    116.Populating Next Right Pointers in Each Node
    115.Distinct Subsequences
    114.Flatten Binary Tree to Linked List
    113.Path Sum II
    112.Path Sum
    111.Minimum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/q455674496/p/10390807.html
Copyright © 2020-2023  润新知