1、float属性

CSS 的 Float(浮动),会使元素向左或向右移动,由于浮动的元素会脱离文档流,所以它后面的元素会重新排列。

浮动元素之后的那些元素将会围绕它,而浮动元素之前的元素将不会受到影响。比如如果一个图像向右浮动,下面的文本流将环绕在它左边。

<div>
<p>哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈</p>
<div class="div2">
<img src="https://www.runoob.com/images/klematis_small.jpg" alt="">
<p>呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵呵
</p>
</div>
</div>
.div2 {
background: #c6e5b4;
}
img {
float: right;
}

2、浮动的负作用

2.1、父元素内容区不能被撑开

如果一个父元素里面的子元素都是浮动的话,父元素的内容区将不能被子元素撑开

<div class="div1 clearfloat">
<div class="left">Left</div>
<div class="right">Right</div>
</div>
.div1 {
background: #000080;
border: 1px solid red;
}
.left {
float: left;
width: 20%;
}
.right {
float: right;
width: 30%;
}

如图,div1 的内容区将为0

2.2、脱离文档流

使用浮动的元素将会脱离文档流,后面的元素将会跑到浮动元素的下面,不过文本内容不会被遮挡

3、清除浮动

3.1、在浮动元素后面定义一个空元素

给浮动元素后面添加一个空元素,该元素样式为 clear: both ,即可清除浮动

<div class="div1">
<div class="left">Left</div>
<div class="right">Right</div>
<div style="clear:both"></div>
</div>

3.2、给浮动元素的父元素添加伪元素

给浮动元素的父元素添加伪元素,给该伪元素添加清除浮动的样式即可清除浮动。

<div class="div1">
<div class="left">Left</div>
<div class="right">Right</div>
</div>
.div1:after {
content: "";
clear: both;
display: block;
}

父元素的伪元素必须设置 display 为 block 才行。

注意:伪元素必须设置在浮动元素的父元素上才行,设置在浮动元素上没有效果。比如下面:

<div class="floatDom"></div>
<div class="content">这里是内容</div>
.floatDom {
width:100px;
height:100px;
background:#d9bcbc;
float: left;
}
.floatDom::after {
clear: both;
display: block;
content: "";
}
.content {
height:150px;
background:#8585c0;
}

设置在浮动元素上没有效果,并没有清除浮动,下面的元素仍然会跑上去。

3.3、父元素定义overflow:hidden

<div class="div1">
<div class="left">Left</div>
<div class="right">Right</div>
</div>
.div1 {
overflow: hidden;
}

浮动元素的父元素只要定义overflow: hidden 即可清除浮动

为什么父元素设置 overflow 属性即可清除浮动?

原因:根据 BFC 布局规则,计算 BFC 高度时,浮动元素也参与计算。BFC 详情参考:https://www.cnblogs.com/lhb25/p/inside-block-formatting-ontext.html

CSS中浮动属性float及清除浮动的更多相关文章

  1. CSS中为什么overflow:hidden能清除浮动(float)的影响?原理是什么?

    http://www.zhihu.com/question/30938856 父块没有设置指定的高宽,当子块设置为浮动后,原本包裹子块的父块的高度塌陷消失,这时给父块设置overflow:hidden ...

  2. css中的浮动与三种清除浮动的方法

    说到浮动之前,先说一下CSS中margin属性的两种特殊现象 1, 外边距的合并现象: 如果两个div上下排序,给上面一个div设置margin-bottom,给下面一个div设置margin-top ...

  3. CSS浮动属性Float介绍

    #cnblogs_post_body h6 {font-size: 16px;font-weight: bold;} 什么是CSS Float? float 是 css 的定位属性.在传统的印刷布局中 ...

  4. CSS浮动属性Float到底什么怎么回事,下面详细解释一下

    float 是 css 的定位属性.在传统的印刷布局中,文本可以按照需要围绕图片.一般把这种方式称为“文本环绕”.在网页设计中,应用了CSS的float属性的页面元素就像在印刷布局里面的被文字包围的图 ...

  5. CSS浮动属性Float详解

    什么是CSS Float? float 是 css 的定位属性.在传统的印刷布局中,文本可以按照需要围绕图片.一般把这种方式称为“文本环绕”.在网页设计中,应用了CSS的float属性的页面元素就像在 ...

  6. CSS基础必备盒模型及清除浮动

    盒模型 盒模型是有两种标准的,一个是标准模型,一个是IE模型. css如何设置两种模型 这里用到了CSS3 的属性 box-sizing /* 标准模型 */ box-sizing:content-b ...

  7. css考核点整理(一)-浮动的理解和清除浮动的几种方式

    浮动的理解和清除浮动的几种方式 clear语法:clear : none | left | right | both 取值:none : 默认值.允许两边都可以有浮动对象left : 不允许左边有浮动 ...

  8. CSS中clear属性的both、left和right浅析

    前端开发中,我们知道clear属性有none.both.left和right四个值. 它们的具体含义如下: none:允许两边都可以有浮动对象: both:不允许有浮动对象; left:不允许左边有浮 ...

  9. CSS中 Zoom属性

    CSS中 Zoom属性 其实Zoom属性是IE浏览器的专有属性,Firefox等浏览器不支撑.它可以设置或检索对象的缩放比例.除此之外,它还有其他一些小感化,比如触发ie的hasLayout属性,清除 ...

随机推荐

  1. UI自动化之特殊处理一(iframe\句柄\鼠标键盘)

    iframe\句柄\鼠标键盘是一些比较特殊的事件,需要特殊处理 目录 1.iframe 2.句柄(handle) 3.鼠标键盘 1.iframe iframe 是内嵌的网页元素,也可以说是内嵌的框架, ...

  2. javascript 跳出循环比较

    for continue 跳出当前循环,继续下一个循环 break 结束循环 forEach 不能使用continue , break return/return false 跳出当前循环,在forE ...

  3. js变量和数据类型

  4. mysql 函数 时间函数,数学函数,字符串函数,条件判断函数

    =========================================== mysql 相关函数 ============================================= ...

  5. [Python3 填坑] 005 如何“响铃”

    目录 1. print( 坑的信息 ) 2. 开始填坑 2.1 问题的由来 2.2 问题的解决 1. print( 坑的信息 ) 挖坑时间:2019/01/08 明细 坑的编码 内容 Py004-2 ...

  6. cJSON使用笔记

    将cJSON用到STM32f103上 cJSON内存管理使用的是标准库stdlib.h的malloc()free()realloc()动态内存管理函数,我STM32F103使用的是正点原子的mallo ...

  7. Eclipse查看jdk源码(Ctrl+左键)

    Window ->Preferences ->Java ->Installed JREs ->选中jdk ->Edit ->选中rt.jar ->source ...

  8. <每日一题>Day 9:POJ-3281.Dining(拆点 + 多源多汇+ 网络流 )

    Dining Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 24945   Accepted: 10985 Descript ...

  9. Java中数据类型的分类

    我们知道Java是强类型语言,那么肯定对应的也就有弱类型语言,以下介绍强类型语言与弱类型语言的区别: 强类型语言: 强类型语言也就是强制数据类型定义的语言.也就是说,一旦一个变量被指定了某个数据类型, ...

  10. dfs(枚举)

    http://codeforces.com/gym/100989/problem/L L. Plus or Minus (A) time limit per test 1.0 s memory lim ...