CSS基础 | 青训营笔记

113 阅读3分钟

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

选择器Selector

多种方式选择元素: eg:

标签名、类名、id、属性、DOM树中的位置

通配选择器

标签选择器

id选择器

(唯一)

类选择器

属性选择器

$= 以指定结尾

链接选择器:

link, visited, hover, active, focus

结构伪类

li:first-child li:last-child

组合

image.png

颜色

RGB

rgb, 0-255 #000000-#ffffff

HSL

Hue, Saturation, Lightness 色相,饱和度,亮度

alpha透明度

font-family

通用字体族:
Serif衬线字体
Sans-Serif无衬线体
Cursive手写体
Fantasy
Monospace 等宽字体

white-space

normal:空格合并 nowrap:强制不换行 pre:保留所有 pre-wrap: 行内显示不下的时候换行 pre-line:合并空格保留换行

深入CSS

优先级

特异度(Specificity)越高优先级越高

image.png

继承

某些属性会自动继承其父元素的计算值,除非显式指定一个值

显示继承

eg: box-sizing 不可继承

*{
box-sizing: inherit
}
.some-widget{
box-sizing: content-box
}

初始值

background-color: transparent margin-left: 0 background-color: initial

CSS求值过程

image.png

image.png

image.png

布局 Layout

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

布局相关技术

常规流:行级、块级、表格布局、FlexBox、Grid布局
浮动 绝对定位

盒模型

image.png

width

指定content box宽度 取值长度、百分数(相对容器content box宽度)、auto

height

同width 容器有指定高度时,百分数才生效

image.png

padding

border

三种属性、四个方向

margin

长度、百分数(相对于容器宽度)、auto margin collapse:两个边距取较大边距

  • border-box: 包含border和padding的值 image.png

overflow

visible, hidden, scroll

display属性

block 块级盒子 inline 行内盒子 inline-block 本身是行级,可以放在行盒中;可以设置宽高;作为一个整体不会被拆散成多行 none 排版时完全被忽略

行级排版上下文

Inline Formatting Context(IFC) 只包含航机盒子的容器会创建一个IFC
IFC内排版规则;
-盒子在一行内水平摆放
-一行放不下时换行显示
-text-align决定一行内的盒子的水平对齐
-vertical-align决定行内垂直对齐
-避开float元素

实现打断一个单词换行:

div{
    width: 10em;
    overflow-wrap: break-word
    background: #411;
    }

块级排版上下文

Block formatting Context(BFC) 内的排版规则:
盒子从上到下摆放,垂直margin合并,BFC内盒子和margin不会与外面的合并,BFC不会和float重叠

FLex Box

一种新的排版上下文 可以控制子级盒子的: 摆放的流向;摆放顺序;盒子宽度和高度;水平和垂直方向的对齐;是否允许折行

.container{
diaplay: flex;
}

主轴和侧轴

justify-content

image.png

align-items

image.png

Flexibility 可以设置子项的弹性。
flex-grow 有剩余空间时的伸展能力
flex-shrink
flex-basis 没有伸展或收缩时的基础长度

Grid布局

position属性

static 默认值
realtive 相对自身原本位置偏移,不脱离文档流 absolute 绝对定位 相对非static祖先元素定位 fixed 相对于视口绝对定位