每日前端面试题-css塌陷

一、外边距塌陷

外边距塌陷不是bug,只是css的一种特性。当这种特性跟我们预期的效果有冲突就需要解决。

什么情况下会产生外边距塌陷?外边距合并是BFC内元素边距直接接触。当两个元素处于同一个BFC,并且它们之间没有物理分隔,外边距区域直接接触,就会造成外边距合并。就会选择外边距中较大的一个生效。

什么是BFC?就是一个独立的布局区域,BFC内部的元素和外面的元素互不影响。这里强调一点,只有父子元素的外边距塌陷问题才是因为子元素影响到了父元素的外边距,也就是影响了父元素的外面,所以才能让父元素成为一个BFC的方式解决这个问题。但是同级元素外边距塌陷并不是容器内部元素对外部元素造成影响,而是这两个容器本身之间的影响。所以BFC方式只能解决父子元素外边距塌陷,也就是容器内元素对外部造成影响这种情况才有效。

如何创建一个独立布局区域(BFC),其实就是常见的display; float; position属性就能创建一个独立的布局区域。

解决方法:创建BFC,添加物理分隔

1、同级元素外边距塌陷

同时设置margin-bottom和margin-top,此时这两个元素本身的外边距就是设置的值,但是实际生效的外边距是这两个值中的较大者,也就是说两个盒子的真实的外边距不是margin-bottom和margin-top的和。

2、父子元素外边距塌陷

原因:父子盒子都没有设置边框,没有物理分隔,就会导致外边距合并。此时给子盒子设置外边距,两者外边距直接接触,此时就会选择较大的外边距生效。

二、高度塌陷

原因:父元素没有设置高度,它的高度是由子元素撑开的,如果子元素设置浮动,父元素的高度就为0

解决方法:

  1. 给父元素设置高度
  2. overflow: hidden
  3. 最后一个子元素后面添加一个盒子
  4. 伪元素after 用的最多,推荐使用
相关推荐
东方小月16 分钟前
从零开发一个 Coding Agent(七):实现纯文本 Agent Loop
前端·人工智能
大家的林语冰17 分钟前
👉 尤雨溪再次成立新公司,同时官宣 Pinia 4 正式发布!
前端·javascript·vue.js
浮生望21 分钟前
React useRef 深度解析:从DOM操作到Web Worker多线程协作
前端
浮生望27 分钟前
React Router v7 实战全景:路由配置、嵌套路由、鉴权守卫与懒加载完整指南
前端
用户9385156350728 分钟前
从零在浏览器里跑 DeepSeek-R1:WebGPU + Transformer.js 全链路实战(二)
前端·javascript·typescript
雪隐1 小时前
个人电脑玩AI-16让5060 Ti给你打工——MiniMax H3 提速实录:从"泡杯茶等视频"到"视频等你",一张 5060 Ti 的自我修养
前端·人工智能·后端
FungLeo1 小时前
Flutter Web 中文字体困境与渲染器选择:CanvasKit vs HTML renderer 实战
前端·flutter·html
敲代码的玉米C2 小时前
我修的那个 bug,制造了另一个 bug
前端·人工智能·架构
gis开发之家2 小时前
《Vue3 从入门到大神50篇》Vue3 源码详解(二十):生命周期钩子源码解析 —— onMounted / onUpdated 如何实现?
前端·javascript·前端框架·vue3·vue3源码
Narrastory2 小时前
我用 Claude Code 写代码不到 2 小时,却花了 3 天做完这个软件—Vibe Coding 的正确姿势,是设计不是生成
前端·人工智能·github