如何同步两个滚动条与Javascript纯
How sync two scrollbars with Javascript pure?
我有一个<DIV>
和一个<TEXTAREA>
,问题是元素(将接收同步)滚动比预期的多,而不是与百分比。
到目前为止,我已经做到了:
function syncScroll(from, to)
{
var sf = from.scrollHeight - from.clientHeight,
st = to.scrollHeight - to.clientHeight;
if (sf < 1) {
return;
}
var p = (sf / 100) * from.scrollTop;
to.scrollTop = (st / 100) * p;
}
window.onload = function() {
var currentScrollEvt, timer;
var editor = document.querySelector(".editor");
var preview = document.querySelector(".preview");
preview.innerHTML = editor.value;
editor.onscroll = function() {
if (currentScrollEvt === "preview") {
return;
}
clearTimeout(timer);
currentScrollEvt = "editor";
syncScroll(editor, preview);
timer = setTimeout(function() {
currentScrollEvt = null;
}, 200);
};
preview.onscroll = function() {
if (currentScrollEvt === "editor") {
return;
}
clearTimeout(timer);
currentScrollEvt = "preview";
syncScroll(preview, editor);
timer = setTimeout(function() {
currentScrollEvt = null;
}, 200);
};
};
html, body {
padding: 0;
margin: 0;
height: 100%;
}
* {
box-sizing: content-box;
}
body {
display: flex;
}
.editor, .preview {
flex: 1;
}
.preview {
background-color: #f00;
overflow: auto;
float: right;
}
<textarea class="editor">
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
a <br>
</textarea>
<div class="preview"></div>
你的百分比计算错误,试试这个:
var p = from.scrollTop / sf * 100;
相关文章:
- 使用没有插件的javascript自定义滚动条
- javascript/获取滚动条位置的回调
- 向下滚动到Javascript进度条后加载该进度条
- Javascript 自定义滚动条
- 在不使用Javascript的情况下将滚动条滚动到底部
- 使用JavaScript向jQuery自动完成添加滚动条
- 在javascript中添加滚动条
- JavaScript-HTML<选择>单击滚动条的向下按钮时触发的onclick事件
- 在RubyonRails中使用Javascript来调整模式对话框中的滚动条
- 带有转换比例错误的自定义JavaScript滚动条(jScrollPane)
- 创建新窗口时使用Javascript滚动条
- 阻止鼠标滚轮滚动,但不阻止滚动条事件.JavaScript
- 数据表 Javascript 显示水平滚动条
- 在鼠标悬停时显示滚动条 [javascript]
- 如何使用 JavaScript 在新窗口中插入滚动条
- javascript Y 滚动条在向下按钮的鼠标上移动,但窗口水平
- 在 JavaScript 中同步两个滚动条
- JavaScript .toggle - 垂直滚动条上升
- 刷新页面不会刷新滚动条 JavaScript
- 识别滚动条:Javascript