`

绝对定位相对定位的相关文章

阅读更多
关于网页中绝对定位及相对定位的问题始终不太明白,现从网上查到一些相关文章做以收藏!

动态网站制作指南---------------
在CSS中有这样的一个指令:(position),在DreamWeaver中文版中翻译为“定位”,常用的属性有两个:relative(相对)与 absolute(绝对)。有很多朋友对这条指令的用法还是不清楚,这里做一些细致的讲解。
  position:relative; 表示相对定位,被定位了这个属性的标签在所属的范围内可以进行上下左右的移,这里的移动与padding或是margin所产生的位置变化是不一样的。padding与margin是元素本身的一种边距与填充距离并不是真正的移动,而被定义为relative的元素是真正的移动,这所产生的移动距离是从margin的外围到父级标签内侧之间这一段。

  position:absolute; 表示绝对定位,如果定义了这个属性的元素,其位置将依据浏览器左上角的0点开始计算,并且是浮动正常元素之上的。那么当你需要某个元素定位在浏览器内容区的某个地方就可以用到这个属性。

  于是产生了一个问题:现在大家做的网页大部分是居中的,如果我需要这个元素跟着网页中的某个元素位置,不论屏幕的分辨率是多少它的位置始终是针对页内的某个元素的,靠单纯的absolute是不行的。

  正确的解决方法是:在元素的父级元素定义为position:relative;(这里可以是祖父级,也可以是position:absolute;,多谢谢old9的提出)需要绝对定位的元素设为position:absolute;

  这样再设定top,right,bottom,left的值就可以了,这样其定位的参照标准就是父级的左上角padding的左上侧。

很能说明问题的一段实例---------------------------------
<style>
body
{margin: 30px; font-size:9pt;}

.a, .b, .c, .d, .e
{
   width: 100px;
   height: 100px;
   margin: 5 auto;
   color: #fff;
   background: #000;
}
.aa, .bb, .cc, .dd, .ee
{
   top: 10px;
   left: 10px;
   width: 10px;
   height: 10px;
   overflow: hidden;
   background: #F90;
}
.b, .d, .e
{position: relative;}
.cc, .dd, .ee
{position: absolute;}
</style>

<div class="a">
   <div class="aa"></div>
   A:均不设置postion,一般嵌套关系
</div>

<div class="b">
   <div class="bb"></div>
   B:仅外div设置relative,一般嵌套关系
</div>

<div class="c">
   <div class="cc"></div>
   C:仅内div设置absolute,文档中为嵌套关系,页面中内div浮起[非float],相对于页面定位,与外div无关。
</div>

<div class="d" style="background:#ff0000">
   <div class="dd" ></div>
   D:外div设置relative,内div设置absolute,内div浮起来并相对于外div定位
</div>


<div class="d" style="background:#ff0000">
   <div class="dd" style="position:relative"></div>
   D:外div设置relative,内div设置relative,内div浮起来并相对于外div定位
</div>

<div class="e">
   <div class="ee" style="left: -10px;"></div>
   E:这个是说明边界问题。-10 != 反向10px间距
</div>

注意两个红色的地方文字,其中,绝对定位在嵌套中,好象要站居一定位置,而相对定位则没有   
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics