清除浮动——让包围元素包含浮动元素的四种方法

什么是CSS清除浮动?

在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动(float为left或right)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高度,使得内容溢出到容器外面而影响(甚至破坏)布局的现象。这个现象叫浮动溢出,为了防止这个现象的出现而进行的CSS处理,就叫CSS清除浮动。

 

有一段代码如下:

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>让包围元素在视觉上包含浮动元素</title>
    <style>
      .news{
          background: gray;
          border:1px solid black;
      }

      .new img{
          float: left;
      }

      .news p{
          float: right;
      }
    </style>
</head>
<body>
    <p>通过css增加内容,然后清理,display设置为block,height为0,visibility设置为hidden</p>
    <div class="news">
        <img src="logo.bmp" alt="my image">
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolorem voluptatum quisquam incidunt eligendi commodi, provident sit reiciendis maxime corporis sunt doloremque mollitia magnam eum totam? Nihil totam, voluptas cum nesciunt.</p>
    </div>
</body>
</html>

 

在上面这段代码中。因为图片和文本都被浮动,脱离了文档流,所以包围图片和文本的div不占据空间,如果我们不做什么改变的话,包围元素div是无法包含浮动元素的。所以下面介绍四种方法来清除浮动,实现包围元素包含浮动元素的效果。

 

1 添加一个空元素然后清理它

在这里,我们通过在div中添加一个空元素,即br,然后清理它,当然也可以使用div、hr等元素。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>让包围元素在视觉上包含浮动元素</title>
    <style>
         .news{
             border:1px solid black;
             background-color: gray;
         
         }

        .news p{
            float: right;
                 width: 500px;
                padding:20px;

        }

        .news img{
            float: left;
        }

        .both{
            clear: both;
        }
    </style>
</head>
<body>
<p>增加额外元素,进行清理</p>
    <div class="news">
        <img src="logo.bmp" alt="my image">
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Velit sunt 
        officia exercitationem ullam dolores possimus vitae laborum dolor amet 
harum, dicta expedita nam rerum vel quas, voluptatem deserunt labore dignissimo
</p>
        <br class="both"/>
    </div>
</body>
</html>

 

2 浮动容器

此处原本div是不浮动的,我们给div加入float:left,让其浮动起来。

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>让包围元素在视觉上包含浮动元素</title>
    <style>
         .news{
             border:1px solid black;
             background-color: gray;
                float: left;
         
         }

        .news p{
            float: right;
                width: 500px;
                padding:20px;

        }

        .news img{
            float: left;
        }


    </style>
</head>
<body>
<p>将容器进行浮动</p>
    <div class="news">
        <img src="logo.bmp" alt="my image">
        <p>

                Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eum aliquid sequi eius. Cum nesciunt quae velit placeat, autem nulla doloremque. Ipsa nostrum voluptatibus libero fugiat vero! Sequi officiis, molestias minus!
</p>
        
    </div>
</body>
</html>

 

3.设置容器的overflow属性值为auto或hidden

当一个容器的overflow属性值为auto或hidden时,会有一个副作用——清理包含的所有浮动元素。

在这里,我们将div的overflow属性值设置为auto。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>让包围元素在视觉上包含浮动元素</title>
    <style>
         .news{
             border:1px solid black;
             background-color: gray;
                overflow: auto;
         
         }

        .news p{
            float: right;
                width: 500px;
                padding:20px;

        }

        .news img{
            float: left;
        }


    </style>
</head>
<body>
<p>容器设置overflow的属性值为auto或者为hidden</p>
    <div class="news">
        <img src="logo.bmp" alt="my image">
        <p>

                Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eum aliquid sequi eius. Cum nesciunt quae velit placeat, autem nulla doloremque. Ipsa nostrum voluptatibus libero fugiat vero! Sequi officiis, molestias minus!
</p>
        
    </div>
</body>
</html>

 

4 利用伪类after添加内容并清理

添加一个”.“,并将清理,设置display为block,visibility为hidden,height为0才不会影响布局,显示出来。

需要注意的是为了IE6和IE7浏览器,要给clear这个class添加一条zoom:1;触发haslayout。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>让包围元素在视觉上包含浮动元素</title>
    <style>
      .news{
          background: gray;
          border:1px solid black;
      }

      .new img{
          float: left;
      }

      .news p{
          float: right;
      }

      .clear:after{
          content: ".";
          display: block;
          visibility: hidden;
          height: 0;
          clear: both;
      }

.clear {
  /* 触发 hasLayout */ 
  zoom: 1; 
 }
    </style>
</head>
<body>
    <p>通过css增加内容,然后清理,display设置为block,height为0,visibility设置为hidden</p>
    <div class="news clear">
        <img src="logo.bmp" alt="my image">
        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolorem voluptatum quisquam incidunt eligendi commodi, provident sit reiciendis maxime corporis sunt doloremque mollitia magnam eum totam? Nihil totam, voluptas cum nesciunt.</p>
    </div>
</body>
</html>

 

推荐:

使用伪类after来清理浮动,达到包围元素包含浮动元素的效果。添加空元素虽然简单,但是需要添加没必要的元素,overflow可能会带来无法预料的后果,例如出现滚动条或者截断内容,float父容器也是如此。而伪类after,通过CSS代码添加内容,通过属性设置不会影响布局,并兼容各大浏览器,所以建议采用。

 

转载请注明出处:http://www.cnblogs.com/kerita/p/4950725.html 

转载于:https://www.cnblogs.com/kerita/p/4950725.html

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计,皆可应用在项目、毕业设计、课程设计、期末/期/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值