A A
A A

Reputation: 88

How do i make my hover caption to cover the whole image size?

I'm trying to make a hover caption that adapts itself to the full image width and height even when it resizes. I've tried using a jquery code that I found here but I haven't been able to figure out how to make it work.

$(document).ready(function() {
    var imgWidth = $('.imagen').width();
    $('.caption-text').css({width: imgWidth});
  $('.caption-style-1').css({width: imgWidth});
  $('.blur').css({width: imgWidth});
});
.container-a1 {
  height: 100%;
  width: 100%;
}
.caption-style-1{
		list-style-type: none;
		margin: 0px;
		padding: 0px;
		
	}

	.caption-style-1 li{
		float: left;
		padding: 0px;
		position: relative;
		overflow: hidden;
	}

	.caption-style-1 li:hover .caption{
		opacity: 1;

	}


	.caption-style-1 img{
		margin: 0px;
		padding: 0px;
		float: left;
		z-index: 4;
	}


	.caption-style-1 .caption{
		cursor: pointer;
		position: absolute;
		opacity: 0;
		-webkit-transition:all 0.45s ease-in-out;
		-moz-transition:all 0.45s ease-in-out;
		-o-transition:all 0.45s ease-in-out;
		-ms-transition:all 0.45s ease-in-out;
		transition:all 0.45s ease-in-out;

	}
	.caption-style-1 .blur{
		background-color: rgba(0,0,0,0.65);
    position: absolute;
		height: 500px;
		width: 400px;
		z-index: 5;
		position: relative;
	}

	.caption-style-1 .caption-text h1{
		text-transform: uppercase;
		font-size: 24px;
	}
	.caption-style-1 .caption-text{
		z-index: 10;
		color: #fff;
		position: absolute;
		width: 400px;
		height: 500px;
		text-align: center;
		top:100px;
	}

.imagen {
  height: 800px;
  width: 800px;
  }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container-a1">
		<ul class="caption-style-1">
			<li>
				<img class="imagen" src="http://uploads5.wikiart.org/images/claude-monet/the-summer-poppy-field.jpg"/" alt="">
				<div class="caption">
					<div class="blur"></div>
					<div class="caption-text">
						<h1>Amazing Caption</h1>
						<p>Whatever It Is - Always Awesome</p>
					</div>
				</div>
			</li>
    </ul>
</div>

Upvotes: 1

Views: 83

Answers (1)

Francisco Romero
Francisco Romero

Reputation: 13199

Then, you just have to also add the height property of your image to your .blur class.

$(document).ready(function() {
    var imgWidth = $('.imagen').width();
    var imgHeight = $('.imagen').height();
    $('.caption-text').css({width: imgWidth});
  $('.caption-style-1').css({width: imgWidth});
  $('.blur').css({width: imgWidth, height: imgHeight});
});
.container-a1 {
  height: 100%;
  width: 100%;
}
.caption-style-1{
		list-style-type: none;
		margin: 0px;
		padding: 0px;
		
	}

	.caption-style-1 li{
		float: left;
		padding: 0px;
		position: relative;
		overflow: hidden;
	}

	.caption-style-1 li:hover .caption{
		opacity: 1;

	}


	.caption-style-1 img{
		margin: 0px;
		padding: 0px;
		float: left;
		z-index: 4;
	}


	.caption-style-1 .caption{
		cursor: pointer;
		position: absolute;
		opacity: 0;
		-webkit-transition:all 0.45s ease-in-out;
		-moz-transition:all 0.45s ease-in-out;
		-o-transition:all 0.45s ease-in-out;
		-ms-transition:all 0.45s ease-in-out;
		transition:all 0.45s ease-in-out;

	}
	.caption-style-1 .blur{
		background-color: rgba(0,0,0,0.65);
    position: absolute;
		height: 500px;
		width: 400px;
		z-index: 5;
		position: relative;
	}

	.caption-style-1 .caption-text h1{
		text-transform: uppercase;
		font-size: 24px;
	}
	.caption-style-1 .caption-text{
		z-index: 10;
		color: #fff;
		position: absolute;
		width: 400px;
		height: 500px;
		text-align: center;
		top:100px;
	}

.imagen {
  height: 800px;
  width: 800px;
  }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container-a1">
		<ul class="caption-style-1">
			<li>
				<img class="imagen" src="http://uploads5.wikiart.org/images/claude-monet/the-summer-poppy-field.jpg"/" alt="">
				<div class="caption">
					<div class="blur"></div>
					<div class="caption-text">
						<h1>Amazing Caption</h1>
						<p>Whatever It Is - Always Awesome</p>
					</div>
				</div>
			</li>
    </ul>
</div>

Upvotes: 1

Related Questions