`
yiminghe
  • 浏览: 1460727 次
  • 性别: 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’文档,描述一个元素浮动 至某一侧并停下的表现方式。”


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


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


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


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


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


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


  Containing blocks or containing boxes:“容器元素是指包含其他子元素的行级或块级元素。。。。”  


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


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


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


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


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


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


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


Clearing the floats
 
------------------------------------------------------------------------------------------------------------

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


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


  “插入一个清理元素是使容器正确包裹所有浮动元素的标准做法,这样做具有将容器底部边缘‘拖拉’以包裹所含元素的效果。” 


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


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

分享到:
评论

相关推荐

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

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

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

    CSS 浮动属性 Float 详解 CSS 浮动属性 Float 是一种重要的定位属性,允许页面元素浮动在其他元素旁边。Float 属性可以取四个值:Left、Right、None 和 Inherit。其中,Left 和 Right 分别浮动元素到左边和右边,...

    divcss布局:CSS布局方法介绍

    ### DivCSS布局:CSS布局方法介绍 #### 一、CSS布局常用思路方法 在Web开发中,CSS(层叠样式表)布局是非常重要的一个环节,它决定了网页元素如何排列和展示。本文将详细介绍几种常用的CSS布局方法及其应用场景。...

    3一面 3:CSS-HTML 知识点与高频考题解析.md

    - 浮动`float` - 浮动布局概念 - 清理浮动 - 定位`position` - 文档流概念 - 定位分类 - fixed 定位特点 - 绝对定位计算方式 - `flex`布局 - 如何实现居中对齐? - 理解语义化 - CSS3 动画 - 重绘和回流 ----...

    css float文章收集

    标题中的“css float”指的是CSS布局中的浮动特性,它是网页设计中实现元素排列的重要方法。在Web开发中,`float`属性允许元素脱离其正常文档流,并向左或向右移动,直到其边缘接触到包含框或另一个浮动元素的边缘。...

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

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

    CSS2.0 中文手册

    4. **浮动**:浮动(float)属性允许元素在页面上向左或向右移动,常用于创建多列布局。浮动元素会影响周围元素的布局,需通过清除浮动(clear)来避免布局混乱。 5. **边框和背景**:CSS2.0支持各种边框样式,如实线、...

    css 的 float 与clear

    在CSS世界中,`float`和`clear`是两个非常重要的布局属性,它们在网页设计中扮演着不可或缺的角色。这两个属性对于理解盒模型以及创建复杂的网页布局至关重要。在这篇文章中,我们将深入探讨`float`和`clear`的概念...

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

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

    div+css手册

    2. **浮动(Floating)**:`float`属性允许元素向左或向右浮动,常用于创建多列布局。浮动元素会脱离正常文档流,影响周围元素的布局,而未浮动的元素会围绕它流动。 3. **盒模型(Box Model)**:CSS2.0的盒模型...

    CSS2.0,CSS,CSS样式

    1. **浮动(Float)**:CSS2.0引入了浮动,允许元素脱离正常文档流并使其与其他元素对齐,这对于创建多列布局非常有用。 2. **定位(Positioning)**:CSS2.0提供了`position`属性,允许元素相对于其正常位置或者父...

    苏煜css参考手册

    `float:left` 和 `float:right` 属性可以使元素向左或向右浮动,从而调整其在页面上的位置。 2. **定位**:CSS2的定位系统包括静态、相对、绝对和固定定位。`position`属性(如`position:relative`、`position:...

    CSS-float详解.pdf

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

    CSS文档 CSS2.0.chm

    此外,浮动(`float`)和清除(`clear`)也是布局中的关键工具。 5. **文本样式**:CSS2.0提供了丰富的文本属性,如`font`(字体家族)、`color`(颜色)、`text-align`(文本对齐)、`line-height`(行高)和`text...

    CSS帮助文档

    5. **浮动与清除**:`float`属性常用于创建多列布局,而`clear`属性则用于防止元素因浮动而产生重叠。 6. **层叠与继承**:CSS的“层叠”原则决定了不同来源和特异性的样式如何相互覆盖。同时,部分属性支持继承,...

    css属性查询手册

    5. 浮动属性:`float`(left、right、none)使元素在页面上浮动,影响周围元素的布局。 三、布局与定位 1. 流动布局:CSS 2.0中的流体布局依赖于`display`属性,如`block`和`inline`,以及`width`和`height`来创建...

Global site tag (gtag.js) - Google Analytics