Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get horizontal scrolling percentage of an HTML element in JavaScript?

How can we calculate the percentage of 'distance' covered by the scrollbar on an element between start and end?

<div id="container" style="overflow-x:scroll; max-width:1000px;">
  <div id="contained" style="width:3000px;"></div>
</div>

<script>
  $('#container').scroll(function(){
    var scrollPercentage; //How to get scroll percentage?
  });
</script>

So, if the scrollbar is completely at the left we want to get 0, and if it's completely at the right we want to get 100.

like image 331
Oriol Avatar asked Aug 31 '12 20:08

Oriol


2 Answers

var scrollPercentage = 100 * this.scrollLeft / (this.scrollWidth-this.clientWidth); 

http://jsfiddle.net/vWDfb/3/

Or, if you really must use jQuery:

scrollPercentage = 100 * $(this).scrollLeft() / ($('#contained').width() - $(this).width());

http://jsfiddle.net/vWDfb/5/

like image 71
Blazemonger Avatar answered Sep 17 '22 17:09

Blazemonger


See it here: http://jsfiddle.net/vWDfb/1/

$('#container').scroll(function(){
    var scrollPercentage = 100*this.scrollLeft/this.scrollWidth/(1-this.clientWidth/this.scrollWidth);
});

It can be useful to round that number to, for example, two decimals. Then, use

scrollPercentage.toFixed(2);

Edit: Better use

var scrollPercentage = 100 * this.scrollLeft / (this.scrollWidth-this.clientWidth); 

as @Blazemonger pointed out.

like image 31
Oriol Avatar answered Sep 19 '22 17:09

Oriol