在 CSS 中,用 float 和 position 的区别是什么?

loat和position这两者并没有孰好孰不好的问题,两者按需使用,各得所需的效果。
float从字面上的意思就是浮动,这种在印刷排版之类中可能解释的更加贴切。float能让元素从文档流中抽出,它并不占文档流的空间,典型的就是图文混排中文字环绕图片的效果了。并且float这也是目前使用最多的网页布局方式。不过需要注意的是清除浮动是你可能需要注意的地方。并且如果你要考虑到古老的IE6之类的还会有一些bug诸如双边距等等问题。
而position顾名思义就是定位。他有以下这几种属性:static(默认),relative(相对定位),absolute(绝对定位)和fixed(固定定位)。其中static和relative会占据文档流空间,他们并不是脱离文档的。absolute和fixed是脱离文档流的,不会占据文档流空间。

比较可以发现,float和position最大的区别其实是是否占据文档流空间的问题。虽然position有absolute和fixed这两个同样不会占据文档流的属性,但是这两个并不适合被用来给整个网页做布局。为什么?因为这样你就得为页面上的每一个元素设置一个xy坐标来定位。

float布局就显得灵活多了。但是一些特殊的地方搭配relative和absolute布局可以实现更好的效果。因为absolute是基于父级元素的定位,当父级元素是relative的时候,absolute的元素就会是基于它的定位了。比如你可以让一个按钮始终显示在一个元素的右下角。

如果说到性能问题reflow问题,将元素的position设置为absolute和fixed可以使元素从DOM树结构中脱离出来独立的存在,而浏览器在需要渲染时只需要渲染该元素以及位于该元素下方的元素,从而在某种程度上缩短浏览器渲染时间。所以如果是制作js动画等,用absolute或者fixed定位会更好。

说得不好的地方请大家补充。总结一句就是不推荐用position来布局整个页面的大框架,而推荐用float或者文档流的默认方式。

作者:李锦
链接:https://www.zhihu.com/question/19588854/answer/12309368
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

共同点:对内联元素设置float或absolute属性,可以让元素脱离文档流(块级元素也可以),并且可以设置其宽高。

不同点:
float仍会占据其位置,position会覆盖文档流中的其他元素。

时间: 2024-10-08 11:50:50

在 CSS 中,用 float 和 position 的区别是什么?的相关文章

[译] 关于CSS中的float和position

原文 http://learn.shayhowe.com/advanced-html-css/detailed-css-positioning 当构建页面排版时,有不同的方法可以使用.使用哪一种方法取决于具体页面的排版要求,在不同的情况下,某些方法可能好过于其他的方法. 比如,可以使用若干个浮动元素来构建一个整洁简洁的页面排版.或者,如果需要更复杂的排版要求,可以考略使用其他方法,比如使用相对定位和绝对定位. 在这篇文章中,我们首先要讨论元素浮动:然后,我们要讨论如何使用x,y和z轴控制元素的位

关于CSS中的float和position

postion:relative是子块级元素面向父级元素的相对定位,定位关键字使用left/right/top/bottom.兄弟块元素之间相对进行定位,但是position移动后,原位置依然保留.而且随后的兄弟块元素定位基于被移走前的位置. float:right/left是子块级元素流集合面向父级元素的定位,定位的关键词使用margin/padding.兄弟块元素之间进行相对的定位均基于移动后的新位置进行重新渲染,可以重叠,原位置被清空. 二者之中最大的差别就是位置保留. float定位:

CSS中盒子模型和position(一)

今天遇到几个css中的重要的知识点,记得这些都是以前看过的:margin.padding.border和position.可是用起来还是有很多的问题,以前自己看过去总是懒得记录,等到用起来了都不知道自己记忆中的那些是在那里看到的,找起来特别的麻烦,还是老老实实的写博客写下来吧!本着既然打算写成博客就费点时间写点自己觉得有质量的,要不对不起看我博客的人更对不起自己,有些事情还是要告诉自己,不能急得花点时间,就像学这些技术.踏踏实实一点一点积累,还是要舍得花时间. 本人大四即将毕业生一枚,总是觉得有

css中的“float: right”出现靠右换行的现象

在网页制作过程中,经常会碰到使用css中的“float: right”出现靠右换行的现象 现将我在使用过程中的一点小技巧分享给大家. 1.float: right的使用用法:使用html代码<span style="float: right">*****</SPAN>,其中*****就是你想靠右的内容,比如一个日期:{date1},如果想让此元素靠右,则应该写:<span style="float:right">{date1}&l

CSS 中,用 float 和 position 的区别是什么?

呃,其实这个命题有误,只有position才是定位,float不能说是定位,不过你可以说这两种布局方式有什么不同.float和position这两者并没有孰好孰不好的问题,两者按需使用,各得所需的效果.float从字面上的意思就是浮动,这种在印刷排版之类中可能解释的更加贴切.float能让元素从文档流中抽出,它并不占文档流的空间,典型的就是图文混排中文字环绕图片的效果了.并且float这也是目前使用最多的网页布局方式.不过需要注意的是清除浮动是你可能需要注意的地方.并且如果你要考虑到古老的IE6

Day50:CSS属性(float、position)

一.float属性 1.基本属性 先来了解一下block元素和inline元素在文档流中的排列方式. block元素通常被现实为独立的一块,独占一行,多个block元素会各自新起一行,默认block元素宽度自动填满其父元素宽度.block元素可以设置width.height.margin.padding属性: inline元素不会独占一行,多个相邻的行内元素会排列在同一行里,直到一行排列不下,才会新换一行,其宽度随元素的内容而变化.inline元素设置width.height属性无效 常见的块级

css中的定位属性position

同样的也是上课的时候发现学生难以理解的一些问题拿出来记录一下,希望帮助初学者. 在css中定位属性position的运用在页面中是很常用的,特别是一些结合js来实现的一些特效经常会用到定位属性,比如鼠标滑过显示被隐藏的盒子, banner的切换,还有之前写的jquery实现京东商品分类导航的类似这样的布局也是要结合定位属性来实现,但是上一次着重只写了jquery. 那么这次我想将定位属性的运用拿来说一下. 定位属性position常用的取值:relative/absolute/fixed;一般配

CSS中的float属性

在上一节中提到过行内块元素(inline-block),display设置为inline-block后, 元素可以设置宽度和高度,又能以行内形式显示,即水平排列,而不是像块级元素一样 从上到下排列.这一点很好地解决了页面的布局问题.      inline-block不是唯一,还有一个float浮动属性也能够到达类似的效果.float分为左浮left和右浮right,会让元素脱离文档流,且子级浮动会导致父级高度 塌陷(父级可使用overflow:hidden属性恢复自身高度).下面举例说明flo

CSS中display/float/position属性值的相互影响

有3个属性和布局以及box的创建有关:'display', 'position' 和 'float',彼此交互作用如下: 如果'display'值为'none',则'position' 和 'float'无作用.这种情况下,不生成box.否则,如果'position'值为'absolute' 或 'fixed', box被绝对定位,'float'的计算值为'none',而'display'的值按下表设定.box的位置将由'top', 'right', 'bottom' 和 'left' 属性及其