首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >挠曲箱力卷至底

挠曲箱力卷至底
EN

Stack Overflow用户
提问于 2017-02-07 05:42:19
回答 3查看 1.4K关注 0票数 0

我正在尝试构建一个跨浏览器工作的聊天UI。我遇到了一个问题,在页面加载和添加新消息时,我无法让chat-body div一直滚动到底部。

在为scrollTop div记录chat-body时,即使滚动,它也总是返回0。因此,使用JavaScript似乎是不可能的;无论如何,这是首选的。

我怎么才能让这个div一直滚动到底部呢?

演示

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-02-07 16:18:44

修复是多姆的答案和萨米桑达的答案的组合,最后的解决方案是添加以下方法,并在addMessage()mounted()中调用它。

代码语言:javascript
复制
scrollToBottom(force) {
  this.$nextTick(function () {
    let chat = document.getElementById('chat');
    let shouldScroll = chat.scrollHeight - chat.clientHeight <= chat.scrollTop + 1;

    if (force || shouldScroll) {
      chat.scrollTop = chat.scrollHeight - chat.clientHeight;
    }
  });
}

演示

票数 0
EN

Stack Overflow用户

发布于 2017-02-07 06:53:23

从您的演示中,可滚动的div实际上是.chat-content而不是.chat-body

您必须查看滚动位置以获得正确的div。对于后代,您可以添加一个在mounted()期间运行的方法

代码语言:javascript
复制
new Vue({
  el: '#app',

  data: {...},

  mounted() {
    this.stubMessages();
    this.setScrollPos();
    this.watchScroll();
  },

  methods: {
    setScrollPos(){
      var cBody = document.querySelector('.chat-content');
      cBody.scrollTop = 99999999; // arbitrary/calculated value to get to the end of the div
    },

    watchScroll() {
      var cBody = document.querySelector('.chat-content');
      // watch scroll position of content area
      cBody.addEventListener('scroll', function(){
        console.log('scroll', cBody.scrollTop);
      });
    },

    stubMessages() {...},

    addMessage() {...}
  }
});
票数 1
EN

Stack Overflow用户

发布于 2017-02-07 07:16:34

在这里,我添加了一个名为scrollDown的方法,它用于在添加新消息时将滚动设置为向下。我在addMessage()中调用了这个函数

代码语言:javascript
复制
methods: {

scrollDown() {
    var chtbody = document.querySelectorAll('.chat-content')[0];
    chtbody.scrollTop = chtbody.scrollHeight;
  },
  stubMessages() {...
  },

  addMessage() {
    this.messages.push({
      text: this.message,
      time: moment()
    });
    this.scrollDown();
    this.message = '';

  }

}

});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42082559

复制
相关文章

相似问题

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