css定位主要通过position属性和float属性
position属性有四个值,分别为static,relative,absolute,fixed
static是默认值,即按元素既定的规则解析排列,因为position不是继承的,所以也很少会有情况用到
relative,相对定位很容易造成误解,首先相对定位是作用元素本身的,但是如果你只设了position:relative但是没有设置left,right,top,bottom的值,那么元素本身的位置是不会变化的。但是设置relative的元素会影响到其子元素的定位,尤其当子元素使用absolute定位时。另外设置了relatvie属性的元素可以使用z-index属性,而且任何relative元素都会在static元素之上,无论是否设置了z-index。
absolute,绝对定位的元素不会参与其他元素的flow,也不会影响他们的定位,可以把绝对定位的元素想象成独立的,
fixed,固定定位,和absolute类似,但是它只相对浏览器窗口(viewport)定位,不会受父元素的局限。而且fixed的元素不会随着窗口页面滚动而滚动。但是fixed元素IE6不支持,所以需要hacker
#top{
position:fixed;
_position:absolute;
bottom:0;
right:20px;
_bottom:auto;
_top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-(parseInt(this.currentStyle.marginTop,10)||0)-(parseInt(this.currentStyle.marginBottom,10)||0)));
}
通过绝对定位来实现,但是这样在拖动浏览器的时候会出现闪动的现象,解决的方法是,添加
*html{
background-image:url(about:blank);
background-attachment:fixed;
}
这样问题就解决了。
强烈推荐读一下这个,http://www.barelyfitz.com/screencast/html-training/css/positioning/