## 通常時(vue未使用)スクロール下固定
<div class="box">
// content
</div>
<script>
var obj = document.querySelector('.box');
obj.scrollTop = obj.scrollHeight;
</script>
## jQueryでアニメーションでスクロールを下に移動
<div class="box">
// content
</div>
<script>
$(function(){
$('.box').delay(100).animate({
scrollTop: $(document).height()
}, 1000);
});
</script>
## vue.js使用時
– this.$nextTickを使用
– updatedのコールバックで読み込む
<div id="box">
<div v-for="m in messages">
// content
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.min.js"></script>
<script>
new Vue({
el: '#app',
data: {
message: '',
messages: []
},
methods: {
// 省略
scrollToEnd(){
this.$nextTick(() => {
const chatLog = document.getElementById('box');
if (!chatLog) return
chatLog.scrollTop = chatLog.scrollHeight
})
},
mounted(){
// 省略
},
updated(){
this.scrollToEnd();
},
スクロール領域はdivタグで囲っているから、obj.scrollTop = obj.scrollHeight;のままでいけるかと勘違いして少し嵌りました。