Jquery中文网 www.jquerycn.cn
Jquery中文网 >  CSS教程  >  经典实例  >  正文 css中position相对定位和绝对定位(relative,absolute)详解

css中position相对定位和绝对定位(relative,absolute)详解

发布时间:2020-05-09   编辑:www.jquerycn.cn
jquery中文网为您提供css中position相对定位和绝对定位(relative,absolute)详解等资源,欢迎您收藏本站,我们将为您提供最新的css中position相对定位和绝对定位(relative,absolute)详解资源
在css中我们用到css定位分为相对定位和绝对定位,它们定义方法是position:relative与position:absolute来控制div位置,下面小编来给大家介绍一下它们之间的关系与用法吧。

在CSS中有这样的一个指令:(position)

在DW中文版中翻译为“定位”,常用的属性有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的左上侧!


一个具体的例子:

场景:根据父级节点来确定当前节点的位置

首先,设置父级节点的位置为:position:relative;

然后,设置当前节点的位置为:position:absolute;

最后,调整当前节点相对接点的位置:如bottom:1px;left:3px;

父级节点为:div1

当前子节点为:div2

需求:div2定位在左下角的位置

 代码如下 复制代码

html代码:<div id="div1"><div id="div2"></div></div>

css代码:

#div1 {
position:relative;
}
#div2 {
position:absolute;
bottom:1px;
left:3px;
}

relative

层级关系为:
<div ——————————— position:relative; 不是最近的祖先定位元素,不是参照物
<div—————————-没有设置为定位元素,不是参照物
<div———————- position:relative 参照物
<div box1
<div box2 ——–position:absolute; top:50px; left:120px;
<div box3
效果图:

为改变参照物(橘色框)后的效果
层级关系为:
<div ——————————— position:relative;最近的祖先定位元素,参照物
<div—————————-没有设置为定位元素,不是参照物
<div———————-没有设置为定位元素,不是参照物
<div box1
<div box2 ——–position:absolute; top:50px; left:120px;
<div box3
效果图:

参照物为最顶级的元素情况
层级关系为:
<div ———————————没有设置为定位元素,不是参照物
<div—————————-没有设置为定位元素,不是参照物
<div———————-没有设置为定位元素,不是参照物
<div box1
<div box2 ——–position:absolute; top:50px; left:120px;
<div box3
效果图:

 

仅使用margin属性布局绝对定位元素的情况
此情况,margin-bottom 和margin-right的值不再对文档流中的元素产生影响,因为该元素已经脱离了文档流。另外,不管它的祖先元素有没有定位,都是以文档流中原来所在的位置上偏移参照物。 
图9中,使用margin属性布局相对定位元素。
层级关系为:
<div ——————————— position:relative; 不是参照物
<div—————————-没有设置为定位元素,不是参照物
<div———————-没有设置为定位元素,不是参照物
<div box1
<div box2 ——–position:absolute; margin-top:50px; margin-left:120px;
<div box3
效果图:

IE6的情况下,box2前面没有兄弟节点,则margin-left的值会出现双倍边距,见图10。
层级关系为:
<div ——————————— position:relative; 不是参照物
<div—————————-没有设置为定位元素,不是参照物
<div———————-没有设置为定位元素,不是参照物
<div box1
<div box2 ——–position:absolute; margin-top:50px; margin-left:60px;
<div box3
效果图:

您可能感兴趣的文章:
Jquery中的offset()和position()深入剖析
jquery获取div距离窗口和父级dv的距离示例
基于jQuery的图片剪切插件
详解CSS定位position及应用场景实例
jQuery 打造动态下滑菜单实现说明
jquery 图片Silhouette Fadeins渐显效果
基于jQuery的图片大小自动适应实现代码
JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
javascript特效-跟着鼠标飞的图片
锋利的jQuery 要点归纳(二) jQuery中的DOM操作(下)

[关闭]