深入对CSS的理解 | 青训营笔记

175 阅读4分钟

这是我参与「第四届青训营 」笔记创作活动的第1天

前言

众所周知,前端页面想要写的漂亮,少不了CSS的渲染,首先来一张CSS的属性的思维导图,帮助大家提高对CSS里各种属性的认知:

9150740-f4c81d20639d92dd.webp

下面我们就来介绍一下CSS的用法规则和属性。

1. display属性

dispaly这个属性用于定义建立布局时元素生成的显示框类型,其主要的作用的改变HTML标签的显示范围,其主要的值有nonebolckinlineinline-bolckinherit等等。

none此元素不会被显示。
block此元素将显示为块级元素,此元素前后会带有换行符。
inline默认。此元素会被显示为内联元素,元素前后没有换行符。
inline-block行内块元素。(CSS2.1 新增的值)
inherit规定应该从父元素继承 display 属性的值

1.块级标签(block):默认占据100%的父容器的宽度,可以修改宽高,最典型的元素,(div)

2.行内块级标签(inline-block ):两个元素可以处在同一行,也可以设置宽高

3.行内标签(inline):元素可以同一行排列,但是不可设置宽高(span) a标签

display除了改变一些标签的属性,其还有一个我们用的最多就是将容器设置为弹性容器。

2. display:flex

display:flex是一种布局方式。它即可以应用于容器中,也可以应用于行内元素。是W3C提出的一种新的方案,可以简便、完整、响应式地实现各种页面布局。

FlexFlexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。设为Flex布局以后,子元素的floatclearvertical-align属性就会失效。常用的属性如下图:

1287814-20190227105554256-71254015.png

4.CSS的继承

1、理解继承

CSS的样式表继承指的是,特定的CSS属性向下传递到子孙元素。总的来说,一个HTML文档就是一个家族,然后HTML元素有两个子元素, 相当于它的儿子,分别是headbody,然后bodyhead各自还会有自己的儿子,最终形成树形结构。 有时可能我们在body里面设置了一些属性,结果,body下面所有的后代元素都可能享受到,这也就是CSS样式继承。

2、继承规则

文本相关的属性和列表相关的属性会被继承文字大小,其中文本相关属性有: font-sizecolorfont-familyfont-weighttext-indenttext-aligntext-decorationfont-styleline-heightletter-spacingword-spacing。列表属性有:list-style

5.层叠性

1、理解

同一个标签能被多个选择器选中,且选中会有先后顺序,而不同选择器中可能存在相同属性的设置,此时需要使用层叠性解决冲突,对属性进行覆盖,最终只呈现一种样式。

2、规则

2.1 直接选中目标标签的情况

2.1.1 比较选择器权重

基础选择器权重:范围越大权重越小,*<标签选择器<类选择器<id选择器

高级选择器权重:比较个数,id个数->类个数->标签个数,如果id个数相同,则比较类个数,以此类推;如果id个数已经比较出大小,则不用比较后续个数,以此类推。

2.1.2 比较书写顺序

当权重相同时,后写覆盖先写。

2.2 选中目标标签的祖先级的情况

主要考虑文字属性的继承方面。

2.2.1 就近原则

如果选择器选择的是不同嵌套层次的祖先标签,则会继承距离最近的祖先样式。

2.2.2 判断最近祖先级的最终样式

如果选择器选中同层次的祖先,则根据权重判断最终样式。

2.2.3 比较书写顺序

权重相同时,后写覆盖先写。

2.3 使用!important关键字的情况

!important可以将该属性的权重提升至最大。写在某个css属性值后面空格加!important

  • 注意:
  1. 在就近原则中,不需要比较选择器权重,所有!important会失效。
  2. !important不能提升选择器的权重,只是能提升某条属性的权重到最大。

2.4 直接写行内式的情况

行内式的权重高于所有其他的选择器的,但是低于!important

结语

通过不断的学习,我对css的理解也会越来越深,也能灵活的使用css渲染页面。让页面的布局更加合理。