JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec id elit non mi porta gravida at eget metus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec id elit non mi porta gravida at eget metus. Vestibulum id ligula porta felis euismod semper.
<div class="text-wrapper">
<h1>Click Me<div class="blocker-wrapper"><div class="blocker"></div></div></h1>
</div>
Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Vestibulum id ligula porta felis euismod semper. Aenean lacinia bibendum nulla sed consectetur. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.
CSS
.text-wrapper {
position: relative;
text-align: center;
}
h1 {
font-size:100px;
display: inline-block;
margin: 24px;
padding: 12px;
}
.blocker-wrapper {
position: absolute;
overflow:hidden;
}
.blocker {
position: relative;
background: yellow;
margin-left: -100%;
z-index: 10;
width: 100%;
}
JavaScript
$('h1').click(function() {
offsetLeft = $(this).position().left;
offsetTop = $(this).position().top;
marginLeft = $(this).css('margin-left');
marginTop = $(this).css('margin-top');
elementWidth = $(this).outerWidth();
elementHeight = $(this).outerHeight();
$('.blocker-wrapper').css({
'top' : offsetTop,
'left' : offsetLeft,
'margin-left': marginLeft,
'margin-top': marginTop
});
$('.blocker').width(elementWidth).height(elementHeight).css({
'top' : 0
}).animate({
'margin-left' : '100%'
}, 2000, 'easeInOutQuint',function(){
$('.blocker').css('margin-left', '-100%')
});
});