电脑软硬件应用网
当前位置: 电脑软硬件应用网 > 设计学院 > 网络编程 > CSS教程 > 正文
[组图]CSS网页定位教程:详细学习定位知识
CSS网页定位教程:详细学习定位知识
2010-1-3 9:15:40  文/佚名   出处:网页教学网   

CSS 浮动

请看下图,当把框 1 向右浮动时,它脱离文档流并且向右移动,直到它的右边缘碰到包含框的右边缘:

CSS 浮动实例 - 向右浮动的元素 

再请看下图,当框 1 向左浮动时,它脱离文档流并且向左移动,直到它的左边缘碰到包含框的左边缘。因为它不再处于文档流中,所以它不占据空间,实际上覆盖住了框 2,使框 2 从视图中消失。

如果把所有三个框都向左移动,那么框 1 向左浮动直到碰到包含框,另外两个框向左浮动直到碰到前一个浮动框。

CSS 浮动实例 - 向左浮动的元素 

如下图所示,如果包含框太窄,无法容纳水平排列的三个浮动元素,那么其它浮动块向下移动,直到有足够的空间。如果浮动元素的高度不同,那么当它们向下移动时可能被其它浮动元素“卡住”:

CSS 浮动实例 2 - 向左浮动的元素  

CSS float 属性

在 CSS 中,我们通过 float 属性实现元素的浮动。

如需更多有关 float 属性的知识,请访问参考手册:CSS float 属性。

行框和清理

浮动框旁边的行框被缩短,从而给浮动框留出空间,行框围绕浮动框。

因此,创建浮动框可以使文本围绕图像:

行框围绕浮动框 

要想阻止行框围绕浮动框,需要对该框应用 clear 属性。clear 属性的值可以是 left、right、both 或 none,它表示框的哪些边不应该挨着浮动框。

为了实现这种效果,在被清理的元素的上外边距上添加足够的空间,使元素的顶边缘垂直下降到浮动框下面:

clear 属性实例 - 对行框应用 clear 

这是一个有用的工具,它让周围的元素为浮动元素留出空间。

让我们更详细地看看浮动和清理。假设希望让一个图片浮动到文本块的左边,并且希望这幅图片和文本包含在另一个具有背景颜色和边框的元素中。您可能编写下面的代码:

  1. .news 
  2.   background-color: gray; 
  3.   border: solid 1px black; 
  4.  
  5. .news img 
  6.   float: left; 
  7.  
  8. .news p 
  9.   float: right; 
  10.  
  11. <p class="news"> 
  12. <img src="news-pic.jpg" /> 
  13. <p>some text</p> 
  14. </p> 

这种情况下,出现了一个问题。因为浮动元素脱离了文档流,所以包围图片和文本的 p 不占据空间。

如何让包围元素在视觉上包围浮动元素呢?需要在这个元素中的某个地方应用 clear:

clear 属性实例 - 对空元素应用清理 

不幸的是出现了一个新的问题,由于没有现有的元素可以应用清理,所以我们只能添加一个空元素并且清理它。

  1. .news 
  2.   background-color: gray; 
  3.   border: solid 1px black; 
  4.  
  5. .news img 
  6.   float: left; 
  7.  
  8. .news p 
  9.   float: right; 
  10.  
  11. .clear {clear: both;} 
  12.  
  13. <p class="news"> 
  14. <img src="news-pic.jpg" /> 
  15. <p>some text</p> 
  16. <p class="clear"></p> 
  17. </p> 

这样可以实现我们希望的效果,但是需要添加多余的代码。常常有元素可以应用 clear,但是有时候不得不为了进行布局而添加无意义的标记。

不过我们还有另一种办法,那就是对容器 p 进行浮动:

  1. .news  
  2.   background-color: gray; 
  3.   border: solid 1px black; 
  4.   float: left; 
  5.  
  6. .news img  
  7.   float: left; 
  8.  
  9. .news p  
  10.   float: right; 
  11.  
  12. <p class="news"> 
  13. <img src="news-pic.jpg" /> 
  14. <p>some text</p> 
  15. </p> 

这样会得到我们希望的效果。不幸的是,下一个元素会受到这个浮动元素的影响。为了解决这个问题,有些人选择对布局中的所有东西进行浮动,然后使用适当的有意义的元素(常常是站点的页脚)对这些浮动进行清理。这有助于减少或消除不必要的标记。

事实上,W3School 站点上的所有页面都采用了这种技术,如果您打开我们使用 CSS 文件,您会看到我们对页脚的 p 进行了清理,而页脚上面的三个 p 都向左浮动。

绝对定位的元素的位置相对于最近的已定位祖先元素,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块。

对于定位的主要问题是要记住每种定位的意义。所以,现在让我们复习一下学过的知识吧:相对定位是“相对于”元素在文档中的初始位置,而绝对定位是“相对于”最近的已定位祖先元素,如果不存在已定位的祖先元素,那么“相对于”最初的包含块。

注释:根据用户代理的不同,最初的包含块可能是画布或 HTML 元素。

提示:因为绝对定位的框与文档流无关,所以它们可以覆盖页面上的其它元素。可以通过设置 z-index 属性来控制这些框的堆放次序。

上一页  [1] [2] 

  • 上一篇文章:

  • 下一篇文章:
  • 最新热点 最新推荐 相关文章
    CSS伪类选择器nth-child()
    css3教程:background属性调整增强
    css教程:CSS3 Media Queries 详解
    CSS 类名的长命名和短命名
    CSS实例教程:非浮动区域设置宽度
    如何使用css约束一个层不可见?
    CSS的list-style解释
    小议使用“完整”的CSS的缺点
    CSS中的相对定位与绝对定位详解
    实例使用DIV+CSS制作圆角边框加阴影…
    关于45IT | About 45IT | 联系方式 | 版权声明 | 网站导航 |

    Copyright © 2003-2011 45IT. All Rights Reserved 浙ICP备09049068号