【发布时间】:2018-06-02 01:49:15
【问题描述】:
我有以下代码:
.container {
position: relative;
}
.topleft {
position: absolute;
top: 8px;
left: 16px;
font-size: 18px;
}
img {
width: 100%;
height: auto;
opacity: 0.3;
}
<h2>Image Text</h2>
<p>Add some text to an image in the top left corner:</p>
<div class="container">
<img src="https://www.w3schools.com/css/trolltunga.jpg" alt="Norway" width="1000" height="300">
<div class="topleft">Top Left</div>
</div>
这是从 w3 学校复制的。运行此代码时,IMAGE 的左上角出现文本“左上角”。
我需要了解原因。
在这种情况下,容器类的 div 定义为相对位置。
但是具有 Topleft 类的 Div 不在 IMG 中。它在容器类的 div 内。
为什么 TOP LEFT 文本位于图像内部而不是容器 Div。 img 不是 TopLeft Div 的最近定位祖先。
========================================
感谢 cmets。我认为这种行为的核心原因是以下事实:
绝对定位元素从正常流程中移除,并且可以与元素重叠。
【问题讨论】:
-
左上角不在图像的左上角。它在容器的左上角
-
image 和 topLeft 元素都是容器 div 的子元素。 topLeft div 只是使用绝对定位来坐在图像上方。
-
啊!这就是诀窍。所以这样我们就不需要 z-index:-1 并获得重叠?
-
很好的答案。谢谢大家!