1408 字
4 分钟
前端学习笔记
block
div 默认是一个 ```block“ 属性
block会默认自己占据独立的一行,并会占满父类的整个宽度
可以设置宽高,内外边距会推开其他元素。
以下是默认 display: block 属性的元素
| 名称 | 作用 |
|---|---|
| div | 定义文档中的分区或节,用于组合其他块级元素 |
| p | 定义段落 |
| h1-h6 | 定义HTML标题,h1最大,h6最小 |
| blockquote | 定义块引用,通常用于长引用 |
| pre | 定义预格式文本,保留空格和换行 |
| ul | 定义无序列表 |
| ol | 定义有序列表 |
| form | 定义供用户输入的HTML表单 |
- inline
行内元素,不会独占一行,
宽高(width&height)设置会忽略,这是因为它的大小是依据内容(content)决定
内外边距(margin)只会在水平推开别的元素
这是为您补充的几个HTML标签及其作用:
以下是默认 display: inline 属性的元素
| 名称 | 作用 |
|---|---|
| a | 定义超链接,用于从一个页面链接到另一个页面 |
| span | 定义文档中的行内元素组合,用于对行内元素进行样式设置 |
| code | 定义计算机代码文本,通常以等宽字体显示 |
| strong | 定义重要文本,通常以粗体显示 |
inline-block
inline-block 是 CSS 中 display 属性的一个值,它结合了行内元素和块级元素的特性。
inline-block 是 CSS 中 display 属性的一个值,它结合了行内元素和块级元素的特性。
| 特性 | 说明 |
|---|---|
| 同行显示 | 像行内元素一样,可以多个元素并排在一行 |
| 可设宽高 | 像块级元素一样,可以设置 width 和 height |
| 内外边距 | 上下左右的内外边距(margin/padding)都能正常生效 |
| 不强制换行 | 不会像块级元素那样在元素前后强制换行 |
.element { display: inline-block; width: 150px; /* 可以设置宽度 */ height: 100px; /* 可以设置高度 */ margin: 10px; /* 四周外边距都生效 */ padding: 20px; /* 四周内边距都生效 */}flex
给父元素,定义属性后,父属性就是一个 flex 容器(flex container),它的子元素则叫(flex item)
如下图 main axis 为主轴,而cross axis为交叉轴,默认主轴从左到右,交叉轴从上到下

容器属性(父元素)
| 属性 | 常用值 | 作用 |
|---|---|---|
| display | flex | 开启弹性布局 |
| flex-direction | row(默认值) / column / row-reverse(从右到左) / column-reverse(从下到上) | 主轴方向(行/列) |
| flex-wrap | wrap / nowrap | 是否换行 |
| justify-content | center(主轴居中)/ space-around(间距相同) / space-between(除第1和n元素间距平分) / flex-start(flex起始点) / flex-end(终点) / space-evenly(所有间距相同) | 主轴对齐 |
| align-items | center / stretch | 单行交叉轴对齐 |
| align-content | stretch(默认值) / center / space-evenly | 多行交叉轴分布 |
项目属性(子元素)
| 属性 | 常用值 | 作用 |
|---|---|---|
| flex-grow | 0 / 1 | 剩余空间放大比例 |
| flex-shrink | 1 / 0 | 空间不足缩小比例 |
| flex-basis | auto / 100px | 项目初始尺寸 |
| flex | 1 / none | 上面三个的简写 |
| align-self | center / flex-start | 单个项目交叉轴对齐 |
| order | 0 / -1 | 排列顺序(越小越前) |
grid
父元素
| 属性 | 常用值 | 作用 |
|---|---|---|
| display | grid | 开启网格布局 |
| grid-template-columns | 100px 1fr 2fr / repeat(3, 1fr) | 定义列宽 |
| grid-template-rows | 100px auto / repeat(2, 1fr) | 定义行高 |
| gap | 10px / 20px 10px | 行列间距(行 列) |
| justify-items | stretch / center / start / end | 单元格内水平对齐 |
| align-items | stretch / center / start / end | 单元格内垂直对齐 |
| place-items | center stretch | align-items + justify-items 简写 |
| justify-content | center / space-between | 整个网格水平对齐(容器大时) |
| align-content | center / space-around | 整个网格垂直对齐(容器大时) |
| grid-template-areas | "header header" "sidebar main" | 区域命名布局 |
子元素
| 属性 | 常用值 | 作用 |
|---|---|---|
| grid-column | 1 / 3 / 1 / span 2 | 跨列(起始/结束) |
| grid-row | 1 / 3 / 1 / span 2 | 跨行(起始/结束) |
| grid-area | header / 1 / 1 / 3 / 3 | 放入命名区域 或 指定位置 |
| justify-self | center / stretch / start / end | 单个项目水平对齐 |
| align-self | center / stretch / start / end | 单个项目垂直对齐 |
| place-self | center stretch | align-self + justify-self 简写 |
Flex vs Grid 快速选择
| 场景 | 推荐 |
|---|---|
| 一维布局(行或列) | Flex |
| 二维布局(行列都有) | Grid |
| 内容驱动(大小不确定) | Flex |
| 布局驱动(先画格子) | Grid |
| 导航栏/菜单 | Flex |
| 整体页面框架 | Grid |
CSS 定位
position 属性
| 值 | 特点 | 参考系 | 是否脱离文档流 |
|---|---|---|---|
| static | 默认值,正常文档流 | 无 | ❌ |
| relative | 相对自身原位置偏移 | 元素原本位置 | ❌ |
| absolute | 绝对定位 | 最近的非static祖先 | ✅ |
| fixed | 固定定位 | 视口(viewport) | ✅ |
| sticky | 粘性定位 | 父容器 + 视口 | 特殊 |
偏移属性
| 属性 | 作用 | 常用值 |
|---|---|---|
| top | 距离参考系上边界 | 0 / 10px / 20% |
| right | 距离参考系右边界 | 0 / 10px / 20% |
| bottom | 距离参考系下边界 | 0 / 10px / 20% |
| left | 距离参考系左边界 | 0 / 10px / 20% |
| z-index | 层叠顺序(数值越大越靠上) | 1 / 999 / -1 |
1. relative(相对定位)
.box { position: relative; top: 10px; left: 20px;}2. absolute(绝对定位)
把container当成参考系
.container { position: relative;}.child { position: absolute; top: 0; right: 0;}3. fixed(固定定位)
滚动页面时始终可见
.header { position: fixed; top: 0; left: 0; width: 100%;}4. sticky(粘性定位)
滚动到顶部时固定
.section-title { position: sticky; top: 0;}注意事项
| 场景 | 说明 |
|---|---|
| z-index生效条件 | 仅对非static定位元素有效 |
| absolute参考系 | 若祖先全static,参考根元素(html) |
| sticky限制 | 父容器不能有overflow |
| fixed移动端 | 在iOS下可能有兼容性问题 |
em和rem
em,rem是允许浏览器控制字体大小的单位, px会写死
em
用在font-size时,相对于自己的父元素计算大小
rem
相对于根元素计算大小
分辨
-
用em定义组件内部元素间相互关联的尺寸。比如组件内标题比例, 与字体联动的内边距,图标大小等。谨慎在font-size上使用em。
-
用rem定义与根元素相关的全局尺寸。比如正文基础字号,布局间 距,模块尺寸等。
-
用px定义不应随任何因素缩放的固定尺寸。比如边框宽度,阴影偏 移,固定大小的媒体元素等。
css重置
html { box-sizing: border-box;}*,*::before,*::after { box-sizing: inherit; margin: 0;}盒子尺寸控制
box-sizing: content-box;/* content-box为默认值, 它的计算方式为: border+padding+width/height */box-sizing: border-box;/* border-box则是 width和height定义从边框border开始计算 *//* 其中的 content大小会依据 padding border 自动向内收缩计算 */部分信息可能已经过时









