Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   определить что scroll закончился (https://javascript.ru/forum/misc/51210-opredelit-chto-scroll-zakonchilsya.html)

Georrg 28.10.2014 18:01

определить что scroll закончился
 
Как определить, что горизонтальный скролл дошел до упора правой или левой границы?

danik.js 28.10.2014 18:14

левая - window.scrollX == 0
правая - window.document.body.clientWidth - window.scrollX - window.innerWidth == 0

в старых браузерах чуть иначе.

Georrg 28.10.2014 18:23

Спасибо большое, попробовал, не помогло. Забыл уточнить, что скролл вложенные, то есть, существует определенный контент:

там, я нашел вот такой вот код:
dhtmlxEvent(this.$scroll_hor, "scroll", function() {
        if (gantt._touch_scroll_active) return;
        var left = gantt.$scroll_hor.scrollLeft;
        console.log(left);
        gantt.scrollTo(left);
    });

Вызывается данный обработчик при любом перетаскивании горизонтального скролла. Левая граница left =0, правая left = 910. Однако константные выражения использовать я бы не стал. Может еще что подскажите?

рони 28.10.2014 18:47

:-?
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">

 div{
   position: fixed;
   display: inline-block;
 }
 body, html{
 min-width: 2000px;
 position: relative;

 }
  </style>

</head>

<body>
<div>?</div>
<script>
 window.onscroll = function ()
{
var div = document.querySelector('div'),
scrollWidth = document.documentElement.scrollWidth,
clientWidth = document.documentElement.clientWidth,
maxScroll = Math.max(scrollWidth, clientWidth) - document.documentElement.clientWidth,
scrollLeft = window.pageXOffset || document.documentElement.scrollLeft;
div.innerHTML =(scrollLeft == 0 || scrollLeft == maxScroll) ?   scrollLeft ? 'max' : 'min' : scrollLeft;
}
</script>
</body>

</html>

Georrg 28.10.2014 19:10

Спасибо, что привели пример, но у меня(google chrome) он работает верно, только при минимуме, а максимум, так и остается 1119.

danik.js 28.10.2014 19:22

Цитата:

Сообщение от Georrg
Может еще что подскажите?

Принцип тот же, только вместо scrollX будет element.scrollLeft, вместо document.body.clientWidth будет element.scrollWidth, вместо window.innerWidth будет element.offsetWidth


Часовой пояс GMT +3, время: 17:46.