Answers:
好的,过了一段时间,这就是我的目标:
.parent {
position: relative;
top: 0;
left: 0;
}
.image1 {
position: relative;
top: 0;
left: 0;
border: 1px red solid;
}
.image2 {
position: absolute;
top: 30px;
left: 30px;
border: 1px green solid;
}
<div class="parent">
<img class="image1" src="https://placehold.it/50" />
<img class="image2" src="https://placehold.it/100" />
</div>
作为最简单的解决方案。那是:
创建一个放置在页面流中的相对div;首先将基础图像作为相对图像放置,以便div知道应该有多大;将叠加层相对于第一张图片的左上角作为绝对值放置。诀窍是让亲戚和绝对人正确。
以下代码可能会给您一些想法:
<style>
.containerdiv { float: left; position: relative; }
.cornerimage { position: absolute; top: 0; right: 0; }
</style>
<div class="containerdiv">
<img border="0" src="https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png" alt=""">
<img class="cornerimage" border="0" src="http://www.gravatar.com/avatar/" alt="">
<div>
我怀疑Espo的解决方案可能不方便,因为它要求您绝对放置两个图像。您可能希望第一个在流程中定位自己。
通常,CSS是一种自然的方法。您将position:relative放置在容器元素上,然后将子元素绝对放置在其中。不幸的是,您不能将一个图像放入另一个图像。这就是为什么我需要容器div的原因。注意,我使它成为浮动对象以使其自动适应其内容。使其显示:从理论上讲,内联块也应该可以工作,但是那里的浏览器支持很差。
编辑:我从图像中删除了大小属性,以更好地说明我的观点。如果要使容器图像具有默认大小,并且事先不知道大小,则不能使用背景技巧。如果这样做,这是一个更好的方法。
您可以pseudo elements
相对于其父元素绝对定位。
这样,您就可以为每个元素增加两个额外的图层-因此将一个图像放置在另一个图像上变得很容易-且具有最少的语义标记(没有空的div等)。
标记:
<div class="overlap"></div>
CSS:
.overlap
{
width: 100px;
height: 100px;
position: relative;
background-color: blue;
}
.overlap:after
{
content: '';
position: absolute;
width: 20px;
height: 20px;
top: 5px;
left: 5px;
background-color: red;
}
这是现场演示
内联样式仅是为了此处清晰。使用真实的CSS样式表。
<!-- First, your background image is a DIV with a background
image style applied, not a IMG tag. -->
<div style="background-image:url(YourBackgroundImage);">
<!-- Second, create a placeholder div to assist in positioning
the other images. This is relative to the background div. -->
<div style="position: relative; left: 0; top: 0;">
<!-- Now you can place your IMG tags, and position them relative
to the container we just made -->
<img src="YourForegroundImage" style="position: relative; top: 0; left: 0;"/>
</div>
</div>
可能有些晚了,但是您可以这样做:
的HTML
<!-- html -->
<div class="images-wrapper">
<img src="images/1" alt="image 1" />
<img src="images/2" alt="image 2" />
<img src="images/3" alt="image 3" />
<img src="images/4" alt="image 4" />
</div>
萨斯
// In _extra.scss
$maxImagesNumber: 5;
.images-wrapper {
img {
position: absolute;
padding: 5px;
border: solid black 1px;
}
@for $i from $maxImagesNumber through 1 {
:nth-child(#{ $i }) {
z-index: #{ $maxImagesNumber - ($i - 1) };
left: #{ ($i - 1) * 30 }px;
}
}
}
@ buti-oxa:不必脚,但您的代码无效。HTML width
和height
属性不允许使用单位。您可能会想到CSS width:
和height:
属性。您还应该提供text/css
带有<style>
标签的content-type(;请参见Espo的代码)。
<style type="text/css">
.containerdiv { float: left; position: relative; }
.cornerimage { position: absolute; top: 0; right: 0; }
</style>
<div class="containerdiv">
<img border="0" src="http://www.gravatar.com/avatar/" alt="" width="100" height="100">
<img class="cornerimage" border="0" src="http://www.gravatar.com/avatar/" alt="" width="40" height="40">
<div>
离开px;
中width
和height
属性可能导致的渲染引擎在所不惜。