我正在angularjs中创建一个指令以实现平滑滚动..但我面临一些奇怪的问题,每当我点击任何菜单项时页面开始振动而且它也不会上升。它只适用于向下..:p:)....它有点搞笑,我无法解决这个问题。
这是我的代码......
FIDDLE LINK
https://jsfiddle.net/a6at8js6/1/
HTML
template< class F, class... Args>
auto invoke(F&& f, Args&&... args)
{
return std::forward<F>(f)(std::forward<Args>(args)...);
}
CSS
<div ng-app="mainApp" ng-controller="mainCtrl">
<ul class="left">
<li ng-repeat="menu in menus" class="list-group-item" scroll srcelem="head{{$index+1}}"><a href="">{{menu}}</a></li>
</ul>
<ul class="right">
<li ng-repeat="p in para" id="head{{$index+1}}">{{p}}</li>
</ul>
</div>
JS
.left{
float:left;
position:fixed;
}
.right{
float:right;
width:500px;
}
.right li{
height:500px;
}
答案 0 :(得分:1)
你的间隔条件太严格了,如果你的偏移不是像10或15这样的圆形,那么它会变成+5和-5,如果它是13,它会被卡在无限循环中。
修改你的===条件以接受更多,如+3和-3,不仅是完全相同的偏移量,而是将它作为第一个条件。
答案 1 :(得分:0)
您跳跃的时间间隔不允许window.pageYOffset === divHeight(target_elem)
条件评估为真。在条件中的步骤中更改步长或因子。
如果绝对必须使用相等,请尝试添加差异误差范围。我还建议您使用setTimeout
代替setInterval
。