javascript - 两个不同屏幕上的垂直滚动

标签 javascript jquery html css scroll

我试图同时在两个不同的屏幕上垂直滚动,如果一个用户滚动,那么另一个 div 应该自动滚动到第一个 div 上的那个位置。

我遇到的问题是在小屏幕中底部剩余一点空间尝试通过慢速滚动来查看它。我在目前为止尝试过的代码下方附上代码

var global_std = 0;
	var global_tch = 0;
	
	function function_std(){
		global_std = $(".scroll_std").scrollTop();
		$("#tch_id").scrollTop(global_std);
	}

	
	function function_tch(){
		global_tch = $(".scroll_tch").scrollTop();
		$("#std_id").scrollTop(global_tch);
	}
* {
		margin: 0px;
		padding: 0px;
	}
	.container {
		width: 80%;
		background-color: #ccc;
		margin: 50px auto;
		padding: 20px;
	}
	.student {
		width: 35%;
		height: 500px;
		float: left;
		background-color: white;
		overflow-x: scroll;
		overflow-y: scroll;
	}
	.teacher {
		width: 60%;
		height: 700px;
		float: right;
		background-color: white;
		overflow-x: scroll;
		overflow-y: scroll;
	}
	.clear {
		clear: both;
	}
	.learning-space {
		width: 1000px;
		height: 1000px;
	}
	h2 {
		margin-bottom: 20px;
		text-align: center;
	}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
	<div id="std_id" class="student scroll_std" onscroll="function_std();">
		<h2>Student Screen</h2>
		<hr>
		<div class="learning-space"></div>
	</div>
	<div id="tch_id" class="teacher scroll_tch" onscroll="function_tch();">
		<h2>Teacher Screen</h2>
		<hr>
		<div class="learning-space"></div>
	</div>
	<div class="clear"></div>
</div>

最佳答案

我在我 friend 的帮助下尝试了一些,我们得到了一个完美的解决方案,所以我将其发布在答案中,它对我来说很好用。我们修改了 java 脚本并得到了正确的解决方案。

$(document).ready(function () {

    var master = "tch_id";
    var slave = "std_id";
    var master_tmp;
    var slave_tmp;
    var timer;

    var sync = function () {
        if ($(this).attr('id') == slave) {
            master_tmp = master;
            slave_tmp = slave;
            master = slave;
            slave = master_tmp;
        }

        $("#" + slave).unbind("scroll");

        var ypercentage = this.scrollTop / (this.scrollHeight - this.offsetHeight);
        var xpercentage = this.scrollLeft / (this.scrollWidth - this.offsetWidth);

        var y = ypercentage * ($("#" + slave).get(0).scrollHeight - $("#" + slave).get(0).offsetHeight);
        var x = xpercentage * ($("#" + slave).get(0).scrollWidth - $("#" + slave).get(0).offsetWidth);

        $("#" + slave).scrollTop(y);
        $("#" + slave).scrollLeft(x);

        if (typeof (timer) !== 'undefind')
            clearTimeout(timer);

        timer = setTimeout(function () { $("#" + slave).scroll(sync) }, 200)
    }

    $('#' + master + ', #' + slave).scroll(sync);

});

关于javascript - 两个不同屏幕上的垂直滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52653452/

相关文章:

javascript - 如何在td标签中显示pace.js页面加载进度

jquery - 如何使用纯 css 按钮(无图像)更改输入按钮?

jquery - 如何设置嵌套在标签标签中的复选框的样式

javascript - 网格中的 Page_validators 用于客户端验证

html - 将跨度分成几行

javascript - 在以下情况下,为什么下拉菜单没有根据从选择框中选择的值隐藏和显示?

javascript - 对于文件选择器 openFileChooser() 方法不调用 Kitkat 4.4 的 WebChromeClient

javascript - 使用javascript基于单个或双位数字符提取子字符串

javascript - Node.js 加密输入/输出类型

html - 为多个表格设置相同的宽度而每个表格中的内容长度不相等?