重点:大家都知道relative是相对定位,absolute是绝对定位,他们的单一用法我们非常熟悉,但是,怎样让某个元素在他的父级块中决对定位呢,答案就是relative+absolute。absolute在某些情况下也不是绝对的,比如在父级通过相对定位的情况下,子级绝对定位的元素不再是相对body定位了。读一下absolute的官方解释:
absolute | 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。 元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。 |
fixed | 生成绝对定位的元素,相对于浏览器窗口进行定位。 元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。 |
relative | 生成相对定位的元素,相对于其正常位置进行定位。 因此,"left:20" 会向元素的 LEFT 位置添加 20 像素。 |
static | 默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。 |
inherit | 规定应该从父元素继承 position 属性的值。 |
所以现在就明白了由于在父级中出现了relative,子级相对于relative出现的那一级定位,而不再是默认值浏览器窗口了,下面是一个简单demo(图片可以换成自己的,打开浏览器可执行)。
<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">
.aaaa{
width: 488px;
height: 360px;
position: relative;
margin: 54px 99px;
}
.bbbb{
width: 100%;
height: 100%;
overflow: hidden;
position: absolute;
top: 0px;
left: 0;
}
.cccc{
position: absolute;
top: 0px;
left: 0px;
right: 0px;
bottom: 0px;
height: 360px;
width: 488px;
}
.dddd{
left: 50%;
top: 50%;
margin-left: -35px;
margin-top: -27.5px;
position: absolute;
cursor: pointer;
}
.eeee{
width: 35px;
height: 35px;
opacity: 0.3;
}
</style>
</head>
<body>
<div class="aaaa">
<div class="bbbb">
<img class="cccc" src="\Pictures\A.png">
</div>
<div class="dddd"><img class="eeee" src="\Pictures\B.png"></div>
</div>
</body>
</html>