如何在图像上制作透明的叠加层

时间:2014-10-21 07:17:14

标签: html css css3

我有一个像这样的简单图像:

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

现在我想要的是能够将鼠标悬停在图像上,并在其上显示一个带有大“x”的透明黑色叠加层。是否可以只使用CSS3或者我需要Javascript吗?如果是这样的话?


我有点工作,但我有一个似乎无法修复的问题。这是一个截图:

Screenshot

正如你所看到的,有一部分在顶部缺失。这是我的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 个答案:

答案 0 :(得分:2)

看看下面的小提琴。我希望它可以提供帮助。 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> 

答案 1 :(得分: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/