CSS属性继承与元素类型

125 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情

1.CSS的属性继承

CSS的某些属性具有继承性(Inhexited):

如果一个属性具备继承性,那么在该元素上设置后,它的后代元素都可以继承这个属性;

当然,如果后代元素自己有设置该属性,那么优先使用后代元素自己的属性(不管继承过来的属性权重多高);

2.CSS属性的层叠

CSS的翻译是层叠样式表,什么是层叠呢?

对于一个元素来说,相同一个属性我们可以通过不同的选择器给它进行多次设置;

那么属性会被一层层覆盖上去;

但是最终只有一个会生效;

那么多个样式属性覆盖上去,哪一个会生效呢?

判断一:选择器的权重,权重大的生效,根据权重可以判断出优先级;

判断二:先后顺序,权重相同时,后面设置的生效;

选择器的权重

按照经验,为了方便比较CSS属性的优先级,可以给CSS属性所处的环境定义一个权值(权重)

!important: 10000

内联样式:1000

id选择器:100

类选择器、属性选择器、伪类:10

元素选择器、伪元素:1

通配符:0

3.HTML元素的类型

在前面我们会经常提到div是块级元素会独占一行, span是行内级元素会在同一行显示.

到底什么是块级元素,什么是行内级元素呢?

HTML定义元素类型的思路:

HTML元素有很多,比如h元素/p元素/div元素/span元素/img元素/a元素等等;

当我们把这个元素放到页面上时,这个元素到底占据页面中一行多大的空间呢?

√为什么我们这里只说一行呢?因为垂直方向的高度通常是内容决定的;

比如一个h1元素的标题,我们必然是希望它独占一行的,其他的内容不应该和我的标题放在一起;

比如一个p元素的段落,必然也应该独占一行,其他的内容不应该和我的段落放在一起;

而类似于img/span/a元素,通常是对内容的某一个细节的特殊描述,没有必要独占一行;

所以,为了区分哪些元素需要独占一行,哪些元素不需要独占一行, HTML将元素区分(本质是通过CSS的)成了两类:

块级元素(block-level elements):独占父元素的一行

行内级元素(inline-level elements) :多个行内级元素可以在父元素的同一行中显示

4.通过CSS修改元素类型

前面我们说过,事实上元素没有本质的区别:

div是块级元素, span是行内级元素;

div之所以是块级元素仅仅是因为浏览器默认设置了display属性而已;

5.CSS属性- display

CSS中有个display属性,能修改元素的显示类型,有4个常用值:

block:让元素显示为块级元素

inline:让元素显示为行内级元素

inline-block:让元素同时具备行内级、块级元素的特征

none:隐藏元素

display值得特性: