LINE처럼 요소를 추가하면 자동으로 아래로 스크롤
13979 단어 JavaScriptrabeetech
개요
하고 싶은 일
메모
실제로 썼을 때는 리오였어요.js,Pug로 썼기 때문에 조금 간결하지만 대체적으로 하는 일은 똑같아서 참고할 수 있습니다
실제로 해봤어요.
코드
index.html
index.html
<form id="form" action="" method="get" accept-charset="utf-8">
<input type="text" name="input" id="input" value="" />
<button id="button" type="submit">追加</button>
</form>
<div id="container" class='container'>
</div>
main.cssmain.css
.container {
height: 300px;
background-color: gray;
overflow: scroll;
padding: 2px 4px;
}
.child {
height: 55px;
width: 90%;
background-color: white;
border: 1px black solid;
border-radius: 8px;
margin-bottom: 4px;
}
main.jsmain.js
window.onload = function() {
var form = document.getElementById('form');
var input = document.getElementById('input');
var container = document.getElementById('container');
// チャットを追加する
var addChat = () => {
var text = input.value;
var div = document.createElement("div");
div.innerText = text;
div.classList.add('child');
container.appendChild(div);
input.value = '';
};
// 下までスクロールする
var scrollToBottom = () => {
container.scrollTop = container.scrollHeight;
};
// 一番下までスクロールしているかどうか
var isScrollBottom = () => {
return container.scrollHeight === container.scrollTop + container.offsetHeight;
};
form.addEventListener('submit', (e) => {
e.preventDefault();
e.stopPropagation();
// 一番下までスクロールされていれば追加後も一番下までスクロールする
if (isScrollBottom()) {
addChat();
scrollToBottom();
}
// 一番下までスクロールされていなければスクロールしない
else {
addChat();
}
});
};
해설
overflow: scroll;
overflow: scroll;
Element.scrollTop
> 要素の内容が垂直にスクロールするピクセル数を取得または設定します
라고 쓰여 있다. > 任意の整数値で設定することができます
> 指定された値が、コンテンツがスクロールできる最大値を超えていたら、 scrollTop は最大値に設定されます
이기 때문에 채팅 영역의 스크롤 범위의 높이scrollHeight
를 입력하여 맨 아래로 스크롤끝까지 스크롤 여부
총결산
Reference
이 문제에 관하여(LINE처럼 요소를 추가하면 자동으로 아래로 스크롤), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/cho_kin/articles/scroll-to-bottom텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)