vue 实现聊天框滚动到底

vue

在需要出现滚动条的 DOM上添加 v-scroll 属性:

<div class="chat-box" v-scroll="{auto: true}">

<div class="dialog-box">

<div class='' v-for="item in msgList" :key="item">

<div v-html="item.content"></div>

</div>

</div>

</div>

编写自定义指令 scroll

<script>

export default {

 ...

directives: {

scroll: {

bind (el, binding, vnode) {

const pause = (e) => {

let auto = binding.value ? binding.value.auto : false

let scrolled = el.scrollTop + el.clientHeight + 1 < el.scrollHeight

let timeout

window.clearTimeout(timeout)

timeout = setTimeout(() => {

if (auto && scrolled) {

el.setAttribute('v-scroll2-manually', 'yes')

} else if (auto && !scrolled) {

el.setAttribute('v-scroll2-manually', '')

} else {

el.removeEventListener('scroll', pause)

}

}, 600)

}

el.addEventListener('scroll', pause)

},

update (el, binding, vnode) {

if (!el.getAttribute('v-scroll2-manually')) {

vnode.context.$nextTick(() => {

el.scrollTop = el.scrollHeight - el.clientHeight

})

}

}

}

}

...

}

</script>

以上是 vue 实现聊天框滚动到底 的全部内容, 来源链接: utcz.com/z/379794.html

回到顶部