一、关于float浮动及其产生
在网页布局排版中我们会经常用到float元素,float定义元素往哪个方向浮动,使元素脱离文档流,按照指定方向发生移动,遇到父级边界或者相邻的浮动元素停了下来。它有四个属性值:
none (默认值,元素不浮动,并会显示在其在文本中出现的位置)。
left (元素向左浮动) 。
right (元素向右浮动)。
inherit (规定应该从父元素继承 float 属性的值) 。
先来看看浮动的效果,为了让两个块级元素并排显示,我们使用了float属性
<head> <meta charset="UTF-8"> <title>浮动</title> <style> body>div{width:500px;border: 2px solid red} .div1{width: 100px;height: 100px;background-color: blue;float: left} .div2{width: 100px;height: 100px;background-color: yellow; float: left} </style> </head> <body> <div > <div class="div1">我是div1</div> <div class="div2">我是div2</div> </div> </body>
效果:
div1和div2都是向左浮动,达到了我们并排排列的效果但是我们也看到了float也产生了很多副作用:父元素边框塌陷,
背景不能显示、不能设置padding和margin等等。所以这就是我们要学习消除浮动影响的原因。
二、消除浮动的方法
1.clear清除法
在浮动元素后面添加一个空的div。
<head> <meta charset="UTF-8"> <title>浮动</title> <style> body>div{width:500px;border: 2px solid red} .div1{width: 100px;height: 100px;background-color: blue;float: left} .div2{width: 100px;height: 100px;background-color: yellow; float: left} .empty{clear: both;} </style> </head> <body> <div > <div class="div1">我是div1</div> <div class="div2">我是div2</div> <div class="empty"></div> </div> </body>
效果:

2.给父元素设置高度
在css中父div中加height:200px;效果为:

这个方法是最简单的,但是会导致我们代码的扩展性变差,因为我们的子元素一旦变化父元素也要变化,这样就变得很不灵活了,所以在项目中我们不一般不用这种方法。
3.让父元素也浮动
在父元素div中加float:left;但是这种方法的缺点是要给每一个父元素都加float比较麻烦,如果父元素多的话那就更麻烦了,同时浮动多了容易出问题,所以一般也不推荐这种方法。
4.overflow:hidden
这个方法非常简单方便,在父元素中加overflow:hidden;(body>div{width:500px;border: 2px solid red;overflow: hidden;})这样可以解决边框塌陷的问题,但是要注意这个方法在下拉列表框场景下会遇到新的问题,并且还要考虑浏览器的兼容问题。
5.after伪类清除法
这个方法是最好的,就出了写法稍微麻烦一点点,没有什么副作用。写法如下:
.father:after{ /*father是指浮动div元素的父元素*/
content:''; /*把father类后面的添加元素设置为空*/
display:block; /*把添加元素的内容设置为block块级元素*/
clear:both; /*清除这个元素两边的浮动
}
下面来看我们上面的代码用after伪类清除,同样达到了我们的目的:
<style> body>div{width:500px;border: 2px solid red;} body div:after{ content: ''; display: block; clear: both; } .div1{width: 100px;height: 100px;background-color: blue;float: left} .div2{width: 100px;height: 100px;background-color: yellow; float: left} </style> </head> <body> <div > <div class="div1">我是div1</div> <div class="div2">我是div2</div> </div> </body>
效果:

三、总结
在实际项目中我是比较推荐最后两种方法,当然清除浮动的方法还有很多,我们可以自由选择使用哪一种,只要最后能达到我们的目标并不出现其他问题就可以。本人只是罗列了我认为常见的清除浮动的方法,肯定还有其他方法,欢迎大家补充。
相关知识
详解css清除浮动float的七种常用方法总结和兼容性处理
HTML CSS + DIV实现整体布局 (推荐)
前端开发学习笔记(三)HeadFirst HTML 与 CSS (第二版)
可以清除浮动影响的方法是()。
CSS 样式书写顺序及规范
花卉市场CSS模板下载:简洁干净的HTML设计
html部分
10天精通div+css网页设计课程
CSS花边001:无衬线字体和有衬线字体
使用HTML和CSS制作网页的全面指南
网址: CSS清除float浮动的常用几种方法 https://m.huajiangbk.com/newsview2460523.html
| 上一篇: 水面浮萍怎么清理?最快方法揭秘! |
下一篇: css清除浮动float的三种方 |