文档流与盒子模型 (12.25日)

一、文档流(normal flow)

我们创建的元素(标签)默认情况下都处于文档流中,元素分为「在文档流中」和「脱离文档流」两种状态,脱离文档流后,元素的块 / 行内 / 行内块特性将失效。

1. 元素在文档流中的核心特点

(1)块元素

  • 独占一行;
  • 宽度默认是父元素的 100%;
  • 高度默认被内容撑开。

(2)内联元素(行内元素)

  • 不会独占一行;
  • 宽度、高度默认被内容撑开,无法自定义。

(3)行内块元素

  • 兼具块元素、行内元素特点(可自定义宽高,且不独占一行);
  • 存在「三像素空白」问题(多个行内块元素横向排列时,元素间会有默认空白)。

2. 元素类型转换(display)

display: ;通过属性可转换元素类型,实现布局灵活调整(行内块横向排列方式需慎用,避免三像素空白问题):

可选值:

none 隐藏元素

block 将元素转成块元素

inline 将元素转成行内元素

inline-block 将元素转成行内块元素

使用将块元素转成行内块元素,从而使元素横向排列 的这种方式,我们要慎用

css 复制代码
.box1, .box2 {
  width: 100px;
  height: 100px;
  background-color: red;
  /* 元素类型转换核心语法 */
  display: none; /* 隐藏元素 */
  display: block; /* 转为块元素 */
  display: inline; /* 转为行内元素 */
  display: inline-block; /* 转为行内块元素(横向排列) */
}
.box2 {
  background-color: green;
}
css 复制代码
<div class="box">
  <div class="box1">box1</div>
  <div class="box2">box2</div>
</div>

二、盒模型(box model):元素的大小与间距控制

是一种概念,将页面中所有的元素,看成一个个矩形的盒子,

这样我们在布局整个页面时,就只需要考虑布局的大小以及位置就可以了,不需要考虑形状

每一个盒子,都是由4个部分构成

盒子 空调快递

内容区 空调

内边距 防撞泡沫

边框 快递盒子

外边距 位置

1. 内容区(content):元素的核心显示区域

内容区是元素中子元素和文本的排列区域,默认情况下,width,height设置的是内容区的大小:

css 复制代码
.box1 {
  width: 200px; /* 内容区宽度200px */
  height: 200px; /* 内容区高度200px */
  background-color: red;
}
css 复制代码
<div class="box1">
  快赠拢沉我斗是谓毒。
</div>

2. 边框(border):元素的边缘样式

边框属于盒子边缘,边框以内属于盒子内部,出了边框都是盒子的外部

设置边框必须指定三个样式 (大小,颜色,样式)

(1)边框基础语法

css 复制代码
.box {
  /* 1. 简写方式(推荐):大小 颜色 样式 */
  border: 10px black solid;

  /* 2. 完整写法(拆分属性) */
  border-width: 10px; /* 边框大小,默认1-3px */
  border-color: red; /* 边框颜色,默认黑色 */
  border-style: solid; /* 边框样式(必写) */

  /* 3. 多值写法(上 右 下 左 / 上 左右 下 / 上下 左右 / 全方向) */
  border-width: 10px 20px 30px 40px; /* 四个值:上 右 下 左 */
  border-color: green red black blue; /* 四个值:上 右 下 左 */
  border-style: solid dashed dotted double; /* 四个值:上 右 下 左 */
}

(2)边框样式可选值

取值 说明
none 无边框
solid 线(最常用)
dashed 条状虚线
dotted 点状虚线
double 双线

注意:以上三个样式,后面的属性值都可以写多个

4个 上 右 下 左

3个 上 左右 下

2个 上下 左右

1个 上下左右

(3)单方向边框设置与去除

border-xxxx: none ;

css 复制代码
.box {
  /* 单独设置某一边边框 */
  border-top: 10px solid red; /* 上边框 */
  border-left: 10px solid blue; /* 左边框 */
  border-right: 10px solid green; /* 右边框 */
  border-bottom: 10px solid yellow; /* 下边框 */

  /* 去除某一边边框 */
  border-bottom: none; /* 去除下边框 */
}

(4)实战:自定义三角形箭头

利用边框透明特性实现三角形,是布局中箭头、气泡的常用技巧:

宽和高一定要设置为

css 复制代码
.box {
  width: 0px; /* 内容区宽高设为0 */
  height: 0px;
  border: 30px solid black; /* 边框大小30px */
  /* 仅保留左边框,其余设为透明 */
  border-color: transparent transparent transparent black;
}

3. 内边距(padding):内容区与边框的间距

内边距是内容区到边框的距离,会增加元素的整体大小,支持多值写法和单方向设置。

设置内边距

padding: ;

4个 上 右 下 左

3个 上 左右 下

2个 上下 左右

1个 上下左右

(1)内边距基础语法

css 复制代码
.box1 {
  width: 200px;
  height: 200px;
  background-color: #bfa;
  border: 10px solid green;

  /* 1. 多值写法(上 右 下 左 / 上 左右 下 / 上下 左右 / 全方向) */
  padding: 10px 20px; /* 上下10px,左右20px */

  /* 2. 单方向设置 */
  padding-top: 20px; /* 上内边距 */
  padding-right: 20px; /* 右内边距 */
  padding-bottom: 20px; /* 下内边距 */
  padding-left: 20px; /* 左内边距 */
}
.box2 {
  width: 100%;
  height: 100%;
  background-color: orange;
}

4. 外边距(margin):元素之间的间距

控制的是元素与元素之间的距离,并不影响整个盒子的大小

设置外边距

(1)外边距基础语法

css 复制代码
.box1 {
  width: 200px;
  height: 200px;
  background-color: #bfa;
  border: 10px solid red;

  /* 1. 多值写法(上 右 下 左) */
  margin: 10px 20px 40px 50px;

  /* 2. 单方向设置及效果 */
  margin-top: -50px; /* 上外边距:正值向下移,负值向上移 */
  margin-right: 50px; /* 右外边距:块元素默认无效果 */
  margin-bottom: 50px; /* 下外边距:正值下方元素下移,负值上方移 */
  margin-left: 50px; /* 左外边距:正值向右移,负值向左移 */
}
.box2 {
  width: 200px;
  height: 200px;
  background-color: orange;
}

(2)单方向外边距核心特性

外边距属性 效果说明
margin-top 正值:元素向下移动;负值:元素向上移动
margin-right 块元素默认无效果
margin-bottom 正值:下方元素向下移动;负值:下方元素向上移动
margin-left 正值:元素向右移动;负值:元素向左移动

5. 圆角(border-radius):元素的圆角样式

border-radius用于设置元素圆角,本质是以指定像素为半径画圆,支持单角设置和全角统一设置。

css 复制代码
.box2 {
  width: 100px;
  height: 100px;
  background-color: #bfa;
  /* 1. 全角统一设置(常用:50%实现圆形) */
  border-radius: 50%; /* 宽高相等时,实现正圆形 */

  /* 2. 单角设置 */
  border-top-left-radius: 50px; /* 左上角圆角 */
  border-bottom-right-radius: 50px; /* 右下角圆角 */
}

html

css 复制代码
<div class="box2"></div>

总结

文档流和盒模型是 CSS 布局的两大基石,需重点掌握:

  1. 文档流中块 / 行内 / 行内块元素的核心特性,以及display实现的元素类型转换;
  2. 盒模型四大组成部分的作用:内容区控制核心大小,边框定义边缘样式,内边距调整内容与边框间距,外边距控制元素间位置;
  3. 边框的多值写法、三角形自定义技巧,以及外边距的位置偏移特性;
  4. border-radius实现圆角 / 圆形的核心用法。
相关推荐
哟哟耶耶2 小时前
component-Echarts圆环数据展示-延长线,label,鼠标移动提示,圆环数据中心总数,信息面板
前端·javascript·echarts
全栈软件开发2 小时前
Fidelity充电桩投资理财系统源码-前端uniapp纯源码+后端PHP
前端·uni-app·php
plmm烟酒僧2 小时前
使用 OpenVINO 本地部署 DeepSeek-R1 量化大模型(第二章:前端交互与后端服务)
前端·人工智能·大模型·intel·openvino·端侧部署·deepseek
Rhys..2 小时前
js-三元运算符
前端·javascript·数据库
不是,你来真的啊?2 小时前
Vue3响应式原理(源码)【reactive,ref,computed】
前端·vue·源码
snow@li2 小时前
前端:拖动悬浮小窗
开发语言·前端·javascript
2301_796512522 小时前
ModelEngine平台创建知识库体系 ,帮助“前端职业导航师”定制化私域知识累积
前端·modelengine
鹏程十八少2 小时前
Android ANR项目实战:Reason: Broadcast { act=android.intent.action.TIME_TICK}
android·前端·人工智能
温轻舟2 小时前
圣诞节雪人动态效果 | HTML页面
开发语言·前端·javascript·html·css3·温轻舟·圣诞