解决浮动引起的父元素高度塌陷

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #nav{
            background: red;
            /*父元素高度塌陷*/
        }
        #nav a{
            float: left;
            width: 200px;
            height: 30px;
            background: green;
            color: black;
        }
        #nav div{
            clear: both;
        }
        #main{
            height: 300px;
            background: orange;
        }
    </style>
</head>
<body>
     <div id="nav">
         <!--div宽度与父元素保持一致,高度由内容决定-->
         <a href="#">首页</a>
         <a href="#">首页</a>
         <a href="#">首页</a>
         <a href="#">首页</a>
         <div></div>
         <!--添加空的子元素,设置子元素清除浮动-->
     </div>
     <div id="main">qqqqqqqq</div>
</body>
</html>
<!--
针对父元素高度塌陷
解决方式:
1.直接给父元素固定高度
#nav{
    background: red;
    /*父元素高度塌陷*/
    height: 30px;
}
弊端 父元素中不只含有浮动元素,其高度不能确定
2.为父元素设置浮动
#nav{
    background: red;
    /*父元素高度塌陷*/
    float: left;
}
弊端 影响后面元素的布局(不推荐)

3.给父元素设置overflow为hidden或auto
#nav{
    background: red;
    /*父元素高度塌陷*/
    overflow: hidden;
}
弊端 hidden如果出现内容溢出,会被隐藏不显示
第一种第三种比较常用
4.清除浮动带来的影响(官方推荐)
1.属性 clear
2.解决父元素高度塌陷,解决浮动元素遮挡后面元素
3.取值
none 不作任何处理
left 清除当前元素前面元素左浮动带来的影响
不会被前面左浮动的元素压在下面
right both
-->
针对父元素高度塌陷
解决方式:
1.直接给父元素固定高度
#nav{
    background: red;
    /*父元素高度塌陷*/
    height: 30px;
}
弊端 父元素中不只含有浮动元素,其高度不能确定
2.为父元素设置浮动
#nav{
    background: red;
    /*父元素高度塌陷*/
    float: left;
}
弊端 影响后面元素的布局(不推荐)

3.给父元素设置overflow为hidden或auto
#nav{
    background: red;
    /*父元素高度塌陷*/
    overflow: hidden;
}
弊端 hidden如果出现内容溢出,会被隐藏不显示
第一种第三种比较常用
4.清除浮动带来的影响(官方推荐)
1.属性 clear
2.解决父元素高度塌陷,解决浮动元素遮挡后面元素
3.取值
none 不作任何处理
left 清除当前元素前面元素左浮动带来的影响
不会被前面左浮动的元素压在下面
right both

猜你喜欢

转载自blog.csdn.net/q354636996/article/details/82285759