我想使用CSS将一张图片覆盖在另一张图片上。 例如,第一张图像(如果您喜欢,则为背景)将是产品的缩略图链接,该链接会打开一个灯箱/弹出窗口,显示图像的更大版本。
在连接的图像顶部,我想放置一个放大镜的图像,以向用户展示可以单击图像进行放大(显然没有放大镜不太明显)。
在我的一个项目中,我刚刚完成了这个准确的操作。HTML 部分看起来可能是这样的:
<a href="[fullsize]" class="gallerypic" title="">
<img src="[thumbnail pic]" height="90" width="140" alt="[Gallery Photo]" class="pic" />
<span class="zoom-icon">
<img src="/images/misc/zoom.gif" width="32" height="32" alt="Zoom">
</span>
</a>
然后使用 CSS:
a.gallerypic{
width:140px;
text-decoration:none;
position:relative;
display:block;
border:1px solid #666;
padding:3px;
margin-right:5px;
float:left;
}
a.gallerypic span.zoom-icon{
visibility:hidden;
position:absolute;
left:40%;
top:35%;
filter:alpha(opacity=50);
-moz-opacity:0.5;
-khtml-opacity: 0.5;
opacity: 0.5;
}
a.gallerypic:hover span.zoom-icon{
visibility:visible;
}
我在CSS中保留了很多示例,这样你就可以看到我是如何决定样式的。请注意,我降低了不透明度,这样你就可以透过放大镜看到下面的内容。
编辑:为了说明你的示例 - 如果你想要忽略visibility:hidden;
并停用:hover
执行,你可以这样做,这只是我选择的方式。
有一种技术,这篇文章建议采用以下方法:
<img style="background:url(thumbnail1.jpg)" src="magnifying_glass.png" />
最近我是这样做的。虽然不完美,但能完成任务。
这里是如何做到的。<div class="container" style="position: relative">
<img style="z-index: 32; left: 8px; position: relative;" alt="bottom image" src="images/bottom-image.jpg">
<div style="z-index: 100; left: 72px; position: absolute; top: 39px">
<img alt="top image" src="images/top-image.jpg"></div></div>
.double-image {
background-image: url(images/img1.png), url(images/img2.png);
}
如果你只想要在悬停时出现放大镜,那么你可以使用
a:hover img { cursor: url(glass.cur); }
http://www.javascriptkit.com/dhtmltutors/csscursors.shtml
如果您想要它永久存在,您应该考虑将其包含在原始缩略图中,或者使用JavaScript添加它,而不是将其添加到HTML中(这纯粹是样式,不应该出现在内容中)。<span><img src="/images/"></span>
CSS
span img {
position:relative;
z-index:-1;
}
span {
position:relative;
z-index:initial;
display:inline-block;
}
span:hover {
background-color:#000;
}
除非您使用<img>
标签,该标签单独显示图像,否则您将无法仅通过纯CSS实现此目的。您还需要两个HTML元素 - 每个图片一个。这是因为您唯一可以通过CSS使元素显示图片的方法是使用background-image
属性,而每个元素只能有一个背景图像。您选择哪两个元素以及如何定位它们取决于您。有许多方法可以将一个HTML元素定位在另一个元素上方。
<div class="image-container">
<a class="link" href="#" >
<img class="image" src="/img/thumbnail.png"/>
<span class="overlay-image"><img src="/img/overlay.png"></span>
</a>
</div>
div.image-container{
position: relative;
}
a.link{
text-decoration: none;
position: relative;
display: block;
}
a.link span.overlay-image{
visibility: hidden;
position: absolute;
left: 0px;
top: 0px;
bottom: 0px;
right: 0px;
background-color: rgba(0,0,0,0.2); /* black background with 20% alpha */
}
a.link span.overlay-image:before { /* create a full-height inline block pseudo=element */
content: ' ';
display: inline-block;
vertical-align: middle; /* vertical alignment of the inline element */
height: 100%;
}
a.link:hover span.overlay-image img{
display: inline-block;
vertical-align: middle;
}
a.link:hover span.overlay-image{
visibility: visible;
}