In order to allow div or span element to appear over an image when mouse hover over the image, this can be done with the help of .image:hover overlay,
To position .overlay element absolutely relative to the parent element we give height and width to 100% for all image sizes making parent element inline-block
HTML
<div class="image"> <img src="..." /> <div class="overlay">Content to be displayed on hover</div> </div>
CSS
By hiding the .overlay element by default, we use the selector .image:hover .overlay to change the styling on hover. Due to the HTML structure, this works well because .overlay is a descendant element. .image { position:relative; display:inline-block; } .overlay { display:none; } .image:hover .overlay { width:100%; height:100%; background:rgba(0,0,0,.5); position:absolute; top:0; left:0; display:inline-block; -webkit-box-sizing:border-box; -moz-box-sizing:border-box; box-sizing:border-box; /* All other styling - see example */ img { vertical-align:top; } }