青训营笔记

28 阅读4分钟

深入CSS|青训营笔记

Screenshot_2023-01-16-23-11-19-892_com.ss.android.jpg

页面使用css三种方法:外链、嵌入、内联 Screenshot_2023-01-16-23-12-13-966_com.ss.android.jpg 一般推荐用外链

选择器Selector

用来找出页面中的元素,以便给他们设置样式 可以使用多种方式选择元素例如按照标签名、类名或id;按照属性;按照DOM树中的位置。

通配选择器*(匹配所有)

Screenshot_2023-01-16-23-25-58-038_com.ss.android.jpg

标签选择器(用标签设置样式)

id选择器,设置时id在此页面需是唯一的值

类选择器

属性选择器:通过这个元素的属性值来设置

^=表示如果以某个符号开头则被选上,$=表示如果以某个符号结尾则被选上

伪类:不基于标签和属性定位元素,可分为状态伪类(该元素处于特定状态)和结构性伪类(根据动节点在动树种出现的位置来决定石佛选择这个元素)。

组合方式

Screenshot_2023-01-16-23-38-25-026_com.ss.android.jpg 选择器组:用逗号隔开的选择器

Screenshot_2023-01-16-23-41-40-592_com.ss.android.jpg rgb可用来表示颜色,括号中从左到右为红绿蓝大小为0到255,rgb(红,绿,蓝)

hsl也可用来表示颜色,通过颜色的特点来表示(色相、饱和度、亮度)即hsl(H,S,L)H数字为0到360,S与L数字均为0~100

Screenshot_2023-01-16-23-45-22-341_com.ss.android.jpg

alpha透明度(0~1)为1的时候不透明,写在rgb或hsl后面一位

Screenshot_2023-01-16-23-48-35-949_com.ss.android.jpg

字体font-family

Screenshot_2023-01-16-23-50-09-382_com.ss.android.jpg 如图设置多个字体是因为可能多个用户访问,他们字体不一样。

通用字体族

Screenshot_2023-01-16-23-52-12-880_com.ss.android.jpg 添加的字体一定要有一种通用字体族,展示英文字符需把英文写在中文前面(建议)

Screenshot_2023-01-28-18-05-18-369_com.ss.android.jpg 也可用web fonts来加入字体

font-size(设置字体大小)

方法:关键字例如small、medium、large

长度例如:px、em

百分数例如:相对于父元素字体大小

Screenshot_2023-01-28-18-10-20-622_com.ss.android.jpg font-weight来表示字重,即字的粗细(从100到900)其中400为normal,700为bold。但是还要看该字体设置的字重的范围。

line-height(行高)

html中连续空格与换行可能会合并成一个,可通过css中white-space来规避

normal即正常情况,连续空格或换行会合并成一个

nowrap则会强制不换或不空格

pre表示保留所有空格和换行

pre-wrap表示一行内显示不下的时候会进行换行,但是会保留空格

pre-line表示合并空格但是保留换行

调试CSS

右键点击页面选择检查或者使用快捷键ctrl+shift+I(windows), cmd+opt+I(Mac)

深入CSS

选择器优先级问题(根据其特异度来决定)

Screenshot_2023-01-28-19-40-34-562_com.ss.android.jpg id>(伪)类>标签

继承:某些属性会自动继承其父元素的计算值,除非显示指定一个值。后面为个人理解(若一个元素没有设置任何东西,就会看向其父元素的样式来进行继承)例子:

Screenshot_2023-01-28-19-46-23-937_com.ss.android.jpg 一般和文字相关的属性可以继承,但是盒模型一般不可以例如:宽度

显式继承(inherit)

Screenshot_2023-01-28-19-50-54-295_com.ss.android.jpg 如果父级也没设置,则会用到初始值

Screenshot_2023-01-28-19-51-44-768_com.ss.android.jpg

CSS求值过程

Screenshot_2023-01-28-19-52-48-838_com.ss.android.jpg

Screenshot_2023-01-28-19-56-36-144_com.ss.android.jpg

Screenshot_2023-01-28-19-58-07-571_com.ss.android.jpg 注:继承中,一般继承的是父级的计算值

布局:确定内容的大小和位置的算法,依据元素、容器、兄弟节点和内容等信息来计算

布局相关技术:常规流(行级、块级、表格布局、FlexBox)、浮动、绝对定位

盒模型

Screenshot_2023-01-28-20-05-35-172_com.ss.android.jpg

Screenshot_2023-01-28-20-06-38-484_com.ss.android.jpg

Screenshot_2023-01-28-20-07-00-864_com.ss.android.jpg

padding Screenshot_2023-01-28-20-09-10-788_com.ss.android.jpg

border:指定容器边框样式、粗细和颜色 Screenshot_2023-01-28-20-11-21-628_com.ss.android.jpg

margin Screenshot_2023-01-28-20-13-08-332_com.ss.android.jpg 使用margin:auto水平居中

box-sizing:border-box Screenshot_2023-01-28-20-16-43-365_com.ss.android.jpg 使用border-box和不使用的区别,实际情况下会用border-box Screenshot_2023-01-28-20-18-00-825_com.ss.android.jpg

若指定了框的宽度和高度但是里面内容超出了框,可以使用overflow来解决

Screenshot_2023-01-28-20-20-22-125_com.ss.android.jpg visible:还是会展示出来;hidden:会剪掉隐藏;scroll:有滚动条

块级vs.行级

Screenshot_2023-01-28-20-22-25-990_com.ss.android.jpg 行级宽度和高度由里面内容决定

Screenshot_2023-01-28-20-24-24-490_com.ss.android.jpg

Screenshot_2023-01-28-20-25-27-348_com.ss.android.jpg

Screenshot_2023-01-28-20-26-44-933_com.ss.android.jpg

行级排版上下文

Screenshot_2023-01-28-20-27-32-707_com.ss.android.jpg

块级排版上下文

Screenshot_2023-01-28-20-30-17-865_com.ss.android.jpg 其中排版规则

Screenshot_2023-01-28-20-30-54-355_com.ss.android.jpg

Flex Box

Screenshot_2023-01-28-20-35-19-609_com.ss.android.jpg

根据主轴的对齐方式(主轴是方向向右的一条线)

justify-content Screenshot_2023-01-28-20-39-05-393_com.ss.android.jpg

align-items Screenshot_2023-01-28-20-40-50-930_com.ss.android.jpg

Flexibility Screenshot_2023-01-28-20-42-41-779_com.ss.android.jpg flex-grow规则:将该容器刨去的一部分按照比例分配的两个不同容器当中,不是他们容器的比例(个人理解)

一些缩写 Screenshot_2023-01-28-20-46-42-828_com.ss.android.jpg

Grid布局(划分格子将内容放入其中) Screenshot_2023-01-28-20-48-36-357_com.ss.android.jpg

Screenshot_2023-01-28-20-49-38-846_com.ss.android.jpg

如何划分格子

Screenshot_2023-01-28-20-50-44-005_com.ss.android.jpg columns是列方向的划分,rows是行方向的划分,fr表示一份的意思

Screenshot_2023-01-28-20-52-55-001_com.ss.android.jpg

grid line 网格线

Screenshot_2023-01-28-20-53-27-025_com.ss.android.jpg 可标记线,通过线的编号来划分区域

Screenshot_2023-01-28-20-56-59-798_com.ss.android.jpg

float浮动(实现文字环绕的效果)

Screenshot_2023-01-28-20-57-46-016_com.ss.android.jpg

绝对定位

Screenshot_2023-01-28-20-58-30-454_com.ss.android.jpg

relative Screenshot_2023-01-28-21-01-08-996_com.ss.android.jpg

absolute Screenshot_2023-01-28-21-01-51-908_com.ss.android.jpg 相对于relative的父级来定位,如果都没有就根据根源来定位

fixed用法举例 Screenshot_2023-01-28-21-05-46-370_com.ss.android.jpg 其导航部分不会随着滚动条而改变位置