absolute意思为绝对的,relative意为相对的。然而其用法与我们平常所想的有所不同。
大多数人可能会觉得absolute绝对定位是根据浏览器窗口定位,实则不是。absolute定位是相对于父元素的绝对定位,且父元素必须有position:absolute或者position:relative,若其父元素没有,则逐层网上寻找,直至浏览器窗口
relative相对定位是相对于当前位置定位,即相对于自己定位。
<html>
<head>
<style type="text/css">
h2.pos_left
{
position:relative;
left:-20px
}
h2.pos_right
{
position:relative;
left:20px
}
</style>
</head>
<body>
<h2>这是位于正常位置的标题</h2>
<h2 class="pos_left">这个标题相对于其正常位置向左移动</h2>
<h2 class="pos_right">这个标题相对于其正常位置向右移动</h2>
<p>相对定位会按照元素的原始位置对该元素进行移动。</p>
<p>样式 "left:-20px" 从元素的原始左侧位置减去 20 像素。</p>
<p>样式 "left:20px" 向元素的原始左侧位置增加 20 像素。</p>
</body>
</html>
以上代码执行结果如下:
在使用绝对定位时,除了该元素使用position:absolute之外,一般在其上一级父元素上使用position:relative,而不在最外层的元素(例如div)上应用,这是相对定位的最小化原则,避免最外层元素因位置变动而影响整个页面布局。
参考张鑫旭老师的文章,推荐如下定位:
absolute+margin
(左上角元素定位,作用于当前元素)、float+relative
(右上角元素定位,作用于当前元素)和relative+absolute
(右下角元素定位,直接父标签+当前定位元素)