你的位置:首页 > 网页设计

[网页设计]浅谈float浮动


float大概是css3以前网页布局里最常用的一个属性了,经常看到一言不合就浮动的代码,就一起来深入挖掘一下这个一半天使一半魔鬼的属性吧。

本文是读张鑫旭大神慕课网float视频后的一些总结及一些拓展用法,视频地址:http://www.imooc.com/learn/121。该视频初读很枯燥,认真读后会发现更枯燥。。。。。。不过遇到坑之后再去读就会发现良心视频,字字珠玑。闲话不多说,现在开始:

1.float的起源

  浮动最初的设计是用来做文字的环绕效果的,这也是设计者想让我们做的东西。

2.float的参数

  float属性的参数取值有三个:

  left:表示元素浮动在左边。

  right:表示元素浮动在右边。

  none:对象不浮动,遵循标准文档流。

3.效果展示(以float:left为例,float:right的情况只是位置的不同)

<style> div{  height: 20px;}  .d1{    width: 50px;    background: hsl(100,50%,80%);  }  .d2{float: left;    width: 100px;    background: hsl(150,50%,80%);  }  .d3{    width: 250px;    height: 100px;    background: hsl(10,50%,80%);  }  .d4{float: left;    width: 300px;    background: hsl(250,50%,80%);  }  span{    margin-right: 3px;     border-right: solid 1px #ccc;    background-color: hsl(60,50%,80%);  }  .s3{    float:left;  }</style> <body> <div class="d1">div1</div><div class="d2">div2有float</div><div class="d3">div3</div><span class="s1">span1</span><span class="s2">span2</span><span class="s3">span3有float</span><div class="d4">div4有float</div><span class="s4">span4 </span></body> 

 

  当浏览器宽度不够长时:

  当浏览器宽度足够长时:

  我们可以得出以下几个结论:

当浮动元素为块状元素时,他的下一个紧邻元素(不浮动)是块状元素时会与该浮动元素发生重叠,该浮动元素会在上方。如果下一个紧邻元素为内联元素时会紧跟该浮动元素。

当浮动元素为内联元素时,他的下一个紧邻元素(不浮动)是块状元素时不会移动,但宽度不够也会发生重叠。如果下一个紧邻元素为内联元素时会紧跟该浮动元素。

4.浮动的破坏性

  设置了float的元素会脱离文档流,会导致其父元素出现高度“坍塌”。

<div style="border:3px dashed #ddd">  <p>我还没设置float属性</p></div>

<div style="border:3px dashed #ddd">  <p style="float:left">我设置了float属性</p></div>

5.浮动的包裹性

  这是没有float的div

  这是个带有float的div

6.浮动去空格

  这个已经在上面代码和结论中中有所展示,简单来说就是正常文档流中两个内联元素之间以及上下会默认有一段缝隙,而浮动可以清除这个缝隙,让两个元素无缝结合,也会清除上下之间的缝隙。

7.清除浮动的影响

  7.1 使用clear属性

  a.将<div ></div>放到当作最后一个子标签放到父标签那儿,也是最简单的清除浮动的方法,但是不推荐。

<div style="border:3px dashed #ddd">  <p style="float:left">我设置了float属性</p>  <div style="clear:both"></div></div>

 

  

  b.after伪元素和zoom

  after,就是指标签的最后一个子元素的后面。因此我们可以用CSS代码生成一个具有clear属性的元素

<style>.mydiv{    border:3px dashed #ddd  }  .mydiv:after{    content: "";    clear:both;    display: block;    }</style><body><div class="mydiv">  <p style="float:left">我设置了float属性</p></div></body>

 

 但是ie6/7无法识别伪元素after,就得用zoom方式,例:

.mydiv{    border:3px dashed #ddd;
     zoom:1 }
  7.2 BFC
给父元素添加浮动,或者overflow:hidden,position:absolute等可以使元素BFC化的属性,下节单独探讨BFC的生成条件和布局规则,例:
<style>   .mydiv{    border:3px dashed #ddd;    overflow: hidden;  }</style> <body> <div class="mydiv">  <p style="float:left">我设置了float属性</p></div></body> 

关于float的布局以及清除影响就先到这了,有遗漏和错误的地方欢迎指正,下节来一起看看BFC到底是什么,他是如何布局的,为什么可以用来清除浮动。

 

 

 

 

 

  




去塞舌尔旅游攻略塞舌尔六日游行程安排参考去塞舌尔旅游跟团行程塞舌尔旅游护照签证塞舌尔旅游路线报价费用深圳儿童乐园营业时间?儿童乐园哪里好玩? 深圳儿童乐园几点开门?儿童乐园在哪里? 欢乐海岸麦鲁小镇在什么地方?深圳欢乐海岸麦鲁小镇具体位置? 深圳到千年瑶寨怎么走有多远?深圳到连南千年瑶寨多长时间? 习近平主席将出席G20峰会并访问澳大利亚 尽享奢华味觉:上海美食圈中的"爱马仕"(全文) 光明滑草场游乐园票价?深圳光明农场滑草场优惠价? 光明滑草场游乐园有哪些好玩的?深圳光明农场滑草场门票包含什么? 广州到九连山新河漂流有多远?广州到连平九连山新河漂流多少公里? 广州到连平新河漂流怎么走?广州到新河漂流自驾游路线? 河源火车站到野趣沟怎么坐车?河源火车站到野趣沟漂流有车吗? 野趣沟暗洞漂流好玩吗?河源野趣沟暗洞漂流多长时间? 歇马举人村在哪里坐车?恩平歇马举人村乘车路线? 轻轻松松骑行福州 榕城单车骑行路线推荐 流溪河森林公园自驾游?流溪河开车路线? 一日赏尽江南秋 细数无锡最美24小时 ECJ1VC1H470J Datasheet ECJ1VC1H470J Datasheet ECJ1VC1H471J Datasheet ECJ1VC1H471J Datasheet ECJ1VC1H560J Datasheet ECJ1VC1H560J Datasheet 自然风景 自然风景 自然风景 玉龙雪山图片 玉龙雪山图片 玉龙雪山图片 广州鳄鱼公园 广州鳄鱼公园 广州鳄鱼公园