浮动布局所带来的影响以及如何清除浮动

在页面的布局过程中浮动是个好东西,我们经常会用到浮动布局,它可以使元素共享一行,极大的方便了我们的布局过程。但是很多人可能只是会用,对浮动的原理只是一知半解,如果没有清晰的认识到浮动所带来的影响以及如何清除浮动所带来的影响,那么面对代码量庞大的页面将会变得一头雾水。所以接下来我们来深入学习一下浮动布局,相信大家把浮动这个概念掌握的很清晰的时候,以后运用起来将会更加得心应手。

一. 什么是浮动布局?

CSS 的
Float(浮动),会使元素向左或向右移动,使元素共享一行,类似于给元素加了inline-block的作用。在w3c中这样描述浮动:浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样。接下来我们具体来看。

二. 浮动带来的影响

1. 脱离文档流,不占据页面空间

我们知道,css的块级元素比如说div在页面中默认是独占一行并且自上而下排列,也就是我们所说的流,也就是我们通常所说的标准流,接下来我们来看以下的案例:

html代码:


  1. <div class="div1">150 * 100</div> 
  2. <div class="div2">100 * 150</div> 
  3. <div class="div3">300 * 200</div>  

css代码:


  1. .div1{ 
  2.  
  3. width: 150px; 
  4.  
  5. height: 100px; 
  6.  
  7. background: pink; 
  8.  
  9.  
  10. .div2{ 
  11.  
  12. width: 100px; 
  13.  
  14. height: 150px; 
  15.  
  16. background: lavender; 
  17.  
  18.  
  19. .div3{ 
  20.  
  21. width: 300px; 
  22.  
  23. height: 200px; 
  24.  
  25. background: skyblue; 
  26.  

效果如下图:

(一看这个颜色就知道楼主是个女孩纸,)


上图结果分析:

在标准流的理论中,div作为块级元素会独占一行,但是布局中一个最常见的问题就是如何能让多个div元素显示在同一行,这时,标准流已经不能满足我们的需求。此时我们就需要对元素进行浮动,此时我如果想让div1和div2显示在同一行,就需要对这两个元素添加浮动属性
float:left,此时我们来看一下结果:


上图结果分析:

如上图所示,可以看到,粉色的div和紫色的div覆盖在了蓝色div的上面。这是因为浮动元素脱离了标准流到了浮动层,浮动层比标准层要高并且不占据页面空间,所以我们看到div1和div2覆盖在了div3上面,虽然是覆盖但是div3里面的文字会被挤走,此时div3仍然在标准层所以仍然是占据页面空间的。

2. 浮动会将行内元素和行内块元素转化为块元素

上面讲的块元素可以进行浮动,其实对于行元素和行内块元素也可以进行浮动,并且一旦进行了浮动就将其转化为了块元素,我们这里以span标签来举例。

html代码:


  1. <span class="span1">span1</span> 
  2. <span class="span2">span2</span> 
  3. <span class="span3">span3</span> 

css代码:


  1. .span1{ 
  2.     width: 200px; 
  3.     height: 200px; 
  4.     background: red; 
  5. .span2{ 
  6.     width: 200px; 
  7.     height: 200px; 
  8.     background: green; 
  9. .span3{ 
  10.     width: 200px; 
  11.     height: 200px; 
  12.     background: blue; 

结果如下:


众所周知,span是最常见的行内元素之一,行内元素共享同一行,中间有间隔,宽度和高度属性不起作用,此时,我们给每个span1加浮动属性float:left,我们看一下会有什么样的结果呢?结果如下图所示:


很显然,浮动过后的元素宽度和高度属性开始起作用,说明span元素从行标签变成了块标签。

三. 清除浮动

与其说是清除浮动,不如说是清除浮动带来的影响,我们一一来看清除浮动常见的四种方法:

假如说我们要实现如下布局,上方是导航部分,下方是内容部分,导航部分两个块左右浮动。


接下来我们来看原始代码,也就是未清除浮动时候的代码:

html代码:


  1. <!-- 导航部分 --> 
  2. <div class="nav"> 
  3.     <div class="left">logo</div> 
  4.     <div class="right">右边区域</div> 
  5. </div> 
  6. <!-- 内容部分 --> 
  7. <div class="content"></div> 

css代码:


  1. .nav{ 
  2.     width: 100%; 
  3.     background: #c0c0c0; 
  4.     padding: 10px; 
  5. .left{ 
  6.     width: 300px; 
  7.     height: 50px; 
  8.     background: pink; 
  9.     float: left; 
  10. .right{ 
  11.     width: 300px; 
  12.     height: 50px; 
  13.     background: #abcdef; 
  14.     float: right; 
  15. }     
  16. .content{ 
  17.     height: 400px; 
  18.     background: url("img/10.jpg"); 
  19.     background-size: cover; 

按照以上代码,结果将如下图:


结果分析:

我们知道,块级元素如果没有给高度,那么高度是由子元素还有padding值撑起来的,当left和right浮动之后脱离了文档流,不再占据页面空间,所以它们的父级的高度只有padding值,因而造成了上图的结果。那么如何消除浮动产生的影响呢?我们来看如下解决措施:

1. 给浮动元素的父级一个高度。


  1. .nav{ 
  2.     width: 100%; 
  3.     height: 50px; 
  4.     background: #c0c0c0; 
  5.     padding: 10px; 

给浮动元素的父级一个高度,使之占据页面空间,这种写法的优点是简单容易理解,但是缺点也很突出,不适用于高度不固定的div。

2. 给浮动元素的父级加overflow:hidden

css代码:


  1. .nav{ 
  2.     width: 100%; 
  3.     overflow: hidden; 
  4.     background: #c0c0c0; 
  5.     padding: 10px; 
  6. }  

overflow:hidden 的意思是超出的部分要裁切隐藏掉,那么如果 float
的元素不占普通流位置,普通流的包含块要根据内容高度裁切隐藏。如果高度是默认值auto,那么不计算其内浮动元素高度就裁切,就有可能会裁掉float元素。所以如果没有明确设定容器高情况下,它要计算内容全部高度才能确定在什么位置hidden,浮动的高度就要被计算进去,顺带达成了清理浮动的目标。

3. 给浮动元素的兄弟元素加clear:both

html代码:


  1. <div class="nav"> 
  2.      <div class="left">logo</div> 
  3.      <div class="right">右边区域</div> 
  4.      <div class="clear"></div> 
  5. </div> 

css代码:


  1. .clear{ 
  2.     clear: both; 
  3. }  

在实际项目的布局中遇到的很多问题都是因为没有清除浮动而造成的,所以一定要养成写完一部分代码就清除浮动的习惯。

祝学习进步,工作顺利!

作者:娇娇爱前端

来源:51CTO

时间: 2024-10-31 11:37:07

浮动布局所带来的影响以及如何清除浮动的相关文章

如何避免网站更换服务器带来的影响

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 大家好,今天给大家讲讲如何避免网站更换服务器带来的影响.服务器或者空间的转移我们迟早都是要遇到的,包括所有的站长,今天你没有碰到,你总有一天也会碰到的,比如有时候空间到期了,想换一个更大的空间,或者现有的流量和空间不满足了要换服务器了,有时候网通服务器访问比较缓慢要换双线服务器,各种各样的问题都是要更换服务器的.我们很多朋友发现,经常更换空间

百度上线拒绝外链工具给我们带来的影响及启示

3月1日百度隆重推出了拒绝外链工具,继绿萝算法后百度又要出招了,这几天许多SEO人都在讨论百度这个工具给我们带来哪些影响,百度究竟想给我们什么样的启示呢?内容是否已经成为SEO工作中的重点?外链建设是否应该去革新呢?等等这些疑问想必大多数SEO人都在迷茫之中,以为我们做SEO的时候以外链建设为重点,垃圾外链漫天飞,如今这些垃圾外链不但没有SEO效果,是否会起到比较严重的反作用呢?以下是笔者的一些看法,不喜勿喷啊! 影响一:外链建设追求质量,外链建设难度加大 在SEO操作中外链建设是最耗费时间和精

jQuery 瀑布流 浮动布局(一)(延迟AJAX加载图片)_jquery

浮动布局:即HTML结构的列,是用浮动方式. 一.功能分析: 1.判断图片是否进入可视区域: 2.用AJAX请求服务器数据: 3.将数据播入到相应的列队: 二.实现方法: 给window的scroll事件l绑定一个处理函数:做如下工作: 1.如何判断最后一行的图片,是否进入了可视区域? 如果:最后一行的某个图片距离浏览器可视区域顶部的距离值 小于 (可视区域的高度+滚动条滑动的距离值): 那么:就可以判定这个图片进入了浏览器的可视区域: 2.如何用AJAX请求服务器数据; $.getJSON()

update-MySQL怎么还原上一次SQL操作带来的影响

问题描述 MySQL怎么还原上一次SQL操作带来的影响 例如: update tablename set mobile=13396009700; 忘记加where条件造成全部修改了.如何还原? 解决方案 完整还原上次的备份吧 解决方案二: 只能恢复上次备份了 解决方案三: 没有办法,只能找最后一次的备份,恢复到那个时间点,然后再执行BINLOG中的备份逐步恢复到执行UPDATE的前一时刻. 解决方案四: 你没有备份数据也没有设置还原点所以还原不了了 解决方案五: 向领导承认错误吧,领导那里应该有

分析四个个社会媒体给SEO带来的影响

摘要: 我们都知道社会化媒体会影响我们的SEO,但是社会化媒体如何影响我们的SEO?这可能是很多站长所不清楚的问题.虽然社会化媒体的社会信号在搜索引擎的排名算法中的具体影响仍然是一 我们都知道社会化媒体会影响我们的SEO,但是社会化媒体如何影响我们的SEO?这可能是很多站长所不清楚的问题.虽然社会化媒体的社会信号在搜索引擎的排名算法中的具体影响仍然是一个迷,但是我们可以借助一些搜索引擎的表现来联系到期所带来的明确的影响.下面笔者将分析四个个社会媒体给SEO带来的影响. 1:在搜索结果上的注释 这

暴风影音上市拥抱创业板,上市带来三大影响

北京时间3月24日,北京暴风科技股份有限公司(300431.SZ)在A股创业板挂牌上市.发行价7.14元/股,共公开发行3000万股,募集2.14亿元.发行开盘价9.43元,开盘后封停10.28元,较发行价上涨43.98%.暴风科技本次IPO募集的资金将围绕公司主营业务展开,主要用于互联网高清视频服务平台的升级与扩建项目,以及移动终端视频服务系统研发项目,以期提高"暴风影音"的广告媒体投放价值和公司技术研发水平,从而提高盈利水平. 始于"暴风影音" 暴风科技在上市前

搜索给网络广告带来的影响?

中介交易 SEO诊断 淘宝客 云主机 技术大厅 下午就重庆商报记者提到的雅虎合并搜索和图形广告部门一事谈了自己的看法.大体的观点是 认为这是雅虎为了提高公司运营效率即将进行整合和重组一系列措施的第一步举动,只是就事论事地谈. 不过延伸这个话题,加上最近在帮一家网络广告公司张罗VC之事,过后倒想对搜索业务对网络广告带来什么影响谈谈自己的看法.         网络 广告业务一直是 众多 互联网公司获得收入的最主要来源,范例包括雅虎.Google这样的公司在内.而且这块市场一直被业界看好,也越来越成

NB-IoT应用对物联网带来的影响

MWC2016上,NB-IoT首次亮相,受到瞩目,运营商和设备商纷纷为其站台和背书.NB-IoT(Narrow Band Internet of Things, NB-IoT)是IoT领域基于蜂窝的窄带物联网的一种新兴技术,支持低功耗设备在广域网的蜂窝数据连接,也被叫作低功耗广域网(LPWA).NB-IoT只消耗大约180KHz的频段,可直接部署于GSM网络.UMTS网络或LTE网络支持待机时间短.对网络连接要求较高设备的高效连接.NB-IoT应用对物联网带来的影响NB-IoT在物联网应用中的优

Tumblr拒绝收购,为中国轻博客带来利好影响

美国知名轻博客网站Tumblr近日传出要被Twitter收购的消息,但很快被Tumblr官方辟谣,称无意变卖.Tumblr拒绝收购的结果在意料之中,除非是相当巨大的诱惑,否则Tumblr不会轻易出售. 究其原因,除了Tumblr创始人个人的意愿之外,还有一个重要的原因,就是Tumblr所具有的不容忽视的潜力.美国有分析人士将Tumblr与Facebook作比较,他们认为,配合社交图谱的兴趣图谱(Interest Graph)变得越来越重要,Facebook.Twitter和谷歌正在致力于提供具有