`
kj23
  • 浏览: 26256 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

CSS中Float概念相关文章采撷

阅读更多

 

原始出处

Float(浮动)概念也许是CSS中最让人迷惑的一个概念吧。Float经常被错误理解,而且因为将上下文元素全部浮动导致的可读性、可用性问题备受责难。然而,这些问题的根源并不在于理论本身,而是开发人员以及浏览器对理论的解读造成的。

如果你认真的去读一下浮动概念,你会发现并不像所见的那样复杂。大多数问题都是由于老版本的IE带来的(我只是猜想)。如果你知道这些bug,你就能避免这些问题。

让我们尝试去解决这些问题并澄清一些以前使用浮动的误解。我们参考了成打的相关文章,并选取了最为重要的一些你必须了解的问题。

What You Should Know About Floats 

 

 

关于图文围绕的实践可以追溯到很久很久以前。这也就是为什么从Netscape1.1开始这个功能被引入浏览器,以及为什么CSS使用浮动属性来实现它。‘Float(浮动)’这个术语引用自伴随Netscape1.1一同发布的‘Additions to HTML 2.0’文档,描述一个元素浮动至某一侧并停下的表现方式。”[Containing Floats 

浮动元素的定位还是基于正常的文档流,然后从文档流中抽出并尽可能远的移动至左侧或者右侧。文字内容会围绕在浮动元素周围。当一个元素从正常文档流中抽出后,仍然在文档流中的其他元素将忽略该元素并填补他原先的空间。” [Float Positioning]

 元素浮动后将自动转为块级元素。该元素可以被移动至当前行的左侧或右侧。属性如下:float: left, float: right or float: none”[Floatutorial: Float Basics]

 你应该为所有的浮动元素设定宽度属性(除非是<img>元素,因其具有隐含的宽度)。如果不设定宽度,结果将是不可预知的。”[Floatutorial: Float Basics]

 举例来说,浮动元素应该定义宽度属性,不论是显式指定的还是隐含的。另外,它会尽可能的水平的填充容器元素,就像非浮动内容那样,不给其他内容空间以围绕它们。其次,和正常文档流中的元素不同,浮动元素的垂直边距(margin)不会叠加。最后,浮动元素可以和临近在正常文档流中块级元素重叠(译注:浮动元素不占任何正常文档流空间,所以建议不要理解成重叠,而是腾空浮动的概念。)。”[CSS Positioning: Floats] 

首先我们要牢记的一件事情是,浮动元素只能浮动至左侧或者右侧,没有浮动至中间一说,这是很多新手容易范的错误。记住,最基本的规则,浮动元素只能浮动至两侧。” [Float Layouts]

 当我们让一个元素浮动,它会往右或者往左浮动直至遇到容器的边缘。如果我们向同一方向再浮动一个元素,它会浮动直至碰到前一个浮动元素的边缘。如果我们浮动更多的元素,他们将一个挨一个排列,但不久就会空间不足,当该行已经无法容纳更多的浮动元素,则下一个浮动元素会换行继续排列。” [Float Layouts]

Containing blocks or containing boxes容器元素是指包含其他子元素的行级或块级元素。。。。 [Floatutorial]

 “当明确指定时,浮动元素垂直位置由它原先在文档流中的位置决定,顶端与当前行顶端对其。但是水平方向上,它尽可能远的向容器元素边缘移动,但是仍遵循容器元素的填充距离(padding)同行的行内元素则围绕浮动元素排列。” [CSS Positioning: Floats]  

由于浮动元素不占据正常文档流空间,所以浮动元素前后那些未明确指定位置的块级元素会占据浮动元素本来应该处在的位置,就好像它从来不曾存在过。而浮动元素之后的那行会根据浮动元素缩小宽度。浮动元素之前的元素则会重新被排列,占据独立的一行。(译注:ie 和 ff 在这种情况下的表现不尽相同)” [W3C Visual Formatting Model]

如果当前行的水平方向上没有足够的空间容纳浮动元素,则向下一行,直至有能容纳该元素的行。” [Floatutorial: Float Basics]

 任何浮动元素都不可能超过原来所处文档留位置的上边界。浮动元素的顶端必定和当前行顶端对齐(或者在没有当前行元素时和前一个块级元素底部边缘对齐)。”[Float Layouts]

想要真正理解浮动理论,你必须明白在CSS中什么是行 (line box)。不幸的是,为了解释什么是行,你必须先明白什么是行级元素。行级元素指的是那些非块级元素,例如<em>而行是一个逻辑上的概念,是一个虚拟的矩形,包含了组成该行的所有行级元素,其高度至少等于这些行级元素中最高的那个。” [Float Layouts] 

“如果我们将Div中所有的列都加上 float: left 它们会挨个向左排列,如果我们希望在页面底部有一个页脚,并不需要一个最长的列,只要加上 clear: both 就可以了”[Float Layouts]

使用浮动元素包含浮动元素这样的布局方式有一个潜在的缺点,即你的页面是否能够一直保持一致的展现效果将取决于浏览器的实现是否保持一致。特别是当浮动元素是一个更为复杂的布局中的一部分的话,将变得更加不堪一击。”[Containing Floats]

 

Clearing the floats

 

 

 

浮动元素之后的元素会自动围绕该浮动元素。如果你不希望这样,你可以为这些元素应用‘clear’属性。该属性有4种设值:clear: left, clear: right, clear: both or clear: none”[Floats and “clear”]

有很多技巧可以做到清理浮动元素,但不引入额外的无语义标签。下面3种是比较常见的做法: a) 将容器元素一起浮动  b) 在容器元素上使用 overflow: hidden  c) 使用:after这样的css伪类。 [How to clear CSS floats without extra markup] 

插入一个清理元素是使容器正确包裹所有浮动元素的标准做法,这样做具有将容器底部边缘拖拉以包裹所含元素的效果。” [How To Clear Floats Without Structural Markup]

对于基于浮动设计的布局来说,一个常见的问题就是浮动元素的容器不会自动伸展来包含浮动元素。如果你希望在所有的浮动元素的外面加上边框(例如,在容器元素上加上边框),这样你必须显示的命令浏览器来伸展容器。你可以是用overflow method方法。”  

使用:after  想像一下我们使用:after来插入一个点号,并且设置它的属性{clear: both;}。这就是所有你需要做的事情,但是没有人会接受容器底部有那么一丝空隙,所以我们还要设置{height: 0;} {visibility: hidden;} 来保证严丝合缝。  [How To Clear Floats Without Structural Markup]

  

原始出处

 

分享到:
评论
5 楼 jindw 2007-05-06  
一个容易被大多数人误解的规则,很难说他是成功的。
没有办法,w3c就是老大,我们别无选择。
4 楼 dlee 2007-05-06  
downpour 写道
劳烦您给我找一下,我一直对不设置width和height的containing block的表现有疑问,我也没有能找到相应的例子。我只知道,他们在IE和标准浏览器上的表现是不同的。

自己去找。
这是IE6的bug。还是告诉你到哪里去找吧,仔细看看《精通CSS》的第9章:bug和bug修复,还有第7章:布局。
你不设width和height,这个元素在IE6中就不拥有layout,这是出现问题的主要原因。
3 楼 downpour 2007-05-06  
dlee 写道
去看《精通CSS》,里面有很详细的例子。


劳烦您给我找一下,我一直对不设置width和height的containing block的表现有疑问,我也没有能找到相应的例子。我只知道,他们在IE和标准浏览器上的表现是不同的。
2 楼 dlee 2007-05-05  
去看《精通CSS》,里面有很详细的例子。
1 楼 downpour 2007-05-05  
概念非常清晰,好文啊。如果能配合示例进行讲解就完美了。

相关推荐

    CSS浮动属性Float详解 什么是CSS Float?

    Float 属性是 CSS 中非常重要的一部分,掌握 Float 属性可以帮助我们创建复杂的网页布局。但是,Float 属性也存在一些问题,例如,清除 Float 和塌陷问题。只有正确地使用 Float 属性,我们才能创建一个美丽的网页...

    css 的 float 与clear

    在这篇文章中,我们将深入探讨`float`和`clear`的概念、用法以及它们如何影响元素的排列。 首先,我们来看`float`属性。`float`主要用于将元素从正常的文本流中移出,使其可以浮动到其容器的左侧或右侧。这通常用于...

    css float文章收集

    CHM文件是微软的“Compiled HTML Help”格式,常用于存储技术文档,用户可以通过它查找CSS2中的`float`属性和其他相关概念的详细信息。CHM文件通常包含索引、搜索功能和分章节的内容,方便用户快速定位和学习。 在...

    CSS-float详解.pdf

    在CSS布局中,`float`属性是一种非常重要的布局手段,主要用于创建复杂的页面结构。通过本文档,我们将深入探讨`float`属性的基本概念、工作原理以及常见应用场景,帮助读者更好地理解和运用这一特性。 #### 二、...

    DIVCSS布局:CSS浮动float属性详解.doc

    DIVCSS布局:CSS浮动float属性详解.doc

    CSS中的Float语法.pdf

    浮动(Float)是CSS布局中一个重要的概念,主要用于创建图文环绕、多列布局等效果。在CSS中,`float`属性用于定义元素是否应该以及如何浮动。这个属性最初设计是为了解决图像在文本中的布局问题,但后来扩展到了所有...

    CSS中Float(浮动)相关技巧文章

    ### CSS中Float(浮动)相关技巧详解 #### 浮动的概念与原理 浮动(`float`)是CSS中一个非常重要的布局属性,它允许元素脱离正常的文档流,并且向左或向右移动,同时文本或其他元素可以围绕在该元素周围。尽管...

    如何正确的理解CSS的float浮动属性.pdf

    如何正确的理解CSS的float浮动属性.pdf

    css float属性_动力节点Java学院整理

    浮动(Float)是CSS布局中的一个关键概念,它主要用于创建多列布局和控制元素的排列方式。`float`属性允许元素在文档流中浮动,从而影响周围元素的布局。本篇将详细介绍`float`属性及其在页面布局中的作用。 ### 1....

    css 跨浏览器实现float-center.docx

    此外,还提到了一些相关的CSS知识点,如`javascript css styleFloat`、`javascript css float 属性的特别写法`、`CSS 中Float(浮动)相关技巧`、`javascript 下操作 css 的float 属性的特别写法`、`css position: ...

    CSS之float属性详解

    float官方文档概念 float属性指定一个盒子(元素)是否应该浮动,可以设置浮动方向。 css语法 float:left|right|none|inherit ; 属性值: 值 描述 left 元素向左浮动 right 元素向右浮动 none 默认值。...

    CSS2.0 中文手册

    **CSS2.0中文手册**是前端开发领域中不可或缺的参考资料,它详尽地阐述了CSS(层叠样式表)2.0规范的所有特性和用法。CSS2.0是Web设计的重要里程碑,引入了许多至今仍广泛使用的功能,极大地提升了网页的外观和布局...

    css中float:right右对齐元素会换行不在同一条线上

    CSS中通常我们需要将某元素居左、居右显示,这个时候我们就可以根据float来设置,在设置右对齐显示的时候,我们通常会遇到,右对齐的元素会换行,这样就会出现左右元素不在同一条线上,我们可以通过以下方式来解决这...

    javascript下操作css的float属性的特殊写法

    然而,在使用JavaScript操作CSS中的`float`属性时,会遇到一种特殊的情况,即不能直接使用`obj.style.float`的方式来进行操作。 #### JavaScript 操作 CSS 属性的一般规则 在了解如何处理`float`属性之前,我们需要...

    css float left布局换行不正常问题的解决

    在讨论CSS中float布局换行问题之前,首先要了解CSS float属性的基本原理。float属性是一种非常有用的CSS布局方式,它允许元素向左或向右浮动,直到它的外边缘碰到包含框或另一个浮动元素的边框为止。使用float属性...

    第14周-21章节-Python3.5-css之float样式.avi

    第14周-21章节-Python3.5-css之float样式.avi

    css浮动 float属性详解

    浮动(float)是CSS布局中的一个重要概念,它使得元素能够脱离正常文档流,向左或向右移动,直至其边框接触到包含框或另一个浮动元素的边框。这个特性最初设计是为了实现图文环绕效果,但现在在网页布局中有着广泛的...

Global site tag (gtag.js) - Google Analytics