Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Dynamically scroll another element when another scrolls

I have an odd situation. Look at this image:

enter image description here

I have that ruler along the top. I don't want it to scroll off when I scroll the content vertically, so I put it outside the scrolling container. But now it doesn't scroll horizontally either. I need to scroll that horizontally in sync with the content container's scrollbar when the content is scrolled.

How can I accomplish this?

like image 744
nmb1106 Avatar asked Nov 17 '25 11:11

nmb1106


1 Answers

This plain javascript function picks up the .scrollLeft value of the #content and reproduces it on the #ruler's .scrollLeft

jsfiddle

document.getElementById("content").addEventListener("scroll", myFunction);

function myFunction() {

var elmnt = document.getElementById("content");
var elmnt2 = document.getElementById("ruler");

elmnt2.scrollLeft = elmnt.scrollLeft;

}
#ruler {
  background: skyblue;
  overflow: hidden;
  width: 100%;
}

#content {  
  height: 100px;
  overflow: scroll;
  background: plum;
}
<div id=ruler>1..2..3..4..5..6..7..8..9..0..1..2..3..4..5..6..7..8..9..0..1..2..3..4..5..6..7..8..9..0..1..2..3..4..5..6..7..8..9..0..1..2..3..4..5..6..7..8..9..0..1..2..3..4..5..6..7..8..9..0..1..2..3..4..5</div>
<div id=content>
<p>texttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttext</p>
<p>texttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttext</p>
<p>texttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttext</p>
<p>texttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttexttext</p>
</div>
like image 106
Le____ Avatar answered Nov 20 '25 00:11

Le____



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!