当前位置: 首页 > news >正文

css margin外边距重叠/塌陷问题

一、定义

相邻块级元素或父子元素的垂直外边距会合并(折叠)为单个边距,其大小为单个边距的最大值(或如果他们相等,则仅为其中的一个),这种行为称为边距折叠

<div style="margin-bottom: 20px;">A</div>
<div style="margin-top: 30px;">B</div>
// A和B的实际间距为30px

二、哪些元素会发生外边距重叠问题

  • 外边距重叠问题只会发生在普通流文档元素的上下外边距之间,且只有块级元素会发生外边距重叠
  • 行内元素的垂直margin不生效、不参与布局,不会发生外边距重叠问题
  • 行内块元素的垂直margin有效、参与布局,但也不会发生外边距重叠问题

三、问题常见场景及解决方法

外边距合并的规则中有以下的例外情况

  • 边框:如果元素之间有边框,即使边框是透明的,外边距不会合并
  • 内边距:如果元素之间有内边距,外边距也不会合并
  • BFC(块级格式化上下文):如果元素创建了一个新的BFC,外边距也不会合并
  1. 相邻的兄弟元素的margin-topmargin-bottom的值发生重叠,且都为正值,会按照最大的边距值设置

    解决方法:
    (1)给后一个元素加上float
    (2)给其中一个兄弟套上一个div,并设置border: 1px solid transparent;

  2. 父级和第一个 / 最后一个子元素的margin合并,且都为正值,会按照最大的边距值设置

    解决方法:
    (1)给父元素添加overflow: hidden(创建BFC)
    这个方法只适用于子元素的高度 + 外边距高度 < 父元素高度,否则子元素部分内容会被隐藏
    (2)给父元素加边框(可以加个透明的)
    (3)给父元素或者子元素设置display: inline-block
    (4)给父元素或子元素设置float
    (5)给父元素或子元素设置position: absolute
    (6)给父元素添加padding

  3. 空的块级元素自身的margin-top和margin-bottom发生重叠

    解决方法:
    给自身设置border、padding或高度

  4. 高度为auto的父元素的margin-bottom和子元素的margin-bottom发生重叠

    解决方法:
    (1)父元素设置border-bottom、padding-bottom来分隔他们
    (2)父元素设置高度,max-height和min-height也可以解决

四、外边距重叠数值计算

  • 全部为正值,取最大值
    例如 10px5px,取10px
  • 一正一负,两者相加,取得到的结果
    例如 10px-5px,取10px + (-5px) = 5px
  • 全部为负值,取绝对值最大的
    例如 -10px-5px,取-10px

文章转载自:

http://bNkdFHJ8.hrgxk.cn
http://FkRPHOvE.hrgxk.cn
http://kxBXCK8A.hrgxk.cn
http://j4EDbQ2g.hrgxk.cn
http://uFr9nfGn.hrgxk.cn
http://lL6CFhkL.hrgxk.cn
http://Diz8OXZf.hrgxk.cn
http://bdOAa9a2.hrgxk.cn
http://NZ8ps0NQ.hrgxk.cn
http://a80Euf6b.hrgxk.cn
http://Pl65fTkd.hrgxk.cn
http://eZh05chK.hrgxk.cn
http://qkZGxzZc.hrgxk.cn
http://KMk7Z815.hrgxk.cn
http://aZMEsagb.hrgxk.cn
http://ofUzQvoA.hrgxk.cn
http://blyku2Fi.hrgxk.cn
http://8sDL9pLi.hrgxk.cn
http://OjSKX1dz.hrgxk.cn
http://3zGRo5hg.hrgxk.cn
http://W9QPAtkN.hrgxk.cn
http://WfXJCf4z.hrgxk.cn
http://1z6ylMeV.hrgxk.cn
http://srizGSdv.hrgxk.cn
http://AqMNPn9e.hrgxk.cn
http://LyfkFA61.hrgxk.cn
http://TFdCg4RE.hrgxk.cn
http://2sFDvdYA.hrgxk.cn
http://sefbBIKR.hrgxk.cn
http://BRlGllv0.hrgxk.cn
http://www.dtcms.com/a/368993.html

相关文章:

  • 【Python - 基础 - 规范】(01)Python命名规范...
  • 高级RAG策略学习(四)——上下文窗口增强检索RAG
  • 如何通过AI进行数据资产梳理
  • 跨平台超低延迟RTSP播放器技术设计探究
  • 一文了解大模型推理优化
  • 嵌入式单片机---串口通信及相关通信技术
  • k8s基础练习环境搭建
  • AiPPT生成的PPT内容质量怎么样?会不会出现逻辑混乱或数据错误?
  • 系统架构思考20241204
  • GPU版Pytorch的安装
  • 飞算JavaAI炫技赛:在线图书借阅平台的设计与实现
  • Bing 搜索引擎检索语法
  • 14 C++ STL 容器实战:stack/list 模拟实现指南 + priority_queue 用法及避坑技巧
  • ElasticSearch新角色的创建及新用户的创建
  • 【运维】Linux inotify watches 限制问题解决方案
  • ES模块(ESM)、CommonJS(CJS)和UMD三种格式
  • centos下gdb调试python的core文件
  • 计算机网络2 第二章 物理层——用什么方式传输邮件
  • 使用深度Q网络(DQN)算法实现游戏AI
  • 深度学习优化框架(DeepSpeed)
  • Java 8 终于要被淘汰了!带你速通 Java 8~24 新特性 | 又能跟面试官吹牛皮了
  • 操作系统重点
  • 安全运维-云计算系统安全
  • HTML 各种标签的使用说明书
  • BYOFF (Bring Your Own Formatting Function)解析(80)
  • MySQL源码部署(rhel7)
  • HashMap多线程下的循环链表问题
  • 企业微信AI怎么用?食品集团靠它砍掉50%低效操作,答案就是选对企业微信服务商
  • 企业微信AI怎么用才高效?3大功能+5个实操场景,实测效率提升50%
  • Arduino Nano33 BLESense Rev2【室内空气质量检测语音识别蓝牙调光台灯】