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

继承性

面向对象语言都会存在继承的概念,在面向对象语言中,继承的特点:继承了父类的属性和方法。

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

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

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


层叠性

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

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

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

例子1:都选中了标签的情况

/*1  0  0 */ id个数是1,class个数是0,标签个数是0,显示红色
#box{
    color: red; 
}
/*0  1  0*/
.container{
    color: yellow;
}
/*0  0  1*/
p{
    color: purple;
}

例子2:

<div id='box1' class="wrap1">
    <div id="box2" class="wrap2">
        <div id="box3" class="wrap3">
            <p>再来猜猜我是什么颜色?</p>
        </div>
    </div>
</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;
}
结果显示黄色

例子3:都选中了标签且权重相同的情况

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

#box2 .wrap3 p{
    color: yellow;
}
        
#box1 .wrap2 p{
    color: red;
}

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

例子4:一个选中了标签,一个没有选中标签

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

#box1 #box2 .wrap3{
    color: red;
}
        
#box2 .wrap3 p{
    color: green;
}

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

例子5:如果都是被继承来的属性,那么字会显示什么颜色呢?

#box1 #box2 .wrap3{
    color: red;
}
.wrap1 #box2{
    color: green;
}

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

总结:

1.先看标签元素有没有被选中,如果选中了,就数数 (id,class,标签的数量) 谁的权重大就显示谁的属性。权重一样大,后来者居上

2.如果没有被选中标签元素,权重为0。

3.如果属性都是被继承下来的 权重都是0 。权重都是0:"就近原则" : 谁描述的近,就显示谁的属性

posted on 2019-01-09 09:40  longfei2021  阅读(113)  评论(0编辑  收藏  举报