javascript-滚动到flexbox容器中的元素
作者:互联网
我正在尝试自动滚动到Flexbox容器中的元素.
<div class="nav">
<div class="items">
<div ng-repeat="i in items" scroll-on-click>
{{i}} click me to scroll to me!
</div>
</div>
</div>
app.directive('scrollOnClick', function() {
return {
restrict: 'A',
link: function(scope, $element) {
$element.on('click', function() {
$(".items").animate({scrollTop: $element.offset().top}, "slow");
});
}
}
});
它滚动到单击的第一个项目的顶部,但之后很难滚动.我在非flexbox容器中也有非常相似的东西.
这是一个小问题:
http://plnkr.co/edit/kq40NiTqBI81KlRJBLHu?p=preview
有任何想法吗?
解决方法:
使用offsetTop属性可捕获嵌入式(非根)DOM元素(如flexbox)的滚动值.好讨论here.我要减去10以阻止div被切断,请按照您的意愿进行操作.
$(".items").animate({scrollTop: $element.prop('offsetTop') - 10}, "slow");
编辑:
要处理标题或其他元素(是否包含flexbox),只需从scrollTo中减去其高度即可(向标题分配ID):
$(".items")
.animate(
{
scrollTop: $('#' + id).prop('offsetTop') -
document.getElementById('header').offsetHeight -
10 // Store this as a .constant if it won't change
}, "slow");
标签:autoscroll,angularjs,flexbox,css,javascript 来源: https://codeday.me/bug/20191027/1942385.html