如何以不同的速度滚动一列
How do I scroll a column at a different speed?
我有两列,#photos
和#text
。我的#photos
列较长,逻辑上包含一些图像。当我滚动页面时,我喜欢#photos
列比#text
列滚动得更快,这样两列都会在底部对齐。
我使用jQuery的$(window).scroll()
来更新#photos
列:
$("#photos").css("top", Math.round(targetY));
如何计算targetY?
我知道这可能与$(document).height()
、$("#photos").height()
和$(window).scrollTop()
有关,但我搞不清公式。
如果没有更多的代码,我真的不能建议直接对代码进行更改,但我已经用下面的jsFiddle模拟了您可能想要的工作版本。
我还将等式分解为多个部分,以便更容易地了解发生了什么
因此,当您滚动text
div时,photos
div会根据两个容器的高度以相同的比例滚动。
JavaScript:
$(document).ready(function(){
$('#textScroll').scroll(function(){
var textDiff = $('#text').height() - $('#textScroll').height();
var textDiffRatio = (1 / textDiff) * $('#textScroll').scrollTop();
var photosDiff = $('#photos').height() - $('#photosScroll').height();
var photosScrollTop = textDiffRatio * photosDiff;
$('#photosScroll').scrollTop(photosScrollTop);
});
});
HTML:
<div id="textScroll" style="width:100px; height:100px; overflow:auto;">
<div id="text">
Text 1<br />
Text 2<br />
Text 3<br />
Text 4<br />
Text 5<br />
Text 6<br />
Text 7
</div>
</div>
<div id="photosScroll" style="width:100px; height:100px; overflow:auto;">
<div id="photos">
Photos 1<br />
Photos 1<br />
Photos 2<br />
Photos 2<br />
Photos 3<br />
Photos 3<br />
Photos 4<br />
Photos 4<br />
Photos 5<br />
Photos 5<br />
Photos 6<br />
Photos 6<br />
Photos 7<br />
Photos 7
</div>
</div>
希望它能帮你解决问题。
相关文章:
- 柱状图后面的一列
- 数据表通过分析一列的值对其进行排序
- Datatables-如何在未显示所有列的情况下禁用表中最后一列的排序
- 获取表中每行的一列的内容,然后循环访问每个内容
- 对象数组-与其他列数据相比,增加一列
- 在最初的查询/表格绘制中只提取谷歌电子表格的一列
- jQuery Datatables:单击一列时对另一列进行排序
- 我的砖石图像只显示在一列中
- 删除“;使用javascript从pentaho中的一列中选择“[”
- 使用 Javascript 在一列中更改属性内容
- jquery插件 - 已选择 - 多项选择不在一行中列出,而是列在一列中
- 单击包含按钮的最后一列时获取表的第一列值
- 排除行选择中的最后一列
- 取消表中一列的onclick事件
- “搜索”文本仅考虑表格中的最后一列
- Javascript一页滚动脚本滚动到每个点击的链接一个接一个
- jqGrid有条件地创建一列
- 当第一次砌筑'项目'将所有剩余项隐藏在一列中
- 避免在rich:dataTable的某一列中出现onRowClick事件
- 如何以不同的速度滚动一列