Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在HTML中将一个图像放置在另一个图像之上?_Html_Css_Optimization_Graphics - Fatal编程技术网

如何在HTML中将一个图像放置在另一个图像之上?

如何在HTML中将一个图像放置在另一个图像之上?,html,css,optimization,graphics,Html,Css,Optimization,Graphics,我是rails编程的初学者,尝试在一个页面上显示许多图像。有些图像要放在其他图像之上。简单地说,假设我想要一个蓝色的正方形,在蓝色正方形的右上角有一个红色的正方形(但在角落里不是很紧)。由于性能问题,我试图避免合成(使用ImageMagick和类似的工具) 我只想定位重叠的图像相对彼此 作为一个更难的例子,想象一个里程表放置在一个更大的图像中。对于六个数字,我需要合成一百万个不同的图像,或者全部在运行中完成,所需的只是将六个图像放在另一个图像的顶部。简单的方法是使用背景图像,然后在该元素中添加一

我是rails编程的初学者,尝试在一个页面上显示许多图像。有些图像要放在其他图像之上。简单地说,假设我想要一个蓝色的正方形,在蓝色正方形的右上角有一个红色的正方形(但在角落里不是很紧)。由于性能问题,我试图避免合成(使用ImageMagick和类似的工具)

我只想定位重叠的图像相对彼此


作为一个更难的例子,想象一个里程表放置在一个更大的图像中。对于六个数字,我需要合成一百万个不同的图像,或者全部在运行中完成,所需的只是将六个图像放在另一个图像的顶部。

简单的方法是使用背景图像,然后在该元素中添加一个


另一种方法是使用css层。有大量的资源可以帮助您完成这项工作,只需搜索。

这是我为使一幅图像漂浮在另一幅图像上所做的简单介绍

img{
位置:绝对位置;
顶部:25px;
左:25px;
}
.imgA1{
z指数:1;
}
.imgB1{
z指数:3;
}

以下代码可能会给你一些想法:

<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>

.containerdiv{浮动:左;位置:相对;}
.cornerimage{位置:绝对;顶部:0;右侧:0;}

我怀疑这可能不方便,因为它要求您绝对定位两个图像。您可能希望第一个在流中定位自己

通常,有一种自然的方法就是CSS。在容器元素上放置position:relative,然后绝对地将子元素放置在其中。不幸的是,您不能将一个图像放入另一个图像中。这就是我需要container div的原因。请注意,我将其设置为float以使其自动适应其内容。显示:内联块理论上也可以工作,但浏览器支持很差


编辑:我从图像中删除了大小属性,以便更好地说明我的观点。如果希望容器图像具有其默认大小,但事先不知道大小,则不能使用。如果你这样做了,这是一个更好的方法

内联样式仅为清晰起见。使用真正的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>

@buti-oxa:不要太迂腐,但你的代码是无效的。HTML
width
height
属性不允许单位;您可能会想到CSS
宽度:
高度:
属性。您还应该提供带有
标记的内容类型(
text/css
;参见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>

.containerdiv{浮动:左;位置:相对;}
.cornerimage{位置:绝对;顶部:0;右侧:0;}

离开
px宽度
高度
属性中的code>可能会导致渲染引擎停止运行。

好的,过了一段时间,我看到了以下内容:

.parent{
位置:相对位置;
排名:0;
左:0;
}
.image1{
位置:相对位置;
排名:0;
左:0;
边框:1px红色实心;
}
.image2{
位置:绝对位置;
顶部:30px;
左:30px;
边框:1px绿色实心;
}

我注意到可能导致错误的一个问题是,在rrichter的回答中,代码如下:

<img src="b.jpg" style="position: absolute; top: 30; left: 70;"/>

应包括样式eg中的px单元

<img src="b.jpg" style="position: absolute; top: 30px; left: 70px;"/>


除此之外,答案很好。谢谢。

您完全可以相对于父元素定位
伪元素

这为每个元素提供了两个额外的层,这样就可以轻松地将一个图像放置在另一个图像的顶部,并且只需要最少的语义标记(没有空div等)

标记:

<div class="overlap"></div>

这里有一个

可能有点晚了,但你可以这样做:

HTML


创建放置在页面流中的相对div;首先将基础图像作为相对图像放置,以便div知道它应该有多大;相对于第一幅图像的左上角,将覆盖层放置为绝对。诀窍是让亲属和绝对正确。

设置背景大小封面。然后用另一个div包装您的div,现在在父div上设置最大宽度

<div style="max-width:100px">
  <div style="background-image:url('/image.png'); background-size: cover; height:100px; width:100px; "></div>
</div>


您可以使用Spritest使用一幅图像来制作里程表。这是我的最佳解决方案,因为不需要指定图像的宽度和高度,这将导致更高的可重用性。这是一个优雅的解决方案。如果“a”的ID为
a
,而“b”的ID为
b
,则可以(通过一些计算设置
x
y
)更改
b
的位置吗?左侧:0非常重要!忘了它,它在Safari中不起作用。我花了一些时间才弄明白。在运行代码段时,一个图像没有显示在另一个图像的顶部。@kojow7刚刚更新了代码段,将它们显示在另一个图像的顶部。:-)@我知道你不会这样做的。你应该使用自动边距。我认为一个可能的代码示例可能会帮助这个答案的未来读者。
<!-- 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;
    }
  }
}
<div style="max-width:100px">
  <div style="background-image:url('/image.png'); background-size: cover; height:100px; width:100px; "></div>
</div>