首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单击和scrollTop

单击和scrollTop
EN

Stack Overflow用户
提问于 2013-11-04 15:31:57
回答 2查看 61关注 0票数 2

我和offset.top在部门战斗机上有问题。http://jsfiddle.net/sz8YP/1/

也就是说,在点击下一个战斗机后,把方向盘压得太远了。

代码语言:javascript
复制
$(".list-fighters li .toogle").click(function(e) {
    $(".list-fighters li").removeClass("open");
    $(this).parent("li").toggleClass("open");
    $('html, body').animate({scrollTop: $(this).offset().top}, 100);
});

有办法解决吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-04 15:52:17

您需要在超时时调用scrolltop(),以便使DOM有时间从之前修改页面高度的调用$(".list-fighters li").removeClass("open");中更新offset().top,如下所示:

代码语言:javascript
复制
var deez = this;
setTimeout(function() {
   $('html, body').animate({scrollTop: $(deez).offset().top}, 100);
}, 300);

经过测试,更新到300毫秒来捕捉高度更新。

票数 0
EN

Stack Overflow用户

发布于 2013-11-04 15:58:17

这都是因为你同时有几个动画。其中有些是用JavaScript定义的,有些是用CSS定义的。

CSS (main.css:233)

代码语言:javascript
复制
.list-fighters li {
    transition: height 350ms ease;
    -webkit-transition: height 350ms ease;
}

JavaScript

代码语言:javascript
复制
$('html, body').animate({scrollTop: $(this).offset().top}, 100);

如您所见,您可以启动动画,它可以折叠打开的战斗机描述,并且需要350ms来更新它的高度。您所需要的只是等待这么长的时间,以获得所有元素的适当高度。

代码语言:javascript
复制
var that = this;
setTimeout(function() {
    $('html, body').animate({scrollTop: $(that).offset().top}, 100);
}, 350);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19771162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档