css浮动(float)及清除浮动的几种实用方法

CSS浮动是现在网页布局中使用最频繁的效果之一,而浮动可以帮我们解决很多问题,那么就让我们一起来看一看如何使用浮动.

一.css浮动(float)

(1)html文档流

自窗体自上而下分成一行一行,并在每行中按从左到右的顺序排放元素。

(2)网页中大部分对象默认是占用文档流,也有一些对象是不占文档流的,比如表单中隐藏域。


当然我们也可以让占用文档流的元素转换成不占文档流,这就要用到CSS中属性position、float、display来控制。默认情况下,所有元素都处在文档流中,四种情况将使得元素离开文档流:浮动float、绝对定位absolute、相对定位fixed、元素不显示display:none,这种情况不占文档流的空间,而普通元素的位置基于文档流。(了解)浮动float用于设置标签的居左浮动和居右浮动,浮动后的元素不属于html文档流,需要用清除浮动把文档拽回到文档流中。

浮动值:
       left:向左浮动
       right:向右浮动
特征:块元素可以在一行显示
 
浮动特征
    1.按照一个指定的方向移动,遇到父级的边界或者其他的元素停下来
    2.块元素可以在一行显示,宽由内容撑起来
    3.行内元素支持设置宽高
    4.脱离文档流  float不是完全脱离文档流的
        块元素 :对于块元素,后面未浮动的元素所占的位置是浮动元素的位置
 注意:内容会把浮动元素的位置保留,
       行内元素:行内元素会接着浮动元素显示,内容会形成环绕浮动元素的样子
   5.造成父级塌陷(破坏性)

通过例子来解释浮动

1.页面上有两个块元素,每个块元素独占一行
2.我们希望它能并排显示,这时就可以使用float,我们先给红的div加float:left,发现两个是在一行了,但是它们重叠在了一起。
3.这是因为加了float的元素不但会消除独占一行的特性,而且还会“飘”在其它元素之上。
4.我们为蓝色的div也加上float,这时正常了,两个div显示在一排。

代码

<!DOCTYPE html>
<html lang="zh-cn">
<head><meta charset="utf-8" /><title>CSS浮动定位</title><style>.d1{width:200px; height:200px; background:red; float: left; }.d2{width:300px; height:300px; background:blue;float: left;}/*.d3{width:500px; height:500px; background:green; clear:both;}*/</style>
</head>
<body><div class="d1"></div><div class="d2"></div><!--<div class="d3"></div>-->
</body>
</html>

  

浮动的目的是使元素变为可在一行显示,且可设置宽和高的元素。它的作用类似于inline-block;只不过它是脱离了文档流了。

浮动的元素脱离文档流后,对块元素而言,从上向下的文档流中找不到浮动的元素,所以在浮动元素后加块元素,块元素会被覆盖掉。

.d1{ width:100px; height: 100px; background-color:red; float: left}.d2{ width:200px; height: 200px; background-color:blue; float: left}.d3{ width:400px; height: 400px; background-color:green;}<div class="d1"></div><div class="d2"></div><div class="d3"></div>

  

浮动的元素脱离文档流后,这个浮动的块元素虽然脱离了文档流,但对它后面的行元素而言,从左至右的位置中,是要以这个浮动元素的位置开始的。

.d1{ width:100px; height: 100px; background-color:red; float: left}
.d2{ width:200px; height: 200px; background-color:blue; float: left}<div class="d1"></div>
<div class="d2"></div>
<a href="#">这是个不浮动的超级链接</a>

  

二、清除浮动

   描述:清除浮动是在使用了浮动之后必不可少的,为了网站布局的效果,清除浮动也变得非常麻烦。
属性:clear
值:left、right、both
清除浮动的常用方式:
1.结尾处加空div标签 clear:both (或在下一个元素上加clear:both;)
2.父级div定义 伪元素:after
3.父级div定义 overflow:hidden

(1). 结尾处加空div标签 clear的方式清除浮动

a.刚才的例子已经完成了并排布局,这时我需要加第三个块元素,起名d3,这时发现,d3是被压在了前两个块之下
b.刚才说过,加了float的元素会飘在其它元素之上,实际上是因为它们已经不属于html正常的文档流了,后面再有多少个元素和它无关,它始终飘在上面
c.我们只是想让它不独占一行,并没有想让它不属于文档流。所以可以用clear:both把float元素拽回文档流。

 

clear:both清除浮动代码

<!DOCTYPE html>
<html lang="zh-cn">
<head><meta charset="utf-8" /><title>CSS浮动定位</title><style>.d1{width:200px; height:200px; background:red; float: left; }.d2{width:300px; height:300px; background:blue;float: left;}.d3{width:500px; height:500px; background:green; clear:both;}</style>
</head>
<body><div class="d1"></div><div class="d2"></div><div class="d3"></div>
</body>
</html>

  

clear不只是both一个属性,它还有left和right,它们两个的作用是分别清除float的左浮动和右浮动。

<div class="d1"></div>    左浮动<div class="d4"></div>    未浮动<div class="d2"></div>    右浮动<div class="clear"></div><div class="d3"></div>

  

clear:both; 的正确使用方式
1.加了clear:both的元素需要为块元素。这样clear:both才能清除块“从上而下”的文档流中被浮动的元素。
2.不要加在外层的div外面,如果这个外层div没有浮动,那这个clear:both是不起作用的。

.d1{ width:100px; height: 100px; background-color:red; float: left}
.d2{ width:200px; height: 200px; background-color:blue; float: left}
.d3{ width:400px; height: 400px; background-color:green;}.clear{clear: both;}<div class="divBox"><div class="d1"></div><div class="d2"></div><div class="d3"></div></div><div class="clear">这里加了一个清除浮动</div>   不起作用

  

(2).使用overflow:hidden清除浮动

.box{ overflow: hidden;}  //overflow:auto也是可以的
.left,.right{ width:100px; height: 100px; background:#388bff; float: left;}<div class="box"><div class="left"></div><div class="right"></div></div>

  

(3).使用伪元素清除浮动

after伪元素添加的内容默认为行内元素,所以需要设置display:block

after伪元素添加的内容默认为行内元素,所以需要设置display:block
.box::after{ content: " "; clear: both; display: block;}
.left,.right{ width:100px; height: 100px; background:#388bff; float: left;}
<div class="box"><div class="left"></div><div class="right"></div>
</div>

  

使用浮动别忘记清除浮动,记住,无论现在浮动是否对你有影响,都要杨成良好的习惯,否则等后续修改代码的时候可能会影响整个布局。

上海尚学堂web前端培训原创,欢迎点击阅读其他相关技术文章或者获取更多支持资料。

参考原文:http://www.shsxt.com/it/html5/856.html

 


更多专业前端知识,请上 【猿2048】www.mk2048.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/361531.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一台电脑同时添加git和bitbucket两个网站的ssh key

添加第一个ssh key 就不多说了&#xff0c;不懂的可以自己查资料 ssh-keygen -t rsa -C email_1email.com 然后一路enter就好了 假设已经添加好了git的ssh key 。现在要添加bitbucket的ssh key 首先 ssh-keygen -t rsa -C email_2email.com //同一个邮箱也可以 然后指定公钥的…

属性提取器:获取ListView即时更新其元素的最佳方法

这篇文章是关于如何处理JavaFX ListViews和TableViews的&#xff0c;以及这些控件如何得知所包含元素的更改内容。 我想知道为什么在相关书籍中没有找到关于以下模式的任何信息&#xff0c;因为这是一个非常关键的机制。 那里的许多帖子建议通过调用以下命令来强制触发ChangeEv…

基于python语言下的UI自动化测试框架搭建(四)

testsuits:案例执行 创建baidu_search1.py文件&#xff0c;这里会展示两种执行方式&#xff0c;一种是直接调用base_page中封装好的常用操作方法&#xff0c;另外一种是先调用baidu_homepage.py&#xff0c;通过baidu_homepage.py进行处理&#xff0c;再执行对应的案例&#xf…

MVC详解

模型&#xff0d;视图&#xff0d;控制器&#xff08;Modal View Controler&#xff0c;MVC&#xff09;是Xerox PARC在八十年代为编程语言Smalltalk&#xff0d;80发明的一种软件设计模式&#xff0c;至今已被广泛使用。最近几年被推荐为Sun公司J2EE平台的设计模式&#xff0c…

如何为每个URL连接设置自定义SSLSocketFactory的TrustManager

从javadoc中我们可以看到javax.net.ssl.HttpsURLConnection提供了一个静态方法来用setDefaultSSLSocketFory&#xff08;&#xff09;方法覆盖。 这样&#xff0c;您就可以提供一个自定义javax.net.ssl.TrustManager&#xff0c;它可以验证您自己的CA证书握手和验证等。但是&am…

ES6之命令妙用

很多人都听说过ES6&#xff08;也就是ECMAScript的新一代标准&#xff09;并且对她充满了向往&#xff0c;下面通过一个ES6中小知识点——let命令&#xff0c;来解开她的神秘面纱&#xff0c;让大家初步认识一下ES6的语法规范。let命令属于ES6中的一个基本语法&#xff0c;与原…

VUE-搜索过滤器

先看看效果 首先引入 <script src"https://cdn.jsdelivr.net/npm/vue"></script> HTML部分 <div id"app"><input v-modelsearch /><ul v-if"searchData.length > 0"><li v-for"item in searchData&quo…

使用spring-session外部化Spring-boot应用程序的会话状态

Spring-session是一个非常酷的新项目&#xff0c;旨在提供一种更简单的方法来管理基于Java的Web应用程序中的会话。 我最近在spring-session中探索的功能之一是它支持外部化会话状态的方式&#xff0c;而无需费心诸如Tomcat或Jetty之类的特定Web容器的内部。 为了测试spring-s…

windows2008 sp2 x64安装 ocs 2007 r2 笔记

在写这篇日志之前&#xff0c;反反复复安装了N次&#xff0c;重装操作系统好几次&#xff0c;为了让大家不再犯同样的错误&#xff0c;特留下几点要注意的&#xff1a; 1. 不要用windows2008 r2 装 ocs 2007 r2&#xff0c; 我很天真的下载了windows2008 r2 并开始装 ocs r2&am…

JS(JQEERY) 获取JSON对象中的KEY VALUE

var json { "Type": "Coding", "Height":100 };for (var key in json){alert(key); alert(json[key]);}$.each(json, function(i) {alert(json[i]);alert(i); }); 转载于:https://www.cnblogs.com/ytjjyy/archive/2012/04/17/2453340.html

vue 特定条件下绑定事件

今天写了个小功能&#xff0c;看起来挺简单&#xff0c;写的过程中发现了些坑。1.div没有disabled的属性&#xff0c;所以得写成button2.disabled在data时&#xff0c;默认是true&#xff0c;使得初始化时&#xff0c;默认置灰按钮&#xff0c;无法点击 <div classform-item…

使用纯HTML和OmniFaces构建动态响应的多级菜单

最近&#xff0c;我不得不使用JSF 2.2创建一个响应式多级菜单。 要求&#xff1a;菜单应&#xff1a; 从后端使用动态结构创建 反应灵敏&#xff0c;例如对桌面和移动设备友好 有带有导航链接的子菜单项 支持触摸事件 支持键盘辅助功能 PrimeFaces的菜单不是一个选择。 实…

Jquery 日历控件

非常好的Jquery日历控件 http://keith-wood.name/datepick.html 转载于:https://www.cnblogs.com/hubj/archive/2011/04/28/2031791.html

poj 3041

题目链接&#xff1a;http://poj.org/problem?id3041 没看题&#xff0c;网上搜最大二分匹配搜到的 匈牙利算法&#xff0c;深搜一次最多增加一个匹配 代码&#xff1a; #include <stdio.h> #include <stdlib.h> int tu[505][505]; int mx[505],my[505]; int flag…

使用JAX-RS(Jersey)的HTTP状态错误消息响应中的自定义原因短语

在最近的一些工作中&#xff0c;我收到了在发生错误时在HTTP状态响应中生成自定义“原因短语”的请求&#xff0c;该状态短语传递给我们的一个REST API消耗客户端。 在这篇文章中&#xff0c;我将演示如何使用Jersey来实现。 1.定义检查的异常和异常映射器 正如您可能从我的文…

hdu 1251 统计难题(求前缀出现了多少次)

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid1251 #include <iostream> #include <cstring> #include <cstdio> #define mem(a,b) memset(a,b,sizeof(a)); using namespace std; typedef long long ll; const int maxn 500005; const l…

新浪微博后台服务器架构

http://www.slideshare.net/iso1600/high-performance-weibo-qcon-beijing-2011-7577912High Performance Weibo QCon Beijing 2011 View more presentations from Tim Y 转载于:https://www.cnblogs.com/inteliot/archive/2012/04/19/2457008.html

如何将商业第三方文物整合到您的Maven版本中

根据ZeroTurnaround的RebelLabs最近进行的一项调查 &#xff0c;Maven仍然是领先的Java构建平台。 根据RebelLabs&#xff0c;当前的市场份额分布是&#xff1a; Maven的64&#xff05; 蚂蚁常春藤与16.5&#xff05; 摇篮与11&#xff05; 但是&#xff0c;与此同时&#…

2012年4月18日 新的开始

博客原本写在 http://50.17.193.116/但是由于没有域名的关系,不能被大多的搜索引擎给搜索到,为了能更大的分享我个人的一部分学习经验,将我的blog同时在博客园同步更新. 今天将开始书写自己的Blog&#xff0c;感谢师太提供了50.17.193.116这样一个还行&#xff0c;能将就用用的…

Membership学习(三)Membership Providers介绍[xgluxv]

本来想在第三篇文章里介绍一下 Membership的类的&#xff0c;不过现在中文msdn也出来了&#xff0c;所以就不写了&#xff0c;&#xff0c;直接到介绍Membership Providers。 Membership Providers提供了Membership数据源和服务之间的所有接口&#xff0c;在Asp.net2.0中…