css关于position属性的用法详解(绝对定位和相对定位的混淆)

挺久没用,有点忘了关于position这个属性的用法,导致在练手的时候又犯了跟最开始新手才会犯的错误,那就是absolute和relative的用法。

在此首先看一下官方对这两个属性值的解释:

position 属性值的含义:

static

元素框正常生成。块级元素生成一个矩形框,作为文档流的一部分,行内元素则会创建一个或多个行框,置于其父元素中。

relative

元素框偏移某个距离。元素仍保持其未定位前的形状,它原本所占的空间仍保留。

absolute

元素框从文档流完全删除,并相对于其包含块定位。包含块可能是文档中的另一个元素或者是初始包含块。元素原先在正常文档流中所占的空间会关闭,就好像元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。

fixed

元素框的表现类似于将 position 设置为 absolute,不过其包含块是视窗本身。

事实上默认的static和fixed这两种情况是比较容易辨别的,而容易混淆的是relative和absolute。

用更简单的说法就是absolute是将原本在文档流中所占的位置去掉,并以第一个非static定位的父元素进行定位,一般这样我们都会用top,left等来控制位置,这就是绝对定位。

而relative这种定位方式则是,在原有的文档流位置(也就是未设置POSITION属性的时候的位置)基础上移动。

所以当我们一般需要让某些元素随父元素移动而不会因为浏览器窗口大小变动而变形时,一般我们会把父元素定义为relative,而子元素定义为absolute,也就是说absolute是以第一个非static定位的父元素作为参考对象。

而一般我们会让内容居中,让margin:0 AUTO;就好了。

至于top和margin-top的区别,有些人可能分不清什么时候用,经常会用margin-top来实现定位,事实上这种做法是错误的,margin它是外边距,是占内容的,往往用这个来勉强实现定位都会使其他元素位置改变或导致其他效果,而这个效果并非我们想要的。

所以要认清absolute和relative的区别和用法,加上TOP LEFT RIGHT BOTTOM来定位就可以减少错误了。

顺带一提,CSS3之后多了挺多新属性的,自己还没一个个看,暂时记一下,background-size:cover;这个是本身就有还是后来才有的?我用DW8的时候并没有这个属性提示;

另外CSS3有很多属性IE是不能支持的,即使有那也是9甚至10以上才能兼容,所以在写的时候要注意浏览器的判断,根据不同浏览器设计不同的样式

<!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]-->
<!--[if IE]> 所有的IE可识别 <![endif]-->
<!--[if IE 6]> 仅IE6可识别 <![endif]-->
<!--[if lt IE 6]> IE6以及IE6以下版本可识别 <![endif]-->
<!--[if gte IE 6]> IE6以及IE6以上版本可识别 <![endif]-->
<!--[if IE 7]> 仅IE7可识别 <![endif]-->
<!--[if lt IE 7]> IE7以及IE7以下版本可识别 <![endif]-->
<!--[if gte IE 7]> IE7以及IE7以上版本可识别 <![endif]-->
<!--[if IE 8]> 仅IE8可识别 <![endif]-->
<!--[if IE 9]> 仅IE9可识别 <![endif]-->

以上这篇css关于position属性的用法详解(绝对定位和相对定位的混淆)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

css关于position属性的用法详解(绝对定位和相对定位的混淆)