当前位置 博文首页 > m0_53521757的博客:CSS中解决父子边界重叠问题

    m0_53521757的博客:CSS中解决父子边界重叠问题

    作者:[db:作者] 时间:2021-08-21 16:18

    CSS中解决父子边界重叠问题

    什么情况会出现父子边界重叠问题?
    ???????子元素设置了margin-top属性传递给了父元素,导致子元素和父元素相邻的垂直外边距发生重叠。
    即:
    CSS样式代码

                #div_01{
    				height: 300px;
    				width: 300px;
    				background-color: antiquewhite;
    			}
    			#div_02{
    				margin-top: 50px;
    				height: 100px;
    				width: 100px;
    				background-color: red;
    			}
    
    <div id="div_01">
    			<div id="div_02">我是子元素的内容</div>
    		</div>
    

    出现父子边界重叠问题:
    在这里插入图片描述

    解决方法:
    1.在父标签中加内容

    <div id="div_01">
    			我是父元素的内容
    			<div id="div_02">我是子元素的内容</div>
    		</div>
    

    在这里插入图片描述
    2.在父标签中加一个空的table,触发BFC(空的table会触发BFC:块级格式化上下文)

    <div id="div_01">
    			<table></table>
    			<div id="div_02">我是子元素的内容</div>
    		</div>
    

    在这里插入图片描述
    3.用一个选择器在给指定的标签前后添加一个空元素(终极解决方案,以后直接拿来用)
    CSS样式代码

    <style type="text/css">
    			#div_01{
    				height: 300px;
    				width: 300px;
    				background-color: antiquewhite;
    			}
    			#div_02{
    				margin-top: 50px;
    				height: 100px;
    				width: 100px;
    				background-color: red;
    			}
    			.clearfix::before{
    				display: table;
    				content: "";
    			}
    		</style>
    
    <div id="div_01"  class="clearfix">
    			<div id="div_02">我是子元素的内容</div>
    		</div>
    

    在这里插入图片描述
    4.使父元素或者子元素浮动
    CSS样式代码

    <style type="text/css">
    			#div_01{
    				height: 300px;
    				width: 300px;
    				background-color: antiquewhite;
    			}
    			#div_02{
    				float: left;
    				margin-top: 50px;
    				height: 100px;
    				width: 100px;
    				background-color: red;
    			}
    		</style>
    
    <div id="div_01">
    			<div id="div_02">我是子元素的内容</div>
    		</div>
    

    在这里插入图片描述
    5.为父元素添加padding
    CSS样式代码

    <style type="text/css">
    			#div_01{
    				padding: 10px;
    				height: 300px;
    				width: 300px;
    				background-color: antiquewhite;
    			}
    			#div_02{
    				margin-top: 50px;
    				height: 100px;
    				width: 100px;
    				background-color: red;
    			}
    		</style>
    
    <div id="div_01">
    			<div id="div_02">我是子元素的内容</div>
    		</div>
    

    在这里插入图片描述
    6.为父元素添加overflow
    CSS样式代码

    <style type="text/css">
    			#div_01{
    				overflow: auto;
    				height: 300px;
    				width: 300px;
    				background-color: antiquewhite;
    			}
    			#div_02{
    				margin-top: 50px;
    				height: 100px;
    				width: 100px;
    				background-color: red;
    			}
    		</style>
    
    <div id="div_01">
    			<div id="div_02">我是子元素的内容</div>
    		</div>
    

    在这里插入图片描述
    7.为父元素或者子元素声明绝对定位

    #div_01{
    				position: absolute;
    				height: 300px;
    				width: 300px;
    				background-color: antiquewhite;
    			}
    			#div_02{
    				margin-top: 50px;
    				height: 100px;
    				width: 100px;
    				background-color: red;
    			}
    
    <div id="div_01">
    			<div id="div_02">我是子元素的内容</div>
    		</div>
    

    在这里插入图片描述

    8.为父元素添加border属性

    <style type="text/css">
    			#div_01{
    				background-color: antiquewhite;
    				height: 300px;
    				width: 300px;
    				border: 1px solid aqua;
    			}
    			#div_02{
    				margin-top: 50px;
    				height: 100px;
    				width: 100px;
    				background-color: red;
    			}	
    		</style>
    
    <div id="div_01" class="cls">
    			<div id="div_02">我是子元素的内容</div>
    		</div>
    

    在这里插入图片描述

    cs