码迷,mamicode.com
首页 > 其他好文 > 详细

4.1 盒子的浮动

时间:2014-06-20 16:53:13      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   http   ext   color   

理解了第3章介绍的独立的盒子模型,以及在标准流情况下的盒子的相互关系之后,读者也会发现一个重要的问题,如果仅仅按照标准流的方式进行排版.就只能按熙仅有的几种可能性进行排版,限制太大了。

在第2章“禅意花园”中的丰富效果是如何实现的呢? css的制定者也想到了排版限制的问题,因此又给出了若干不同的手段,实现各种排版需要。

要涉及的最重要的就是CSS中的float和position两个属性。下面就详细介绍它们的应用。

在标准流中,一个块级元素在水平方向会自动伸展,直到包含它的元素的边界;而在竖直方向和兄弟元素依次排列,不能并排。使用“浮动”方式后。块级元素的表现就会有所不同。

CSS中有一个float属性,默认为none,也就是标准流通常的情况。如果将float属性的值设置为left或right.元素就会向其父元素的左侧或右侧靠紧,同时默认情况下,盒子的宽度不再伸展。而是根据盒子里面的内容的宽度来确定。

一、准备代码

浮动的性质比较复杂,这里先制作一个基础的页面,代码如下,文件位于网页学习网CSS教程资源中“第4章\01.htm”。后面一系列的实验将基于这个文件进行。lodidance.com

  1. <!DOCTYPE html PUBliC "-//W3C//DTD XHTML 1.0 Transitional//EN"  
  2.  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
  3. <html xmlns="http://www.w3.org/1999/xhtml"> 
  4. <head> 
  5.     <title>网页学习网-float属性</title> 
  6. <style type="text/css"> 
  7. body{  
  8.     margin:15px;  
  9.     font-family:Arial; font-size:12px;  
  10.     }  
  11.  
  12. .father{  
  13.     background-color:#ffff99;  
  14.     border:1px solid #111111;  
  15.     padding:5px;                  
  16.     }  
  17.  
  18. .father div{  
  19.     padding:10px;                 
  20.     margin:15px;                      
  21.     border:1px dashed #111111;  
  22.     background-color:#90baff;  
  23.     }  
  24.  
  25. .father p{  
  26.     border:1px dashed #111111;  
  27.     background-color:#ff90ba;  
  28.     }  
  29.  
  30.       
  31. .son1{  
  32. /* 这里设置son1的浮动方式*/  
  33.  
  34. }  
  35.  
  36. .son2{  
  37. /* 这里设置son1的浮动方式*/  
  38.  
  39. }  
  40.  
  41. .son3{  
  42. /* 这里设置son1的浮动方式*/  
  43.  
  44. }  
  45.  
  46. </style> 
  47. </head> 
  48. <body> 
  49.     <div class="father"> 
  50.         <div class="son1">Box-1</div> 
  51.         <div class="son2">Box-2</div> 
  52.         <div class="son3">Box-3</div> 
  53.         <p>这里是浮动框外围的文字,这里是浮动框外围的文字,这里是浮动框外围的文字,
  54. 这里是浮动框外围的文字,这里是浮动框外围的文字,这里是浮动框外围的文字,
  55. 这里是浮动框外围的文字,这里是浮动框外围的文字,这里是浮动框外围的文字.</p> 
  56.     </div> 
  57. </body> 
  58. </html> 

上面的代码定义了4个<div>块,其中一个父块,另外3个是它的子块。为了便于观察,将各个块都加上了边框以及背景颜色,并且让<body>标记以及各个div有一定的margin值。

如果3个子div都没有设置任何浮动属性,就为标准流中的盒子状态。在父盒子中,4个盒子各自向右伸展,竖直方向依次排列,效果如图1所示。

bubuko.com,布布扣
图1 没有设置浮动时的效果

下面开始在这个基础上做实验,通过一系列的实验,就可以充分体会到浮动盒子具有哪些性质了。

二、实验1——设置第1个浮动的div

在上面的代码中找到:

  1. .son1{  
  2. /* 这里设置son1的浮动方式*/ 
  3.  

将.son1盒子设置为向左浮动,代码为:

  1. .son1{  
  2. /* 这里设置son1的浮动方式*/ 
  3.     float:left;  

这时效果如图2所示,相应的文件位于网页学习网CSS教程资源中“第4章\02.htm”。可以看到,标准流中的Box-2的文字在围绕着Box-1排列,而此时Box-1的宽度不再伸展,而是能容纳下内容的最小宽度。

bubuko.com,布布扣
图2 设置第一个div浮动时效果

请读者思考,此时Box-2这个盒子的范围是如何确定的,也就是它的左边框在哪里。答案是与Box-1的左边框重合,因为此时Box-1已经脱离标准流,标准流中的Box-2会顶到原来Box-1的位置,而文字会围绕着Box-1排列。

三、实验2——设置第2个浮动的div

将Box-2的float属性设置为left.此时效果如图3所示。可以看到Box-2也变为根据内容确定宽度,并使Box-3的文字围绕Box-2排列。

相应的文件位于网页学习网CSS教程资源中“第4章\03.htm”。

bubuko.com,布布扣
图3 设置前两个div浮动时效果

从图中可以更清晰地看出,Box-3的左边框仍在Box-1的左边框下面。否则Box-1和Box-2之间的空白不会是深色,这个深色实际上是Box-3的背景色,Box-1和Box-2之间的空白是由二者的margin构成的。

四、实验3——设置第3个浮动的div

接下来,把Box-3也设置为向左浮动。这时效果如图4所示,相应的文件位于网页学习网CSS教程资源中“第4章\04.htm”。可以清楚地看到,文字所在的盒子的范围。以及文字会围绕浮动的盒子排列。

bubuko.com,布布扣
图4 设置三个div浮动时效果

五、实验4——改变浮动的方向

将Box-3改为向右浮动,即float:right。这时效果如图5所示,相应的文件位于网页学习网CSS教程资源中“第4章\05.htm”。可以看到Box-3移动到了最右端,文字段落盒子的范围没有改变,但文字变成了夹在Box-2和Box-3之间。

bubuko.com,布布扣
图5 改变浮动方向后的效果

这时,如果把浏览器窗口慢慢调整变窄,Box-2和Box-3之间的距离就会越来越小,直到二者相接触。如果继续把浏览器窗口调整变窄,浏览器窗口就无法在一行中容纳Box-1到Box-3,Box-3会被挤到下一行中,但仍保持向右浮动,这时文字会自动布满空间,如图6所示。lodidance.com

bubuko.com,布布扣
图6 div被挤到下—行时的效果

 

编辑:网页学习网
本文地址:http://www.lodidance.com/css/jc/674.html

4.1 盒子的浮动,布布扣,bubuko.com

4.1 盒子的浮动

标签:style   class   blog   http   ext   color   

原文地址:http://www.cnblogs.com/you-me/p/3796740.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!