1

我正在尝试在相当复杂的布局上创建悬停效果。悬停效果有效,但是在悬停时,背景(或覆盖)会超出图像(我希望它与图像一样大)。

有谁知道这是为什么以及如何解决它?

HTML

<article>
    <div class="img-crop">
        <a href="#" class="title-anchor"><h2>Title</h2></a>
        <a href="#"><img src="http://bit.ly/gUKbAE" /></a>
    </div>
</article>

CSS

* {
    box-sizing: border-box;
    -moz-box-sizing: border-box;
}

article {
    overflow: hidden;
}

.title-anchor {
    display: inline-block;
    position: absolute;
    overflow: hidden;
    z-index: 1;
    width: 100%;
    height: 100%;
}

.img-crop:hover .title-anchor {
    background: rgba(0,0,0,0.5);
}

.img-crop {
    display: inline-block;
    position: relative;
    overflow: hidden;
    max-width: 100%;
    margin: 0;
    padding: 0;
}

h2 {
    color: rgba(0,0,0,0);
    margin: 0;
    padding: 0;
    z-index: 2;
    line-height: 0;
    position: absolute;
    top: 50%;
    left: 0;
    width: 100%;
    text-align: center;
}

.img-crop:hover h2 {
    color: black;
}

它也在这里:http: //jsfiddle.net/kmjRu/39/

4

3 回答 3

3

只需添加

img {
display: block;
}

http://jsfiddle.net/kmjRu/41/

默认情况下,图像被替换为内联元素

于 2013-04-09T15:43:00.100 回答
2

您需要在通用 css 上添加它:

img { border: 0; vertical-align: top;}

...

http://jsfiddle.net/Riskbreaker/kmjRu/43/

于 2013-04-09T15:45:37.587 回答
0

定义 .img-crop:hover 的高度与 .img-crop img 相同。例如

.img-crop:hover {
    background: rgba(0,0,0,0.5);
    height: 100px;
}
.img-crop img{height: 100px;}
于 2013-04-09T15:45:45.957 回答