CSS的浮动及清除浮动的5种方法

css属性float:left/right/none 左浮动/右浮动/不浮动(默认),文章介绍了清除浮动的5种方法,并指出其实现原理、优缺点和使用建议。

浮动是布局的时用到的一种技术,能够方便我们进行布局。

1.浮动的设置:css属性float:left/right/none 左浮动/右浮动/不浮动(默认)

2.浮动的原理:使当前元素脱离普通流,相当于浮动起来一样,浮动的框可以左右移动,直至它的外边缘遇到包含框或者另一个浮动框的边缘
3.浮动的影响:对附近的元素布局造成改变,使得布局混乱

因为浮动元素脱离了普通流,会出现一种高度坍塌的现象:原来的父容器高度是内部元素撑开的,但是当内部元素浮动后,脱离普通流浮动起来,那父容器的高度就坍塌,变为高度0px。

如下图:CSS的浮动及清除浮动的5种方法 CSS的浮动及清除浮动的5种方法清除浮动的5种方法

1、父级div定义overflow:hidden

<style type="text/css">
   .div1{background:#000080;border:1px solid red;width:98%;overflow:hidden}
   .left{float:left;width:20%;height:200px;background:#DDD}
   .right{float:right;width:30%;height:80px;background:#DDD}
</style>
<div class="div1">
  <div class="left">Left</div>
  <div class="right">Right</div>
</div>

原理:使用overflow:hidden时,浏览器会自动检查浮动区域的高度。
优点:简单,代码少,浏览器支持好。
缺点:必须定义width或zoom:1,不能和position配合使用,因为超出的尺寸的会被隐藏。
建议:只推荐没有使用position或对overflow:hidden理解的朋友使用。

2、结尾处加空div标签clear:both

<div class="box1">
<div class="child-1">child-1</div>
<div class="child-2">child-2</div>
<div style="clear: both;"></div>
</div>

原理:添加一个空div,利用css提高的clear:both清除浮动,让父级div能自动获取到高度。
优点:简单,代码少,浏览器支持好,不容易出现怪问题。
缺点:不少初学者不理解原理;如果页面浮动布局多,就要增加很多空div,让人感觉很不爽。
建议:此方法是以前主要使用的一种清除浮动方法。

3、父级div定义height

<style type="text/css">
     .div1{background:#000080;border:1px solid red;height:200px;}
     .left{float:left;width:20%;height:200px;background:#DDD}
     .right{float:right;width:30%;height:80px;background:#DDD}
</style>
<div class="div1">
  <div class="left">Left</div>
  <div class="right">Right</div>
</div>

原理:父级div手动定义height,就解决了父级div无法自动获取到高度的问题。
优点:简单,代码少,容易掌握。
缺点:只适合高度固定的布局,要给出精确的高度,如果高度和父级div不一样时,会产生问题。
建议:不推荐使用,只建议高度固定的布局时使用。

4、父级div定义overflow:auto

.div1{background:#000080;border:1px solid red;width:98%;overflow:auto}

原理:同1,使用overflow:auto时,浏览器会自动检查浮动区域的高度。
优点:简单,代码少,浏览器支持好。
缺点:内部宽高超过父级div时,会出现滚动条。
建议:不推荐使用,如果你需要出现滚动条或者确保你的代码不会出现滚动条就使用吧。

5、父级div定义伪类:after和zoom

<style type="text/css">
   .div1{background:#000080;border:1px solid red;}
   .left{float:left;width:20%;height:200px;background:#DDD}
   .right{float:right;width:30%;height:80px;background:#DDD}   
   .clearfloat:after{display:block;clear:both;content:"";visibility:hidden;height:0}
   .clearfloat{zoom:1}
</style>
<div class="div1 clearfloat">   
    <div class="left">Left</div>   
    <div class="right">Right</div> 
</div>

优点:浏览器支持好,不容易出现怪问题(目前:大型网站都有使用,如:腾迅,网易,新浪等等)。
缺点:代码多,不少初学者不理解原理,要两句代码结合使用,才能让主流浏览器都支持。
建议:推荐使用,建议定义公共类,以减少CSS代码。

125jz网原创文章。发布者:江山如画,转载请注明出处:http://www.125jz.com/4145.html

赞 (0)
江山如画的头像江山如画管理团队
ScrollPicLeft.js实现的图片前后切换效果-源码下载
上一篇 2019年11月1日 下午2:37
CSS Sprites:图片整合技术详细案例
下一篇 2019年11月5日 下午8:18

99%的人还看了以下文章

  • CSS制作三角形原理—超简单

    CSS制作三角形原理—超简单CSS制作三角形原理—超简单CSS制作三角形原理—超简单CSS制作三角形原理—超简单

    网页制作中我们经常会需要三角形图标,例如内容展开收起、左右箭头点击切换轮播,点击某条列表数据查看详情等。 三角形图标应用范围广,我们有必要了解一下它的实现原理。 1) 一个最基础的边框效果 .content { width: 50px; height: 50px; border: 2px solid; border-color:#ff9600 #3366ff…

    2019年11月26日 • 网页制作
    11.0K0
  • HTML5画布(Canvas)速查表

    HTML5 <canvas> 标签用于绘制图像。<canvas> 元素本身仅仅是图形的容器,必须使用脚本来完成实际的绘图任务。HTML5 <canvas> 可用于在画布上绘制文本、线条、矩形、圆形等等。 HTML5画布(Canvas)元素 <canvas id=”myCanvas” width=”500″ heigh…

    2018年2月20日
    13.6K0
  • 跟永哥学HTML5(6):H5表单及表单验证

    表单在网页中主要负责数据采集功能。HTML 5一个令人兴奋的发展领域是新的Web表单。
    在今天的课程中你会看到浏览器会验证所需的字段,数据类型,如电子邮件、网址和任何模式,而不使用任何JavaScript。

    2018年2月27日
    12.5K0
  • 第6课:学习更多HTML元素

    到现在,你有没有独立完成过一个网页?你可以的,看看下面的例子: <html> <head><title>125建站网|www.125jz.com</title></head> <body> <h1>一级标题</h1><p>一些文字。。。</p&g…

    2018年1月20日
    13.5K0
  • CSS制作简洁的栏目/标题样式

    CSS制作简洁的栏目/标题样式 HTML: <h2><strong>栏目名称</strong></h2> <h2><strong class=”blue”>网页设计</strong></h2> <h2><strong>网站制作</st…

    2019年1月5日
    9.4K0
  • 网页中的框架(详解)

    所谓框架便是网页画面分成几个框窗,同时取得多个 URL。 一、制作框架页面的步骤: 1.编写所有子框架页面2.编写主框架页面3.在主框架页面中设定子框架名称4.如果框架页面之间存在链接,在子框架中设定链接。 注意:框架页面是不含标签的 二、基本语法 <frameset> <frame src=”url”> <noframes&g…

    2020年4月11日
    18.1K0

发表回复

登录后才能评论