我有一个硬编码高度的滚动容器:
.scrollingContainer {
overflow: scroll;
height: 400px;
}
Run Code Online (Sandbox Code Playgroud)
这个滚动容器包含一个项目列表,当我点击我要滚动容器的项目时,单击的项目位于滚动容器的顶部.
$('.scrollingContainer li a').click( function(event) {
var vpHeight = $('.scrollingContainer').height();
var offset = $(this).offset();
$('.scrollingContainer').animate({
scrollTop: vpHeight - offset.top
}, 500);
});
Run Code Online (Sandbox Code Playgroud)
以上是我目前的情况,我在进行数学计算时遇到问题.另外我认为var offset值是不正确的,因为它似乎是从页面顶部获得偏移量,我希望根据它在滚动容器中的位置获得偏移值.
任何帮助赞赏!
ish*_*ood 46
这个答案的一个变种就是诀窍:
http://jsfiddle.net/isherwood/LqQGR/14
var myContainer = $('.scrollingContainer')
$(myContainer).on('click', 'a', function () {
var scrollTo = $(this);
myContainer.animate({
scrollTop: scrollTo.offset().top - myContainer.offset().top + myContainer.scrollTop()
});
});
Run Code Online (Sandbox Code Playgroud)
这是一个实例: http: //jsfiddle.net/LqQGR/12/
您想要将scrollTop设置为元素的位置(容器顶部和链接之间的距离)加上当前scrollTop(所包含内容的顶部和当前可见位置之间的距离。
另外:您需要设置您的scrollingContainer,position: relative以便它是其中内容的偏移父级。
var $scrollingContainer = $('.scrollingContainer');
$scrollingContainer.on('click', 'a', function (event) {
var scrollTop = $scrollingContainer.scrollTop();
var link = $(event.currentTarget);
var position = link.position();
$scrollingContainer.animate({
scrollTop: position.top + scrollTop
}, 500);
});
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我的答案优于将点击事件侦听器单独添加到所有锚标记的答案。这只增加了一个监听器,性能更高。了解有关委托事件的更多信息
| 归档时间: |
|
| 查看次数: |
23157 次 |
| 最近记录: |