一、float概述

浮动(float)是CSS布局常用的一个属性。它可以左右移动,直至它的外边缘碰到包含框或另一个浮动框的外边框。

float被设计出来的初衷是用于文字环绕效果。如下代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
#div1{
width:100px;
height:100px;
border:2px solid red;
float:left; }
</style> </head>
<body>
<div id="div1">我是一个div,可以放图片。</div>
<span>
我是一大推文字我是一大推文字我是一大推文字我是一大推文字
我是一大推文字我是一大推文字我是一大推文字我是一大推文字
我是一大推文字我是一大推文字我是一大推文字我是一大推文字
我是一大推文字我是一大推文字我是一大推文字我是一大推文字
我是一大推文字我是一大推文字我是一大推文字我是一大推文字
我是一大推文字我是一大推文字我是一大推文字我是一大推文字
我是一大推文字我是一大推文字我是一大推文字我是一大推文字
</span>
</body>
</html>

  

效果如下:

浮动会脱离文档流,当一个元素浮动之后,不会影响到块级元素的布局而只会影响内联元素(通常是文本)的排列,文档中的普通流就表现得如同浮动框不存在一样。

二、浮动初探

既然上面说到了元素浮动后会脱离文档流,那么就来看一下效果:

右图是浮动后的效果,设置div2浮动后,div3就会占用原来div2的位置。

三、float坍塌问题

这样一个场景:当div(father)里面包含其他几个div(child),且father没有设置高度,child没有浮动时,father的div是可以看到。但是,当child设置成float后,我们会发现father不见了,这就是坍塌问题。

右边是将child设置成float:left之后的效果。

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
body{
margin:0px;
} #div1{
width:100px;
height:100px;
border:2px solid red;
float:left;
}
#father{
background-color:green;
}
</style>
</head>
<body>
<div id="father">
<div id="div1"><span>块1</span> 暂无float:left</div>
<div id="div1"><span>块2</span> 暂无float:left</div>
<div id="div1"><span>块3</span> 暂无float:left</div>
</div>
</body>
</html>

  

坍塌解决办法:

1、添加一个child元素,并设置clear:both;

 .clear{
clear:both;
} <div id="father">
<div id="div1"><span>块1</span> float:left</div>
<div id="div1"><span>块2</span> float:left</div>
<div id="div1"><span>块3</span> float:left</div>
<div class="clear"></div>
</div>

  

原理:

 给空元素设置clear后,因为它的左右两边不能有任何浮动元素,所以空元素下移到浮动元素下方。而空元素又包含在父块中,相当于把父块撑开了,视觉上起到了父块包含浮动元素的效果。

优点:简单,代码少,浏览器兼容性好。

缺点:需要添加大量无语义的html元素,代码不够优雅,后期不容易维护。不推荐使用。

2、给father设置CSS样式:overflow:hidden;

#father{
background-color:green;
overflow:hidden;
}

  

原理:

  给浮动元素的容器添加overflow:hidden;或overflow:aoto;可以使浮动元素回到容器层内,清除浮动。

3、给浮动元素的容器添加浮动

 #father{
background-color:green;
float:left;
}

  

原理:

  给浮动元素的容器(父元素)也添加上浮动属性即可清除浮动,但是这样会使下一个元素收到这个浮动元素的影响,影响整体布局,不推荐使用。

4、使用CSS的:after伪元素

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

  

:after伪元素(注意这不是伪类,而是伪元素,代表一个元素之后最近的元素)。

给浮动元素的容器添加一个clearfix的class,然后给这个class添加一个:after伪元素实现元素末尾添加一个看不见的块元素清理浮动。

原理:

  1、通过伪元素添加一个块元素

  2、伪元素设置clear:both后,类似于解决方法1,空元素下移到浮动元素下方。

  3、但是新增的内容被hidden了,且高度设置为0,所以111时看不到的。

CSS快速入门-浮动(float)的更多相关文章

  1. CSS快速入门(四)

    目录 CSS快速入门(四) 浮动 float属性 clear属性 浮动解决的问题及其影响 解决父标签塌陷的方法 浮动案例 定位 什么是脱离文档流 定位的两种方法 position定位 static定位 ...

  2. css 快速入门 系列 —— 浮动

    浮动 以 mdn float 文档 为基础,逐一介绍浮动的本质.浮动的诸多特性.清除浮动以及块格式化上下文(bfc). 概念 当一个元素浮动之后,它会被移出正常的文档流,然后向左或者向右平移,一直平移 ...

  3. Html与CSS快速入门03-CSS基础应用

    这部分是html细节知识的学习. 快速入门系列--HTML-01简介 快速入门系列--HTML-02基础元素 快速入门系列--HTML-03高级元素和布局 快速入门系列--HTML-04进阶概念 边框 ...

  4. HTML/CSS快速入门

    Web概念 JavaWeb 使用java语言开发基于互联网的项目 软件架构 C/S架构:Client/Server 客户端/服务器 用户本地有一个客户端程序,在远程有一个服务端程序 如QQ,英雄联盟. ...

  5. Html与CSS快速入门01-基础概念

    Web前端技术一直是自己的薄弱环节,经常为了调节一个简单的样式花费大量的时间.最近趁着在做前端部分的开发,果断把这部分知识成体系的恶补一下.内容相对都比较简单,很类似工具手册的学习,但目标是熟练掌握. ...

  6. Html与CSS快速入门02-HTML基础应用

    这部分是html细节知识的学习. 快速入门系列--HTML-01简介 快速入门系列--HTML-02基础元素 快速入门系列--HTML-03高级元素和布局 快速入门系列--HTML-04进阶概念 示例 ...

  7. 【Web】CSS中的浮动float

    CSS中的float 文章目录 CSS中的float 1.float浮动属性 2.float文字环绕图片 3.float浮动的真正原因以及副作用分析 4.清除浮动的四种解决方法 5.实际应用 导航效果 ...

  8. Html与CSS快速入门04-进阶应用

    这部分是html细节知识的学习. 快速入门系列--HTML-01简介 快速入门系列--HTML-02基础元素 快速入门系列--HTML-03高级元素和布局 快速入门系列--HTML-04进阶概念 之前 ...

  9. web前端之css快速入门

    css简介 css概述 CSS 指层叠样式表 (Cascading Style Sheets)样式定义如何显示 HTML 元素样式通常存储在样式表中把样式添加到 HTML 4.0 中,是为了解决内容与 ...

随机推荐

  1. Redis学习---Redis操作之Python连接

    PyCharm下的Redis连接 连接方式: 1. 操作模式 redis-py提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使 ...

  2. Nginx 泛解析配置请求映射到多端口实现二级域名访问

    由于想实现一个域名放置多个应用运行的目的,而不想通过域名后加端口号方式处理,这种方式处理记起来太麻烦,偷懒党简直不能忍,故而考虑了使用二级域名来处理多个应用同时运行.Google了一番资料并进行了尝试 ...

  3. Maven实战(十一)eclipse下载依赖jar包出问题

    问题描述 在pom.xml中配置了依赖,但是提示依赖不成功,或在本地仓库找不到相关依赖 大致错误如下: ArtifactDescriptorException: Failed to read arti ...

  4. kvo的observationInfo

    观察者信息的注册: <NSKeyValueObservationInfo 0x600000708d60> ( <NSKeyValueObservance 0x6000009143f0 ...

  5. hdu 4803 Poor Warehouse Keeper(贪心+数学)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u011328934/article/details/26005267 题目链接:hdu 4803 P ...

  6. HDU5343:MZL's Circle Zhou(SAM,记忆化搜索DP)

    Description Input Output Sample Input Sample Output Solution 题意:给你两个串,分别从两个里面各选出一个子串拼到一起,问能构成多少个本质不同 ...

  7. shell基础--字符串和变量的操作

    一.统计字符串长度 1.wc –L [root@~_~day4]# echo "hello" | wc -L 5 2.expr length string [root@~_~day ...

  8. [luogu2668] 斗地主

    题面 ​ 这好像就是道**暴搜题, 由于可以回溯, 所以顺序其实没有多大的关系, 见代码吧... 具体代码 #include <iostream> #include <cstring ...

  9. js 正则验证

    Html 代码如下: <table> <tr> <td>匹配正整数:</td> <td><input type="text& ...

  10. Android Studio更改工程名异常解决方案 :can't rename root module

    在修改Android Studio 中 project的名字时 ,提示 “can’t rename root module”. 这是因为Android Studio只能修改根目录内的所有文件,要修改p ...