css浮动和高度塌陷问题的解决方法

浮动

什么是浮动

CSS 中的浮动(Float)是一种布局技术,它允许元素脱离常规文档流,向左或向右移动,直到其外边缘碰到包含框或另一个浮动元素的边缘。浮动常用于文本环绕图像的场景,但也可以用于创建复杂的布局。

浮动属性

  • float: left;:元素向左浮动。
  • float: right;:元素向右浮动。
  • float: none;:默认值,元素不浮动。
  • float: inherit;:元素继承其父元素的浮动值

浮动演示

浮动前

浮动后

<!DOCTYPE html>  
<html lang="zh">  


    <!doctype html>
    <!--声明文档类型,告诉浏览器使用HTML5标准来渲染页面。-->
    <html>

    <head>
        <style>
            article{
                width: 600px;
                height: 600px;
                background-color: #000000;
                margin: 5px 0px;
            }
            div{
                width: 200px;
                height: 100px;
                background-color: #ff00ba;
                margin: 5px;

            }
            #div2{
                background-color: red;
                float: left;
            }
            #div3{
                background-color: green;
                float: left;
            }
            #div4{
                background-color: blue;
                float: left;
            }
        </style>
    </head>
    <!-- 盒子浮动后,会生成一个与父盒等宽的浮层 -->
    <body>
    <article>
        <div>1</div>
        <div id="div2">2(浮动)</div>
        <div id="div3">3(浮动)</div>
        <div id="div4">4(浮动)</div>
        <div>5</div>
    </article>
    </body>
    </html>

浮动的规则

  • 向上向左或向上向右排列
  • 若空间无法容纳,则先向下移动,直到高度足够后再向左向右移动
  • 当前浮动盒的顶边,不得高于上一个浮动盒的顶边

清除浮动

浮动元素会脱离常规文档流,这可能导致包含它们的父元素高度塌陷。为了解决这个问题,可以使用 clear 属性:

  • clear: left;:元素下方不能有左浮动元素。
  • clear: right;:元素下方不能有右浮动元素。
  • clear: both;:元素下方不能有左或右浮动元素。
  • clear: none;:默认值,允许浮动元素旁边有元素

清除前

清除后

代码

<!DOCTYPE html>  
<html lang="zh">  


    <!doctype html>
    <!--声明文档类型,告诉浏览器使用HTML5标准来渲染页面。-->
    <html>

    <head>
        <style>
            article{
                width: 600px;
                height: 600px;
                background-color: #b9b9b9;
                margin: 5px 0px;
            }
            div{
                width: 200px;
                height: 100px;
                background-color: #ff00ba;
                margin: 5px;

            }
            #div2{
                background-color: red;
                float: left;
            }
            #div3{
                background-color: green;
                float: left;
            }
            #div4{
                background-color: blue;
                clear: both;
            }
        </style>
    </head>
    <!-- 盒子浮动后,会生成一个与父盒等宽的浮层 -->
    <body>
    <article>
        <div>1</div>

        <div id="div2">2(浮动)</div>
        <div id="div4">我在这里</div>
        <div id="div3">3(浮动)</div>




    </article>
    </body>
    </html>

高度塌陷

什么是高度塌陷

CSS 高度塌陷(也称为“清除浮动问题”或“父元素高度为零”)通常发生在父元素内的子元素浮动时,导致父元素没有包含其浮动子元素的高度。

高度塌陷原因

浮动元素脱离常规文档流,因此父元素在计算高度时不会考虑浮动子元素。

解决方案

使用清除浮动的方法,如添加带有 clear 属性的空元素。
使用 CSS 伪元素(如 ::after)来清除浮动,这是更现代和推荐的方法。
改用 Flexbox 或 Grid 布局,这些布局模型可以避免高度塌陷的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值