热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

盒子模型_CSS盒子模型中外边距(margin)折叠详解

篇首语:本文由编程笔记#小编为大家整理,主要介绍了CSS盒子模型中外边距(margin)折叠详解相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了CSS盒子模型中外边距(margin)折叠详解相关的知识,希望对你有一定的参考价值。




最近写项目过程中遇到一个CSS盒子模型中外边距(margin)折叠的情况,搞得我焦头烂额,之后再网上查阅了大量的资料,现做一个整理和总结,方便以后忘记的时候查阅,同时也供广大网友参考。如有错误或者总结方面不全的地方,欢饮广大网友指出。

外边距折叠的概念:所谓外边距折叠就是相邻的两个或多个元素(含有子元素的情况)的外边距会在垂直方向上合并成一个一个外边距。

CSS盒子模型中外边距(margin)折叠的常见情形有如下2种:


情况1、无子元素的相邻兄弟元素

触发margin折叠的条件:两个元素之间没有被其他非空元素隔开时触发外边距折叠。

情形说明:
1)如果两个元素的margin均为正值,则两个元素之间的margin=max(margin1,margin2);
附图说明:


技术图片

2)如两个元素的margin负值,则两者之间的margin=min(margin1,magin2),如图2 所示;
附图说明:


技术图片

3)如果两个元素中有margin为正值,有一个为负值,则两者之间的margin=margin1+margin2,如图三中所示margin=-50px+25px=-25px;
技术图片




情况2、子元素与父元素发生外边距折叠

触发条件:父元素无外边框(border)、无内边距(padding),且父元素与子元素之间无非空元素或文本信息时(子元素上边与父元素上边之间无非空元素文本信息,子元素下边与父元素下边之间可可以有非空元素和文本信息),折叠的基线为父元素最上的边或最下的边。
情形说明:
1)若父元素与子元素的margin值均为正,则折叠后的margin=max(margin1,margin2),如图四所示。
附图说明:


技术图片

2)若父元素与子元素的margin值均为负,则折叠后的margin=min(margin1,margin2),如图五所示。


技术图片

3)若父元素与子元素的margin其中有一个为正值,一个为负值,则折叠后的margin=minmargin1+margin2,如图六所示。

技术图片



推荐阅读
  • 小编给大家分享一下如何移除URL中的index.php,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收 ... [详细]
  • Python 内存管理机制详解
    本文深入探讨了Python的内存管理机制,涵盖了垃圾回收、引用计数和内存池机制。通过具体示例和专业解释,帮助读者理解Python如何高效地管理和释放内存资源。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 解决TensorFlow CPU版本安装中的依赖问题
    本文记录了在安装CPU版本的TensorFlow过程中遇到的依赖问题及解决方案,特别是numpy版本不匹配和动态链接库(DLL)错误。通过详细的步骤说明和专业建议,帮助读者顺利安装并使用TensorFlow。 ... [详细]
  • 深入理解K近邻分类算法:机器学习100天系列(26)
    本文详细介绍了K近邻分类算法的理论基础,探讨其工作原理、应用场景以及潜在的局限性。作为机器学习100天系列的一部分,旨在为读者提供全面且深入的理解。 ... [详细]
  • 本文详细介绍了如何将 Python 3.6.3 程序转换为 Windows 可执行文件(.exe),并解决了使用 py2exe 和 cx_Freeze 时遇到的问题。推荐使用 PyInstaller 进行打包,提供完整的安装和打包步骤。 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
  • 本文详细介绍了如何在 MySQL 数据库中进行表结构的修改,包括添加字段、修改字段类型和重命名列名等操作,旨在为开发者提供实用的技术参考。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • C/C++ 指针操作解析:双向链表中元素的取消链接
    本文详细解释了在C语言中使用指针进行双向链表元素取消链接的操作,探讨了`next->prev`和`prev`之间的关系,并提供了代码示例和可视化辅助理解。 ... [详细]
  • 本文介绍如何使用PHP在WordPress中根据分类类别ID或名称获取所有相关文章,提供详细的方法和代码示例。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • RStudio 1.4安装指南及使用说明
    RStudio 1.4 是一款强大的集成开发环境(IDE),专为 R 语言编程设计。它提供了简洁直观的用户界面和丰富的功能,能够显著提升数据科学家和程序员的工作效率。本文将详细介绍其安装步骤和主要特性。 ... [详细]
  • 本文详细介绍了如何在PHP中删除数组中的指定元素、第一个元素和最后一个元素,并提供了具体的代码示例和相关函数的使用说明。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
author-avatar
zhaoyan666777
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有