在dom元素上滚动冲突

时间:2018-08-03 07:39:23

标签: javascript dom scroll

我的演示中有两个div,我想滚动不同的div,但不能两个都滚动。

我被写为console.log('left');和console.log('left'); 。 当我只需要向左滚动或向右滚动时,似乎有冲突。

我得到了hsz的回答,但我的问题似乎很难澄清:(

// console:left
        document.getElementById('body').onscroll = function (e) {
            document.getElementById('num').scrollTop = document.get`enter code here`ElementById('body').scrollTop;
            console.log('left');

        }


// console:right
        document.getElementById('num').onscroll = function (e) {
            document.getElementById('body').scrollTop = document.getElementById('num').scrollTop;
            console.log('right');

        }

https://codepen.io/AsheLi/pen/djexyE?editors=1111

1 个答案:

答案 0 :(得分:1)

您必须引入一个标志,该标志将指定初始化滚动的内容-自然滚动(当前由用户完成的滚动)或第二格:

let organicScrolling = true;

// console:left
document.getElementById('body').onscroll = function(e) {
  if (organicScrolling) {
    document.getElementById('num').scrollTop = document.getElementById('body').scrollTop;
    console.log('left');
  }
  organicScrolling = !organicScrolling;
};

// console:right
document.getElementById('num').onscroll = function(e) {
  if (organicScrolling) {
    document.getElementById('body').scrollTop = document.getElementById('num').scrollTop;
    console.log('right');
  }
  organicScrolling = !organicScrolling;
};

demo