I have created labels for each block which it should show top left of the block. If labels are overlapped with another, I have to move the overlapped label to up by 34px.
This has to happen only if Labels are overlapped
PS content is coming dynamically, hence I do not have access to add any classes or ids to achieve through CSS :(
HTML:
<div class="main-div">
<div class="hrefOverlay">
<img src="http://via.placeholder.com/400x150">
<div class="resTotalClicksDiv">label</div>
</div>
<br><br><br>
<div class="hrefOverlay">
<img src="http://via.placeholder.com/400x50">
<div class="resTotalClicksDiv">label</div>
</div>
<br><br><br>
<div class="hrefOverlay">
<img src="https://cdn3.iconfinder.com/data/icons/free-social-icons/67/facebook_circle_color-20.png">
<div class="resTotalClicksDiv">Facebook</div>
</div>
<div class="hrefOverlay">
<img src="https://cdn3.iconfinder.com/data/icons/free-social-icons/67/twitter_circle_color-20.png">
<div class="resTotalClicksDiv">Twitter</div>
</div>
<div class="hrefOverlay">
<img src="https://cdn3.iconfinder.com/data/icons/free-social-icons/67/linkedin_circle_color-20.png">
<div class="resTotalClicksDiv">Linkedin</div>
</div>
</div>
CSS:
body{margin:50px auto;}
.main-div{width:400px;margin:auto;border:1px solid #ccc;font-family:verdana;font-size:13px;padding:30px 20px 10px 20px;background:#f5f5f5;}
.hrefOverlay{position:relative;display:inline-block;}
.resTotalClicksDiv{position:absolute;top: -25px;left:0;background-color: #eac0c0;padding: 5px;font-size: 12px;border:1px solid red;}
.resTotalClicksDiv:before {content: "";display: block;background: red;width: 1px;height: 20px;float: left;margin: 0;position: absolute;left: -1px;top: 0px;height: 34px;}
jQuery
var newStyle = document.createElement('style');
$('.hrefOverlay').find('.resTotalClicksDiv').each(function(i) {
$(this).addClass('resTotalClicksDiv-'+i);
$(this).css('top', -(i+1)*22 + 'px')
newStyle.appendChild(document.createTextNode(".resTotalClicksDiv-"+i+":before{height:"+(34+(i)*22)+"px;}"));
document.head.appendChild(newStyle);
});
Thanks for the @Haresh Vidja, for jQuery solution
What I am getting: Fiddle
From
To
Desired result: