position: absolute元素未设top/left时默认位于父容器左上角导致重叠;需显式设置定位值、父容器设position:relative、合理使用z-index分层及transform微调。

position: absolute 元素没设 top/left 就重叠
多个 position: absolute 元素如果都没写 top 和 left,浏览器会把它们全当 top: 0; left: 0 处理,结果堆在父容器左上角,文字自然重叠。这不是 bug,是规范行为。
- 必须显式声明每个元素的
top/left(或bottom/right),不能依赖“默认值” - 父容器一定要有
position: relative(或absolute/fixed),否则absolute元素会往上找最近的定位祖先,甚至跑到 viewport 里去 - 横向排列优先用
left+ 固定宽度控制间距,比只调top更可靠 - 微调位置建议用
transform: translateX()或translateY(),它不触发重排,比反复改left值更可控
z-index 调了但文字还是盖不住
z-index 不生效,大概率不是数值不够大,而是它根本没起作用。
- 先确认元素是否设置了
position(relative、absolute、fixed或sticky),position: static(默认)下z-index完全无效 - 检查父容器有没有悄悄创建新堆叠上下文:比如带
opacity: 0.99、transform: translateZ(0)、filter: blur(1px),这些会让子元素的z-index只在父级内部比较 - 用 Chrome DevTools 的 “Layers” 面板或 “Computed” 标签页里的 stacking context 查看是否被截断
- 数值别硬塞
z-index: 999999,按用途分层更稳妥:0–99(基础内容)、100–499(浮层)、500–999(弹窗)、1000+(全局提示)
浮动(float)后文字爬到图片上去了
这不是文字“跑偏”,是父容器高度塌陷导致后续段落的行框起点错位,line-height 再大也压不住。
-
clear: both必须加在浮动元素之后的**下一个兄弟块级元素**上,比如<img float:left>后面紧跟着的<p></p>,就给这个<p></p>加clear: both - 不要加在浮动元素自己身上,也不要在父容器上加——它不是兄弟,是祖先,浏览器根本不处理
- 更彻底的解法是让父容器触发 BFC:
display: flow-root(推荐)、overflow: hidden(注意会裁剪溢出内容)或contain: layout - 打印预览中
float和clear基本失效,得在@media print里强制float: none !important,再用flex或table重构
图片背景和文字重叠时层级总不对
用 background-image 当图层、文字另起一层时,容易忽略两个关键点:参照系和绘制顺序。
- 父容器必须设
position: relative,否则文字的position: absolute会相对于 viewport 定位,一缩放就飘走 - 文字容器要设
z-index,但图片只是背景,不参与层叠,所以真正要控制的是文字层和页面其他定位元素的关系 - 半透底色别直接涂在文字上(
color: rgba()会让文字发虚),改用伪元素::before铺一层background: rgba(0,0,0,0.6),再把文字设为白色 - 响应式下
bottom: 16px这类固定偏移容易失效,小屏可能切掉文字,建议结合min-width或媒体查询动态调整
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











