在CSS属性中,每一个属性都都被指出自身的继承属性是默认继承的,还是默认不继承的。即inherited:yes;或者inherited:no;
“继承”二字,通俗来讲就是给到父元素的样式,子元素也可以生效。
那么哪些属性可以被继承,哪些又不可以呢?来测试一下~
给到如下的结构:
<div class="box1">
<div class="box2">
<p>我是填充文字</p>
</div>
</div>
如下的CSS样式:
.box1{
width: 400px;
height: 400px;
background-color: skyblue;
overflow: hidden;
text-align: center;
line-height: 200px;
border: 2px solid red;
margin: 0 auto;
}
.box2{
width: 200px;
height: 200px;
background-color: red;
margin: 100px auto;
color: green;
font-weight: bolder;
}
控制台指针给到p
控制台指针给到box2
测试发现,段落p中的文字并没有在CSS样式中指明 颜色、字体、对齐方式,同样box2中也没有指明行高,测试结果如下:
P元素文字相关属性发生变化,box2行高发生了变化。
显而易见,这就是“继承”的功劳!
通俗来说,被包在最里面的子元素P,本身未设定任何样式,
P元素会想:“你没有给我的属性指定特定的属性值,我该怎么去计算或者说获取到我的属性值呢?”
box2会说“当然是来找你的父元素,我box2呀”
box1也会说“还有你父元素的父元素,我box1呀”
就这样,p元素从box2那里继承了字体颜色color和加粗font-weight,从box1那里继承了对齐方式text-align;
同样的box2从父元素box1处继承了行高line-height;
但是,同样可以看到,有些属性是没有被继承的,比如给到box1的边框,在box2和p上并未生效;box1和box2的宽高属性在P上也没生效。调出控制台,截图上也可以看到未被继承,如下
。
总结如下:(未完全给到测试,可自行实验)
可以被继承的属性:
1、文字相关属性
color、font-size、text-align、font-family、
text-decoration、font-weight、font-style、line-height、
text-indent等
2、列表相关属性:
list-style:none;
不可以被继承的:
1、 背景相关属性
2、 边框属性
3、 margin和padding属性
4、 width和height属性