好嘞 🚀 我给你整理一份 通俗易懂的 CSS 布局教程,主要讲解 display、position、float 这三个最常用、也是最容易搞混的布局属性。配合例子+图解思路,学完你就能分清楚它们各自的作用与区别。
🌟 CSS 布局通俗易懂详解:display、position、float
一、display:元素如何“显示”
display
决定了 一个元素在页面上如何呈现,以及它和周围元素的排列方式。
常见取值:
- block(块级元素)
- 独占一行,从上到下排列
- 可以设置宽高、margin、padding
- 例子:
<div>
、<p>
默认就是块级
div { display: block; width: 200px; height: 100px; background: lightblue; }
- inline(行内元素)
- 不会独占一行,在一行内排列
- 不能设置宽高(宽高由内容撑开)
- 例子:
<span>
、<a>
默认就是行内
span { display: inline; background: pink; }
- inline-block
- 结合了 block 和 inline 的特点
- 在一行内排列,但可以设置宽高
- 适合做按钮、图文混排
button { display: inline-block; width: 100px; height: 40px; background: orange; }
- flex / grid(现代布局)
flex
→ 弹性布局,父容器控制子元素分布grid
→ 网格布局,更复杂但强大- 例子(水平居中):
.box { display: flex; justify-content: center; align-items: center; }
👉 小结:display 决定元素是“躺着一排”还是“竖着排”,以及能不能设置宽高。
二、position:元素在“哪儿”
position
决定了元素的 定位方式。
常见取值:
- static(默认值)
- 默认的“正常流”布局,不定位
- 元素按文档流从上到下、从左到右排列
- relative(相对定位)
- 相对于元素 原本位置 偏移
- 不会脱离文档流,占位还在
- 常用于微调
.box { position: relative; top: 10px; left: 20px; }
- absolute(绝对定位)
- 相对于 最近的非 static 父元素 定位
- 会 脱离文档流,不再占位置
- 常用于悬浮的按钮、提示框
.parent { position: relative; } .child { position: absolute; top: 0; right: 0; }
- fixed(固定定位)
- 相对于 浏览器窗口 定位,不随滚动条移动
- 常用于导航栏、返回顶部按钮
.backTop { position: fixed; bottom: 20px; right: 20px; }
- sticky(粘性定位)
- 介于 relative 和 fixed 之间
- 在滚动时,先按 relative,超过某个阈值后变 fixed
- 常用于吸顶导航
.nav { position: sticky; top: 0; }
👉 小结:position 决定“元素在哪里”,relative 保留占位,absolute/fixed 脱离文档流,sticky 吸附效果。
三、float:元素“浮起来”
原本的用途
float
最初是为 文字环绕图片 设计的- 元素浮动到左边(left)或右边(right),后面的文字会环绕在旁边
img {
float: left;
margin: 10px;
}
布局中的用法
在 flex/grid 出现前,float 经常被用来实现多列布局:
.column {
float: left;
width: 33%;
}
注意问题
- 元素 float 后,会 脱离文档流,父元素可能高度塌陷
- 解决办法:清除浮动
clearfix
.clearfix::after {
content: "";
display: block;
clear: both;
}
👉 小结:float 就像“飘”到左边或右边,常用于图文环绕和多列布局,但现在更多用 flex/grid。
四、三者对比
属性 | 控制内容 | 是否脱离文档流 | 典型用途 |
---|---|---|---|
display | 元素显示方式 | 否 | 行内/块级布局,flex/grid |
position | 元素位置 | relative 否 / absolute、fixed 是 | 定位、悬浮元素 |
float | 元素左右浮动 | 是 | 图文环绕、旧式多列布局 |
五、通俗理解总结
- display → 决定“排队方式”:横着站、竖着站,还是自由排布(flex/grid)。
- position → 决定“站在哪”:原地站(static),挪挪位置(relative),完全自由移动(absolute/fixed/sticky)。
- float → 决定“飘一边”:往左/右靠,剩下的空间让别人来环绕。
发表回复