走进并深入 CSS | 青训营笔记

48 阅读3分钟

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

一、本堂课重点内容

  • CSS 代码构成
  • CSS 使用方法
  • CSS 流程之选择器组、文本渲染
  • 调试 CSS
  • CSS 选择器的特异度
  • CSS 继承
  • CSS 求值过程解析
  • CSS 布局方式及相关技术
  • CSS 盒模型 - 行级
  • CSS 盒模型 - 块级

二、详细知识点介绍

CSS含义

  • Cascading Style Sheets
  • 用来定义页面元素的样式
  • 设置字体和颜色
  • 设置位置和大小
  • 添加动画效果

页面使用方式

  • 内联(这个是在标签里面写样式的)
  • 外联(这个是在本文件外写样式,然后再本文件中引用外部文件的样式)
  • 嵌入(在style大标签里面写各种小标签的样式)
    示例代码如下:
<!-- 外链 -->
<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>

CSS工作模式

图片.png

选择器介绍

  1. 选择器 Selector
  2. 通配选择器
  3. 标签选择器
  4. 类选择器
  5. id选择器
  6. 属性选择器

调试CSS

  • 右键点击页面,选择“检查”。
  • 使用 快捷键。Ctrl+Shift+I(Windows);Cmd+Opt+I(Mac)

CSS 选择器的特异度

  • 含义: 选择器的特殊程度
  • 计算方法: 数出选择器中 id 、(伪)类、标签的个数,从左往右(特殊性依次减小)排成三位数。这个三位数就是选择器的特异度。如果特异度相同顺序靠后的规则生效。

继承

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

显式继承

  • 使用 inherit 属性值设置,可以使不可继承的元素变为可继承。
  • 通配选择器内设置了所有容器大小都从父元素继承。

初始值

  • CSS 中,每个属性都有一个初始值

    • background-color 的初始值为 transparent
    • margin-left 的初始值为 0
  • 可以使用 initial 关键字显式重置为初始值

    • background-color: initial

布局含义

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

布局相关技术

  • 常规流
  • 浮动
  • 绝对定位

行级与块级区别

块级元素行级元素
不和其它盒子并列摆放和其它行级盒子一起放在一行或拆开成多行
适用所有的盒模型属性盒模型中的width、height不适用
生成块级盒子生成行级盒子;内容分散在多个行盒(line box)中
body、article、div、main、section、h1-6、sp、ul、li 等span、em、strong、cite、code 等
display: blockdisplay: inline

display 属性

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

常规流

  • 根元素、浮动和绝对定位的元素会脱离常规流
  • 其它元素都在常规流之内 (in-flow)
  • 常规流中的盒子,在某种排版上下文中参与布局

行级排版上下文

  • Inline Formatting Context (IFC)
  • 只包含行级盒子的容器会创建一个IFC
  • IFC 内的排版规则

块级排版上下文

  • Block Formatting Context (BFC)
  • 某些容器会创建一个BFC

Flex Box含义

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

三、课后个人总结

  • 要充分利用好 MDN 和 W3C CSS 规范
  • 一直保持好奇心,善于运用浏览器的开发者工具
  • 保持持续学习的心,CSS新特性还在不断出现,需要及时学习