理解 CSS| 青训营笔记

31 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第2天

CSS 作为前端技术栈中关键一环,对页面元素及样式呈现起到了直接作用;

今天的课程由浅入深,从最基础的CSS的基本语法使用,深入到CSS的一些高级特性以及CSS布局的几种常用布局,比较系统也比较全面,既可以当初步学习,也可以当一次系统CSS知识的复习。

Css基本构成

image.png

Css三种使用方法

<!--外链-->

<link rel="stylesheet"href="/assets/style.css

<!--嵌入-->

<style> li{margin:0;list-style:none;} p{margin:lem 0;} </style>

<!--内联-->

<p style="margin:lem 0">Example Content</p>

伪类(pseudo-classes)

  • 不基于标签和属性定位元素
  • 几种伪类
    • 状态伪类

    • 结构性伪类

image.png

CSS 选择器的特异度

image.png 可便于设置复用,改变样式

CSS 继承

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

  1. 跟文字相关的属性,一般可继承,
  2. 和盒模型相关的,例如width等的一般不可继承。

image.png

找不到继承的值时,会使用初始值:

  • CSS中,每个属性都有一个初始值
  • background-color的初始值为transparent
  • margin-left的初始值为0
  • 可以使用initial 关键字显式重置为初始值background-color:initial

CSS求值过程:

image.png 完整过程:cdpn.io/webzhao/deb…

CSS 布局方式及相关技术

image.png

盒子模式:

块级

  • Block Level
  • 不和其它盒子并列摆放
  • 开成多行
  • 适用所有的盒模型属性

行级

  • Box Inline Level Box
  • 和其它行级盒子一起放在一行或拆
  • 盒模型中的width、height不适用

display 属性:

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

image.png

行级排版上下文

  • Iline Formating Context(IFC)
  • 只包含行级盒子的容器会创建一个IFC
  • IFC内的排版规则
    • 盒子在一行内水平摆放
    • 一行放不下时,换行显示
    • text-align 决定一行内盒子的水平对齐
    • vertical-align 决定一个盒子在行内的垂直对齐
    • 避开浮动(float)元素*

块级排版上下文

  • Block Formatting Context(BFC)
    • 盒子从上到下摆放
    • 垂直margin合并
    • BFC内盒子的margin不会与外面的合并
    • BFC不会和浮动元素重叠
  • 某些容器会创建一个BFC
  • 根元素
  • 浮动、绝对定位、inline-block
  • Flex子项和Grid子项
  • overflow 值不是visible的块盒
  • display:flow-root;

Flex Box是什么?

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

主轴与侧轴 image.png

justify-content

image.png

align-items image.png

Flexibility

  • 可以设置子项的弹性:当容器有剩余空间时,会伸展;容器空间不够时,会收缩。
  • flex-grow 有剩余空间时的伸展能力
  • flex-shrink 容器空间不足时收缩的能力
  • flex-basis 没有伸展或收缩时的基础长度

flex-grow 设置不同值的效果 image.png

Grid 布局 image.png

先画格子再把元素填进格子里

image.png image.png image.png

float浮动布局 把一个元素“浮动”(float)起来,会改变该元素本身和在正常布局流(normal flow)中跟随它的其他元素的行为;关键是会脱离文档流。

position属性

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

position: relative image.png

position: absolute image.png