div外边距重合问题及解决方法

本篇文章给大家带来了关于css的相关知识,其中主要介绍了关于如何解决div外边距重合的相关问题,外边距的重叠只产生在普通流文档的上下外边距之间,只有块元素会发生外边距重叠,行内元素和行内块元素都不会发生外边距重叠问题,下面一起来看一下,希望对大家有帮助。

div外边距重合问题及解决方法

(学习视频分享:css、css)

CSS 外边距重叠(外边距塌陷)

块的上外边距(margin-top)和下外边距(margin-bottom)有时合并(折叠)为单个边距,其大小为单个边距的最大值(或如果它们相等,则仅为其中一个),这种行为称为边距折叠。

边界重叠是指两个或多个盒子(可能相邻也可能嵌套)的相邻边界(其间没有任何非空内容、补白、边框)重合在一起而形成一个单一边界。

换句话说,外边距重叠是指两个垂直相邻的块级元素,当上下两个边距相遇时,起外边距会产生重叠现象,且重叠后的外边距,等于其中较大者。

margin值重叠计算的方法:

margin值都为正,取两者的最大的值。

出现负边界,用最大的正边界减去绝对值最大的负边界。

如果没有正边界,则从零中减去绝对值最大的负边界。

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

外边距的重叠只产生在普通流文档上下外边距之间, 只有 块元素 会发生外边距重叠,行内元素行内块元素 都不会发生外边距重叠问题

二、什么情况下会发生外边距重叠呢

第一种情况: 相邻兄弟元素的marin-bottom和margin-top的值发生重叠

发生边界重叠,只会挑选最大边界范围留下,所以两者之间的边距为100px
如果需要解决这个边界重叠问题,则需在后一个元素加上float 或 给其中一个兄弟套上一个div,设置border:1px solid white;

#box1{ width: 200px; height: 200px; background: lemonchiffon; margin-bottom: 50px; margin-top: 50px; } #box2{ width: 200px; height: 200px; background: lightcoral; margin-top:100px ; opacity: 0.3; float: left; //加上float后,两者间距为150px }

登录后复制

第二种情况:父级和第一个/最后一个子元素的margin合并

#box1{ width: 200px; height: 200px; background: lemonchiffon; margin-top: 50px; } #box3 { width: 100px; height: 100px; background-color: #f12416; margin-top: 50px; }

登录后复制

例子的效果如下图:

div外边距重合问题及解决方法

当同时设父元素和子元素的margin-top都为50px时,父元素和子元素都距离边界50px,而不是我们认为的子元素距离父元素50px。

当父元素不设置上边距,子元素设置margin-top为50px时,此时还是父子元素距离顶端50px

解决方法:

方法一:给父元素加overflow:hidden;

这种方法解决了我们外边距重叠问题,但是这个方法只适用于 “子元素的高度加上外边距高度小于父元素高度(childHeight +margin-top ,不然子元素部分内容就会被隐藏掉

方法二:给父元素加边框 border(可以加个透明的边框)

方法三:给父级或者子级设置display:inline-block;

既然只有块元素会产生外边距重叠,那么我们就让它不是块元素,把它设置为行内块元素

方法四:给父级或者子级设置float

方法五:给父级或者子级设置position: absolute;

方法六:给父元素添加padding

#box1{     width: 200px;     height: 200px;     background: lemonchiffon;     margin-top: 50px;     /*overflow:hidden;*/     /*border: 1px solid #00000000;*/     /*display: inline-block;*/     /*float:left;*/     /*position: absolute*/     /*padding: 10px;*/ } #box3 {        width: 100px;        height: 100px;        background-color: #f12416;        margin-top: 50px;        /*display: inline-block;*/        /*float:left;*/        /*position: absolute*/    }

登录后复制

第三种情况:空的块级元素

自身的margin-top和margin-bottom发生的重叠。我们可以通过为其设置border、pa
dding或者高度来解决这个问题。

  
#box1{ width: 200px; height:200px; background:lightseagreen; margin-bottom:50px ; } #box2{ margin-top: 20px; margin-bottom:20px ; border: 1px solid salmon; //加了border或padding后,与上下两个元素的间距分别为50px和100px,没加之前,上下两个元素的间距为100px /*padding: 1px; */ } #box3{ width: 200px; height:200px; background:darkgoldenrod; margin-top:100px ; }

登录后复制

加了border或padding后,与上下两个元素的间距分别为50px和100px,没加之前,上下两个元素的间距为100px

第四种情况: 高度为auto的父元素的margin-bottom和子元素的margin-bottom发生重叠

父元素设置border-bottom、padding-bottom来分隔它们,也可以为

父元素设置一个高度,max-height和min-height也能解决这个问题

三、外边距重叠是怎么算的

全部都为正值,取最大者;

不全是正值,则都取绝对值,然后用正值减去最大值;

没有正值,则都取绝对值,然后用0减去最大值。

(学习视频分享:css、css)

以上就是div外边距重合问题及解决方法的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2866135.html

(0)
上一篇 2025年3月10日 17:46:11
下一篇 2025年3月6日 06:31:54

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 一起聊聊CSS盒子大小与内外边距及边框的关系

    本篇文章给大家带来了关于css的相关知识,其中给大家介绍了关于盒子大小与内外边距及边框关系的相关问题,css学习三大重点是css盒子模型、浮动、定位,下面一起来看一下,希望对大家有帮助。 (学习视频分享:css、css) 3-11  盒子大…

    2025年3月10日 编程技术
    200
  • css伪选择器学习之伪类选择器解析

    在之前的文章《css伪选择器学习之伪元素选择器解析》中,我们学习了伪元素选择器,而今天我们详细了解一下伪类选择器,希望对大家有所帮助! 伪类选择器 伪类选择器 是一种允许通过未包含在HTML元素的状态信息来定位HTML元素的用法。伪类选择器…

    2025年3月10日 编程技术
    200
  • 介绍下CSS盒子模型以及box-sizing属性

    本篇文章给大家带来了关于css的相关知识,其中主要介绍了css盒子模型以及box-sizing属性的相关问题,box-sizing属性定义如何计算一个元素的总宽度和总高度,主要设置是否需要加上内边距(padding)和边框等,下面一起来看一…

    2025年3月10日 编程技术
    200
  • 一文详解css中的UI状态伪类选择器

    UI状态伪类选择器,用于选择处于某种状态下的UI元素,主要用于HTML表单上,根据表单元素的不同状态,定义不同的样式,来增强用户体验。 UI状态伪类选择器的特征:指定的样式只有在某种状态下才起作用 表单元素的状态包括获得焦点、失去焦点、选中…

    2025年3月10日 编程技术
    200
  • CSS伸缩盒布局(总结分享)

    本篇文章给大家带来了关于css的相关知识,其中主要介绍了关于css伸缩盒布局的相关问题,一个元素设置 css 属性 display:flex 或者 display:inline-flex ,该元素就变为伸缩容器,下面一起来看一下,希望对大家…

    2025年3月10日
    200
  • css常用font字体属性有哪些?字体属性详解

    字体设置是网页设计中的重要组成部分,合适的字体不仅会使页面更加美观,也可以提升用户体验。css 中提供了一系列用于设置文本字体样式的属性,比如更改字体,控制字体大小和粗细等等。 【推荐学习:css视频教程】 css font字体属性 属性 …

    2025年3月10日 编程技术
    200
  • css背景渐变属性之径向渐变知识点总结

    本篇文章给大家带来了关于css的相关知识,其中主要介绍了径向渐变的相关问题,径向渐变可以理解为有了半径值的渐变,即最终的效果不再是沿着一条直线轴进行渐变。最终实现的效果是圆形或者椭圆形,下面一起来看一下,希望对大家有帮助。 (学习视频分享:…

    2025年3月10日 编程技术
    200
  • 一起看看CSS实现盒子的转换与过渡效果

    本篇文章给大家带来了关于css的相关知识,其中主要介绍了关于transform变换和transitions过渡的相关问题,一起看看css实现盒子的转换与过渡效果,希望对大家有帮助。 (学习视频分享:css、css) transform变换 …

    2025年3月10日 编程技术
    200
  • 纯CSS实现多级导航联动(附图文示例)

    css/editerView/ck_htmledit_views-b3c43d3711.css”/> 前言导航栏之前也做过……但都是很简单的一级导航栏或者用jq实现的二级导航栏。但是关于页面展示的东西,还是应该由css来实…

    2025年3月10日
    200
  • 一张图帮你完全掌握CSS所有属性!

    css 属性被分为不同的类型,如字体属性、文本属性、边框属性、边距属性、布局属性、定位属性、打印属性等。对于初学者来说,初学 css 的最大障碍是如何熟悉并掌握这些属性的使用。 提示:不要急于记住每个 CSS 属性,不要急于一下吃透它们的用…

    2025年3月10日
    200

发表回复

登录后才能评论