之前并没有在意position的使用,在此专门花时间总结了一下它的用法。
何谓position
position属性定义建立元素布局所用的定位机制。值得一提的是,任何元素都可以定位,不过绝对或固定元素能生成一个块级框,而不论该元素本身是什么类型。
目前,所有主流浏览器都支持position属性,以下是浏览器对position属性兼容性的概况图:
注:任何版本的IE浏览器(包括IE8)都不支持属性值"inherit“。
position的基本概况
首先,除去"inherit"属性(规定应该从父元素继承position值),position共有四个属性值:static、relative、absolute、fixed
static属性值
position的默认属性值,即对元素布局不做任何的修饰,元素在正常流中显示(忽略top、bottom、left、right或者z-index声明)。
relative属性值
进行相对定位,相对于该元素的包含块(用在这里不够贴切,或者说relative用包含块来解释未免有点多次一举,所以这一句可以忽略对于relative)进行定位,即相对于其正常位置进行定位。元素的位置通过"top"、”bottom“、"left"、"right"来进行定位。
注:包含块,浅显来讲,我们可以打个比方,假设该元素是棋子,那么包含块就是该棋子的棋盘,棋子的定位就是相对棋盘的定位,关键是棋盘在哪?哪个棋盘是属于我的?我要怎样区分判断出棋盘?总的来说,落子很简单,关键我棋盘在哪。(关于包含块的详细用法规范,可以看下我收藏的一篇文章:http://blog.csdn.net/yaodebian/article/details/73826809)
absolute属性值
相对于static定位以外的第一个父元素进行定位,就是说,向上搜寻第一个position属性值不为"static"的父元素,并以该父元素构建的包含块为参照物进行定位,即相对该父元素进行定位,该父元素就是该元素的包含块。元素的位置通过"top"、”bottom“、"left"、"right"来进行定位。注:有一个特例,就是说我没有找到这样一个父元素,这种情况下,该元素的包含块就是根元素,这个我们等会在详细解释。
Fixed属性值
相对于浏览器窗口定位,也就是始终以窗口的左上角为参照进行定位,即不会因为滚动条的移动而移动,始终相对窗口定位。元素的位置通过”top“、"bottom"、"left"、"right"来进行定位。
position的应用实例
1.relative属性值应用实例
首先,值得一提的是,一个设置position值为“relative”的元素其所占有的空间是不会改变的。
怎么说呢,我们简单地给出一个小测试:(代码如下)
结果如下:
div1
div2
结果和上面没有设置浮动时一样的,这就要注意一下了,因为浮动元素一般会覆盖掉非浮动元素。
position-absolute相对点
结果如下:
position-absolute相对点
结果如图:
但无论你怎样移动滚动条,其相对窗口左上角的位置一直都不变。
这里总结的都是position基础概念用法规范,但其用法绝不仅如此,HTML5、css虽看起来简单易懂,但其门路决不仅如此,灵活运用它们将开启一个不一样的世界,这就是我目前所认识到的,绝不仅限于学习语法,还要灵活运用这些简单的语法达到不一样的效果。