我知道这个问题听起来令人困惑,但这就是我想要做的事情 - 在下面的片段中,如果用户在绿色div上滚动,我希望黄色div相应地滚动,就好像黄色div一样滚动了。
请注意,黄色div有overflow: auto;
但绿色div没有。
document.getElementById('green').addEventListener('wheel', function(e){
console.log('scrolled!');
console.log(e.deltaX); // it is always "-0"
// scroll div#yellow accordingly
});
#yellow{
background-color: yellow;
display: inline-block;
width: 200px;
height: 200px;
overflow: auto;
vertical-align: top;
padding 20px;
}
#green{
background-color: green;
display: inline-block;
width: 100px;
height: 200px;
vertical-align: top;
}
<div id='yellow'>
<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>
<p>5</p>
<p>6</p>
<p>7</p>
<p>8</p>
<p>9</p>
<p>10</p>
</div>
<div id='green'></div>
我如何实现这一目标?
答案 0 :(得分:3)
试试这个 DEMO
document.getElementById('green').addEventListener('wheel', function(e) {
console.log(e.deltaY); // it is always "-0"
// scroll div#yellow accordingly
document.getElementById('yellow').scrollTop += e.deltaY;
});
#yellow {
background-color: yellow;
display: inline-block;
width: 200px;
height: 200px;
overflow: auto;
vertical-align: top;
padding 20px;
}
#green {
background-color: green;
display: inline-block;
width: 100px;
height: 200px;
vertical-align: top;
}
<div id='yellow'>
<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>
<p>5</p>
<p>6</p>
<p>7</p>
<p>8</p>
<p>9</p>
<p>10</p>
</div>
<div id='green'>
<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>
<p>5</p>
</div>
答案 1 :(得分:2)
您正在尝试获取deltaX
属性,而垂直滚动所需的是deltaY
属性。
document.getElementById('green').addEventListener('wheel', function(e){
e.preventDefault();
document.getElementById('yellow').scrollTop += e.deltaY * 10;
});