CSS布局浮动和定位属性的区别
推荐于2018-03-15
值 描述
absolute 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。
元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。
fixed 生成绝对定位的元素,相对于浏览器窗口进行定位。
元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。
relative 生成相对定位的元素,相对于其正常位置进行定位。
因此,"left:20" 会向元素的 LEFT 位置添加 20 像素。
static 默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)虚拦。
inherit 规定应该从父元素继承 position 属性的值
==========================
浮动:float:
float 属性定义元素在哪个方向浮动。以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。
如果浮动非替换元素,则要指定一个明确的宽度;否则,它们会尽可能地窄。
注释:假如在一行之上只有极少的空间可供浮动元素,那么这个元素会跳至下一行,这个过程会持续到某一行拥有足够的空间为止。
值 描述
left 元素向左浮动。
right 元素向右浮动。
none 默认值。元素不浮动,差斗胡并会显示在其在文本中出现的位置。
inherit 规定应该从父元素继承 float 属性的值。
====================
postion:relative是子块级元素面向父级元素的相对定位,定位关键字使用left/right/top/bottom。兄弟块元素之间相对进行定位,但是position移动后,原位置依然保留。而且随后的兄弟块元素定位基于被移走前的位置。
float:right/left是子块级元素流集合面向父级元素的定位,定位的关键词使用margin/padding。兄弟块元素之间进行相对的定位均基于移动后的新位置进行重新渲染,可以重叠,原位置被清空。
二者之中最大的差别就是位置保留。
再简而言之,float只是行内的 左右的改变,如果后面的元素不清楚浮动clear:both的话 会影响后面元素的位置,而positon定位的影响比较广,既能定义个容器的定位也能定义一个容器里的任意定位,而不是像float一样处于一个平面级的,它是可认识改变的。尤其是position:absolute;和fixed2个都是固定任意位置,一个不随页面滚动而改变原来位置,一个随页面滚动而改变但相对位置不改变。销芦
position: absolute|relative; 要配合top,left等定位;
使用:
position: absolute会导致元素脱离文档流,被定位的元素等于在文档中不占据任何位置,在另一个层呈现,可以设置z-index。PS的图层效果就是position: absolute。裂团
float也会导致元素脱离文档流,但还在文档或容器中占据位置,把文档流和其它float元素向左或向右挤,并可能导致换行。图片的文字肆卜橘环绕布局效果就是float。
display的inline-block不脱离文档流,将block元素当作大型字符嵌入文档流内,类似于弊埋img或者input默认效果。
浮动属性 float 一般使用两个值,即 float:left; 或 float:right。用于指定子元素在父级元素中的位置,顾名思义:左或者右扒羡。比如:
HTML
<html>
<style>
#demo {width:1000px;height:500px;margin:0 auto;}
#left{width:400px;height:300px;float:left;background-color:#red;}
#right{width:350px;height:200px;float:right;background-color:#green;}
</style>
<div id="demo">
<div 裤液id="left">
<div id="right">
</div>
</html>
请您将代码复制粘贴到HTML文件自己观察,把 float:left 或 float:right 的left和right互换会怎么样,都是left或都是right会怎么样。
具体请参考 浮动 http://www.w3school.com.cn/css/css_positioning_floating.asp
定位属性 position 一般也是使用两个值,即相对定位 relative 和绝对定位 absolute.
相对定位相对上一级元素而言,可根据上级元素的位置做出位置偏移。如:
<html>
<style>
#demo {width:1000px;height:500px;margin:0 auto;}
#left{width:400px;height:300px;position:relative;top:50px;left:50px;background-color:#red;}
#right{width:350px;height:200px;position:relative;bottom:150px;right:50px;background-color:#green;}
</style>
<div id="demo">
<div id="left">
胡此物 <div id="right">
</div>
</html>
代码中 top:50px;left:50px和bottom:150px;right:50px
分别指left元素距离demo元素的上边距、左边距各50px做位置便宜;
right元素距离demo元素的下边距150px,右边距50px做位置偏移。
至于绝对定位,您只需要将以上代码修改一下就可以知道区别了。
<html>
<style>
#demo {width:1000px;height:500px;margin:0 auto;position:relative;}
#left{width:400px;height:300px;position:absolute;top:50px;left:50px;background-color:#red;}
#right{width:350px;height:200px;position:absolute;bottom:150px;right:50px;background-color:#green;}
</style>
<div id="demo">
<div id="left">
<div id="right">
</div>
</html>
资料可参考 CSS定位 http://www.w3school.com.cn/css/css_positioning.asp
因为人的表述能力有限,希望您能自己动手,发现其中的奥妙。
float可以让元素浮动到左右位置或者继承父级,浮动之后不会占有高度
position就稍微复杂点了,可以参看http://www.runoob.com/css/css-positioning.html