元素的定位
1元素的定位属性
制作网页时,如果希望元素出现在某个特定的位置,就需要使用定位属性对元素进行确定位。元素的定位就是将元素放置在页面的指定位置,主要包括定位模式和边偏移两部分。
1.1定位模式
在CSS中, position属性用于定义元素的定位模式,其基本语法格式如下。
选择器{ position:属性值;}
在上面的语法中,position属性常用值有四个,分别表示不同的定位模式,具体如下表。
值 | 描述 |
static | 静态定位(默认定位方式) |
relative | 相对定位,其对于其原文档流的位置进行定位 |
absolute | 绝对定位,相对于其上一个已经定位的父元素进行定位 |
fixed | 固定定位,相对于浏览器窗口进行定位 |
从表中可以看出,定位的方法有多种,分别为静态定位( statc)、相对定位( relative)、绝对定位( absolute)及固定定位(fxed),后面将对它们进行详细讲解。
1.2边偏移
定位模式( position)仅仅用于定义元素以哪种方式定位,并不能确定元素的具体位置。在CSs中,通过边偏移属性top、 bottom、left或right来精确定义定位元素的位置,具体解释如下:
边偏移属性 | 描述 |
top | 顶端偏移量,定义元素相对于其父元素上边线的距离 |
bottom | 底部偏移量,定义元素相对于其父元素下边线的距离 |
left | 左侧偏移量,定义元素相对于其父元素左边线的距离 |
right | 右侧偏移量,定义元素相对于其父元素右边线的距离 |
从表中可以看出,边偏移可以通过top、bottom、left、right进行设置,其取值为不同单位的数值或百分比,示例如下:
position:relative; /*相对定位*/
left:50px; /*距左边线50px*/
top:10px; /*距上边线10px*/
2.静态定位 static
静态定位是元素的默认定位方式,当 position属性的取值为static时,可以将元素定位于静态位置。所谓静态位置就是各个元素在HTML文档流中默认的位置。
任何元素在默认状态下都会以静态定位来确定自己的位置,所以当没有定义 position属性时,并不说明该元素没有自己的位置,它会遵循默认值显示为静态位置。在静态定位状态下无法通过边偏移属性(top、 bottom、left或 right)来改变元素的位置。
3 相对定位relative
相对定位是将元素相对于它在标准文档流中的位置进行定位,当 position属性的取值为relative时,可以将元素定位于相对位置。对元素设置相对定位后,可以通过边偏移属性改变元素的位置,但是它在文档流中的位置仍然保留。
下面演示一个例子:
效果:
4 绝对定位 absolute
绝对定位是将元素依据最近的已经定位(绝对、固定或相对定位)的父元素进行定位,若所有父元素都没有定位,则依据body根元素(浏览器窗口)进行定位。当 position属性的取值为 absolute时,可以将元素的定位模式设置为绝对定位。
下面在上例的基础上,将 child-02的定位模式设置为绝对定位,即将.child02代码更改如下。
效果图:
在图中,设置为绝对定位的元素 child02,依据浏览器窗口进行定位。并且,这时child03占据了 child02的位置,即 child2脱离了标准文档流的控制,不再占据标准文档流中的空间。
在上面的案例中,对 child02设置了绝对定位,当浏览器窗口放大或缩小时, child02相对于其直接父元素的位置都将发生变化。当缩小浏览器窗口时,页面将呈现下图所示效果:
很明显 child02相对于其直接父元素的位置发生了变化。
然而在网页中,一般需要子元素相对于其直接父元素的位置保持不变,即子元素依据其直接父元素绝对定位,如果直接父元素不需要定位,该怎么办呢?
对于上述情况,可将直接父元素设置为相对定位,但不对其设置偏移量,然后再对子元素应用绝对定位,并通过偏移属性对其进行精确定位。这样父元素既不会失去其空间,同时还能保证子元素依据直接父元素准确定位。
下面通过一个案例来演示子元素依据其直接父元素准确定位的方法:
效果图:
注意:
(1)如果仅设置绝对定位,不设置边偏移,则元素的位置不变,但其不再占用标准文档流中的空间,与上移的后续元素重叠。
(2)定义多个边偏移属性时,如果left和 right冲突,以left为准,top和bottom冲突,以top为准
5 固定定位
元素的位置相对于浏览器窗口是固定位置。即使窗口是滚动的它也不会移动。
注意:
Fixed 定位在 IE7 和 IE8 下需要描述 !DOCTYPE 才能支持。
Fixed定位使元素的位置与文档流无关,因此不占据空间。
Fixed定位的元素和其他元素重叠。
6 z-index 层叠等级属性
z-index 属性设置元素的堆叠顺序。拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面。
注意:Z-index 仅能在定位元素上奏效(例如 position:absolute;)!
效果图: