如何在图片上制作透明覆盖层

5

我有一张简单的图片像这样:

<img src="/assets/missing.png">

现在我想要的是,当鼠标悬停在图像上时,出现一个透明的黑色覆盖层,并有一个大的“x”显示在上面。这是否仅使用CSS3就可以实现,还是需要JavaScript?如果需要,应该如何实现?
我已经试着让它起作用了,但是我有一个问题无法解决。以下是截图: 截图 如您所见,顶部有一部分缺失。以下是我的CSS:
.image {
  padding: 0px;
  display: inline-block;
  vertical-align: middle;
  max-height: 150px;
  max-width: 150px;
  margin: 15px;
  position:relative;
}

.image img {
  width:100%;
  vertical-align:top;
}

.image:after {
  content:'\A';
  position:absolute;
  width:100%; height:100%;
  top:0; left:0;
  background:rgba(0,0,0,0.6);
  opacity:0;
  transition: all 0.5s;
  -webkit-transition: all 0.5s;
}

.image:hover:after {
  opacity:1;
}

2
这在CSS中非常容易实现 :) 这里有一个重复的问题 - 如何使用CSS在图像悬停时添加黑色透明覆盖层? - misterManSam
1
@misterManSam 谢谢,它基本上起作用了,但我仍然有一个问题(请查看问题编辑)。你有任何想法这个问题出在哪里吗? - NickEckhart
请确保最大高度和宽度与图像尺寸相匹配。话说,我已经优化了这个版本,通过组合一些答案。当您更改图像的最大宽度和高度时,这对您有什么影响? - misterManSam
@misterManSam,我解决了,只是填充问题。感谢您的帮助 :) 干杯 - NickEckhart
别担心,只是为了好玩,这个版本不需要高度和宽度。顺便说一下:请只接受对你有帮助的答案……你不需要接受任何答案——特别是如果你通过其他问题得到了大部分指导 :) - misterManSam
2个回答

7
请看下面的代码示例。希望它能帮到您。 http://jsfiddle.net/somy_taheri/93y6hwjk/1/
<html>
    <div class="outer">
        <img src="http://placekitten.com/g/200/300">                    
            <div class="overlay">
                <p class="text">x</p>
            </div>
    </div>
</html>
<style>
.outer {
    position:relative;
    width: 200px;
    height: 300px;
}
.overlay {                      
    display: none;  
}

.outer:hover .overlay { 
    display: block;
    position: absolute;
    width: 100%;
    height: 100%;
    background: black;
    opacity: 0.7;
    top: 0;
}
.text {
    position: absolute;
    top: 50%;
    left: 50%;
    transform:translate(-50%, -50%);
    color:white;
}
</style> 

0

看一下这个。

HTML:

<div class="div">
    <div class='overlay'><p>X</p></div>
    <img src="http://fc02.deviantart.net/fs71/f/2012/157/c/a/watch_dogs___wallpaper__2_by_danielskrzypon-d52hvi1.png"/>
</div>

CSS:

.div{
    height:400px;
    width:400px;
    float:left;
    cursor:pointer;
}
img{
    height:400px;
    width:400px;
}
.overlay{
    height:400px;
    width:400px;
    position:absolute;
    background:rgba(0,153,255,.8);
    text-align:center;
    display:none;
}
.overlay p{
    color:white;
    line-height:400px;
    font-size:80px;
    margin:0;
}

查询:

$(document).ready(function(){
    $(".div").stop().mouseenter(function(){
        $(".overlay").fadeIn('slow');
    });
    $(".div").stop().mouseleave(function(){
        $(".overlay").fadeOut('slow');
    });
})

看一下。JSFiddle: http://jsfiddle.net/u5ka7Lq4/19/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接