图像高度与宽度相同,悬停div与文本

时间:2015-08-03 10:12:28

标签: html css

我正在寻找一种解决方案来创建图像悬停效果并同时保持图像高度与widht相同。这是我现在的代码:

<style>
    #a{width:100%;height: 100vh;background-color: red;}
    #a .inner {width: 100%;height: 100%;min-height: 100%; background-color: green;}
</style>

<div id="a">
    <div class="inner">The GREEN must fill the screen</div>
</div>
.kozossegitag {
	content: "";
	display: block;
	width: 100%;
	padding-top: 100%;
	background: url(http://www.kaptarcoworking.hu/wp-content/uploads/2015/07/koren_miklos.jpg);
	background-size: cover;
	overflow: hidden
}

.reszletek {
	width: 100%;
	padding-top: 100;
	background-color: rgba(67,85,103,0.7);
	opacity: 0;
}

.kozossegitag:hover .reszletek {
    background-color: rgba(67,85,103,0.5);
    opacity: 1;
    -webkit-transition: opacity .25s ease;
	-moz-transition: opacity .25s ease;
}

我的目标是用这种柔和的蓝色覆盖整个图像,并将文本放在图像上。正如你在这里看到的那样(左边是没有悬停,右边是没有):

enter image description here

非常感谢您的帮助!

干杯, 佩佩

3 个答案:

答案 0 :(得分:0)

将此添加到您的css:

.kozossegitag:hover{
    background-color: lightblue;
    background-blend-mode: multiply;    
}

Here is the JSFiddle demo

答案 1 :(得分:0)

它并不过分整洁,因为它有点匆忙,但你明白了。我使用了绝对位置和一些伪元素来创建我认为你想要实现的东西。

CSS:

.kozossegitag {
    display: block;
    width: 100%;
    background: url(http://www.kaptarcoworking.hu/wp-content/uploads/2015/07/koren_miklos.jpg);
    background-size: cover;
    overflow: hidden;
    position: relative;
}

/* give the div the ratio height */
.kozossegitag::after {
    content: "";
    padding-top: 100%;
    display: block;
}

.reszletek {
    width: 100%;
    opacity: 0;
}

.kozossegitag:hover .reszletek {
    opacity: 1;
    -webkit-transition: opacity .25s ease;
    -moz-transition: opacity .25s ease;
    z-index: 10;
    position: relative;
}

/* overlay the light blue using ::before */
.kozossegitag:hover::before {
    content: "";
    background-color: rgba(67, 85, 103, 0.7);
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;   
    z-index: 0;
}

<强> Working example.

答案 2 :(得分:0)

通过相对定位.kozossegitag,您可以将.reszletek绝对正确地放在其上方,方法是将宽度和高度设置为100%,将顶部和左侧设置为0。

您也忘记在.kozossegitag上将高度设置为0以保持正方形;

.kozossegitag {
    height:0;
    position:relative;
    content: "";
    display: block;
    width: 100%;
    padding-top: 100%;
    background: url(http://www.kaptarcoworking.hu/wp-content/uploads/2015/07/koren_miklos.jpg);
    background-size: cover;
    overflow: hidden
}

.reszletek {
    position:absolute;
    width: 100%;
    height: 100%;
    top:0;
    left:0;
    background-color: rgba(67,85,103,0.7);
    opacity: 0;
}

.kozossegitag:hover .reszletek {
    background-color: rgba(67,85,103,0.5);
    opacity: 1;
    -webkit-transition: opacity .25s ease;
    -moz-transition: opacity .25s ease;
}

小提琴: http://jsfiddle.net/trex005/rpafw24q/