function goToHighLight(selector, container){
document.querySelector(selector).scrollIntoView();
var scroll = document.querySelector(container).clientHeight ;
var half_scroll = scroll/2;
var selector_h = document.querySelector(selector).clientHeight/2;
var next = 0;
$(selector).nextAll().each(function( index ) {
next += this.clientHeight;
});
var prev = 0;
$(selector).prevAll().each(function( index ) {
prev += this.clientHeight;
});
if(next < half_scroll){
var diff = half_scroll-next-selector_h;
$(container).children().last().css("margin-bottom",diff);
var where_am_i = $(container).scrollTop();
$(container).scrollTop(where_am_i+diff);
}
else if(prev < half_scroll){
var diff = half_scroll-prev-selector_h;
$(container).children().first().css("margin-top",diff);
var where_am_i = $(container).scrollTop();
$(container).scrollTop(where_am_i-diff);
}
else{
var where_am_i = $(container).scrollTop();
$(container).scrollTop(where_am_i-half_scroll+selector_h);
}
}
goToHighLight("#highlight4", "#container");
$(".goH").click(function(){
goToHighLight("#"+this.id,"#container");
});
#container{
width:250px;
height: 300px;
overflow-y: auto;
overflow-x: hidden;
float:left;
}
.foo{
width:250px;
height: 600px;
display:block;
background:grey;
}
.bar{
width:250px;
height: 100px;
display:block;
background:yellow;
overflow:hidden;
}
.highlight{
width:250px;
background:green;
}
#buttons{
float:left;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container">
<div class="highlight" id="highlight1">
highlight, highlight, highlight<br>
highlight, highlight, highlight<br>
highlight, highlight, highlight<br>
highlight, highlight, highlight<br>
highlight, highlight, highlight
</div>
<div class="bar">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. <br> Fusce dolor ante, luctus ut nibh in, ultrices eleifend elit.
</div>
<div class="highlight" id="highlight2">
highlight2, highlight2, highlight2<br>
highlight2, highlight2, highlight2
</div>
<div class="bar">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. <br> Fusce dolor ante, luctus ut nibh in, ultrices eleifend elit.
</div>
<div class="highlight" id="highlight3">
highlight3, highlight3, highlight3<br>
highlight3, highlight3, highlight3<br>
highlight3, highlight3, highlight3
</div>
<div class="foo">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. <br> Fusce dolor ante, luctus ut nibh in, ultrices eleifend elit.
</div>
<div class="foo">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. <br> Fusce dolor ante, luctus ut nibh in, ultrices eleifend elit.
</div>
<div class="foo">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. <br> Fusce dolor ante, luctus ut nibh in, ultrices eleifend elit.
</div>
<div class="foo">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. <br> Fusce dolor ante, luctus ut nibh in, ultrices eleifend elit.
</div>
<div class="foo">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. <br> Fusce dolor ante, luctus ut nibh in, ultrices eleifend elit.
</div>
<div class="highlight" id="highlight4">
highlight4, highlight4, highlight4<br>
highlight4, highlight4, highlight4<br>
highlight4, highlight4, highlight4<br>
highlight4, highlight4, highlight4<br>
highlight4, highlight4, highlight4<br>
highlight4, highlight4, highlight4<br>
highlight4, highlight4, highlight4
</div>
<div class="bar">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. <br> Fusce dolor ante, luctus ut nibh in, ultrices eleifend elit.
</div>
<div class="highlight" id="highlight5">
highlight5, highlight5, highlight5<br>
highlight5, highlight5, highlight5<br>
highlight5, highlight5, highlight5<br>
highlight5, highlight5, highlight5<br>
highlight5, highlight5, highlight5<br>
</div>
</div>
<div id="buttons">
<button class="goH" id="highlight1">
highlight1
</button>
<button class="goH" id="highlight2">
highlight2
</button>
<button class="goH" id="highlight3">
highlight3
</button>
<button class="goH" id="highlight4">
highlight4
</button>
<button class="goH" id="highlight5">
highlight5
</button>
</div>