如何将一张图片放在另一张更大的图片上方,就像在YouTube上,在视频缩略图上显示播放按钮一样?
制作一个半透明的PNG图片,上面有一个“播放”符号,大小可自定义(例如240x320)。
假设你将其命名为“overlay.png”,并且YouTube生成的缩略图位于http://img.ytimg.com/abcdefg/0.jpg
现在你只需要在你的代码中添加以下内容:
<a href="destination_of_your_link">
<img src="overlay.png" width="320" height="240" border="0"
style="background: url(http://img.ytimg.com/abcdefg/0.jpg) center center black;" />
</a>
只要你的目标受众不再使用IE6,您就可以放心了。我不确定YouTube是否使用图像来实现这种效果,难道它还不是Flash播放器吗?
无论如何,如何实现这个效果很大程度上取决于你想要达到的设计。让我们假设你想要实现YouTube的样式,其中你有一个缩略图并希望在其上添加一个播放按钮图像。如果你想让缩略图成为一个实际的<img>
标记,你需要一些额外的标记,如下所示:
<div class="thumb-wrapper">
<img src="mythumbnail.gif" alt="my awesome video" /><span></span>
</div>
.thumb-wrapper {
position:relative;
}
.thumbwrapper span {
position:absolute;
top: 0px;
left: 0px;
width: 100%;
height: 100%;
z-index: 100;
background: transparent url(overlay.png) no-repeat;
}
(我实际上还没有测试过,如果它明显错误,请告诉我,我会修改!)
这里假设了几件事情:
您还可以使用 opacity:
样式来实现 #2。当然,IE6将出现问题,如果选择使用透明图像,则需要为其使用PNG修复程序,或者如果使用该方法,则需要单独的不透明度滤镜。这两种方法无疑在 Stack Overflow 的其他地方得到了回答,或者很容易通过 Google 找到。
如果您有其他要求,可能可以在不使用额外标记的情况下完成此操作,正如我所说,这完全取决于您确切需要什么。某些要求可能没有 JavaScript 就无法实现(当然这意味着您可以使用 JavaScript 注入任何额外的标记!)。
<div style="position:relative">
<div>
<img url="backgroundimg.png">
</div>
<div style="position:absolute; left:0; top:0;">
<a href="foo.html"><img url="smallgraphic.png"></a>
</div>
</div>
<style>
img.youtube {
width:500px; height:500px;
margin:0; padding:0;
background:transparent url(/point/to/your/larger/image.jpg) no-repeat center
}
</style>
<img src="/point/to/youtube/play/image.png" alt="Gotta have alt text ;)" border="0" class="youtube" />
它的工作原理很简单,您将小的YouTube图像设置为透明的PNG或GIF,然后将背景图像设置为较大的图像,这将使较小的图像在中心位置,没有额外的标记。