我有一个Vue组件,其中包含多个元素。我想在调用组件中的方法时自动滚动到该元素的底部(基本上,与滚动到div底部中的功能相同)。但是,我还没有找到在组件中获取元素并进行修改的方法scrolTop
我目前正在使用Vue 2.0.8
我有一个Vue组件,其中包含多个元素。我想在调用组件中的方法时自动滚动到该元素的底部(基本上,与滚动到div底部中的功能相同)。但是,我还没有找到在组件中获取元素并进行修改的方法scrolTop
我目前正在使用Vue 2.0.8
<div class="content scrollable" ref="msgContainer">
<!-- content -->
</div>
data() {
return {
count: 5
};
},
watch: {
count: function() {
this.$nextTick(function() {
var container = this.$refs.msgContainer;
container.scrollTop = container.scrollHeight + 120;
});
}
}
.scrollable {
overflow: hidden;
overflow-y: scroll;
height: calc(100vh - 20px);
}
据我了解,您想要的效果是在发生某些情况(例如:将一个项目添加到列表)时滚动到列表的末尾(或可滚动的div)。如果是这样,您可以仅使用纯Javascript和VueJS选择器滚动到容器元素的末尾(甚至是其自身的页面)。
var container = this.$el.querySelector("#container");
container.scrollTop = container.scrollHeight;
我在此提琴中提供了一个有效的示例:https : //jsfiddle.net/my54bhwn
每次将项目添加到列表时,列表都会滚动到末尾以显示新项目。
希望对您有帮助。
我的应用程序(具有复杂的嵌套组件结构)也有同样的需求,但不幸的是,我没有成功使其运行。
最后,我使用了vue-scrollto,效果很好!
如果需要支持IE11和Edge,则可以使用:
如果您不需要支持IE11,则可以执行以下操作(更清晰的代码):