スクロール1(ステップ28)
学ぶべき概念。
スクロール
応答ページのスクロール
チャレンジ1
エッジなしページ
重要度:5
果てしないページを作成してください.訪問者が最後までスクロールすると、現在の日付-時刻がテキストに自動的に追加され、訪問者がスクロールする回数が増えるようになります.
イニシャルコード
<!DOCTYPE html>
<html lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<div id='date'>Scroll me</div>
<p>1</p>
<p>1</p>
<p>1</p>
<p>1</p>
<p>1</p>
<p>1</p>
</body>
<script>
let dateTemplate = (date)=>`<p>Date: ${date}</p>`
let dateDom = document.getElementById('date')
window.addEventListener('scroll',function(event){
dateDom.innerHTML += dateTemplate(new Date());
})
</script>
</html>
ブラウザのスクロールサイズが小さく、<p>
のラベルを強引に作成し、今からスクロールすればいいです.課題1修正
デフォルトのブラウザ画面と同じサイズのコンテンツを作成し、スクロール中に追加のコンテンツを生成することを目的としています.
document.body.clientHeight VS window.innerHeight
document.body.ClientHeight:bodyラベル内のclientが持つ高さ.
例えば、現在の身体部分の高さ(
document.body.clientHeight
)は右側が206である.window.InnerHeight:ブラウザ画面全体で、F 12などの開発ツールを除く
window.OuterHeight:開発者ツール(F 12など)の一部をブラウザ画面全体に含める
Ex)次の図は、ブラウザの開発者ツールが占める割合を示しています.これらのツールの数字は小さいので、拡大して数字を見てください.
開発者ツール画面のブラウザアプリケーションの高さに応じて、
window.innerHeight
の値が変化することがわかります.window.outerHeight
は固定されています(もちろん、ノートパソコンブラウザ全体のサイズを縮小するとwindow.outherHeightが小さくなります.)
修正課題1
<!DOCTYPE html>
<html lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<div id='date'>Scroll me</div>
</body>
<script>
let dateTemplate = (date)=>`<p>Date: ${date}</p>`
let dateDom = document.getElementById('date')
while(document.body.clientHeight<window.innerHeight)
{
dateDom.innerHTML += dateTemplate(new Date());
}
window.addEventListener('scroll',function(event){
dateDom.innerHTML += dateTemplate(new Date());
})
</script>
</html>
追加されたセクションwhile(document.body.clientHeight<window.innerHeight)
{
dateDom.innerHTML += dateTemplate(new Date());
}
既存のbodyのコンテンツを最背面のheight部分まで生成し続け、無限のページをスクロールします.InsertAdjacentHTMLを使用してコードを変更する
<!DOCTYPE html>
<html lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<div id='date'>Scroll me</div>
</body>
<script>
let dateTemplate = (date)=>`<p>Date: ${date}</p>`
let dateDom = document.getElementById('date')
while(document.body.clientHeight<window.innerHeight)
{
dateDom.innerHTML += dateTemplate(new Date());
}
window.addEventListener('scroll',function(event){
dateDom.insertAdjacentHTML('beforeend',dateTemplate(new Date()))
})
</script>
</html>
このように扱うこともできます.に感銘を与える
よく考えてみると、私の開発をスクロールするとき、スクロールが進むにつれて、過去に書いた文章がスクロールするときに現れ続けることがわかります.急にこんなことになるのではないかと思った.
フィードバック
스크롤할 때마다 Date를 담은 DOM 요소를 추가하는 것으로 보이는데, 이렇게 되면 위쪽 방향으로 스크롤할 때도 요소가 추가되지않을까요?
の意見で修正します.document.documentElement.scrollTop
この試みで修正します.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<div id='date'>Scroll me</div>
</body>
<script>
let dateTemplate = (date)=>`<p>Date: ${date}</p>`
let dateDom = document.getElementById('date')
while(document.body.clientHeight<window.innerHeight)
{
dateDom.innerHTML += dateTemplate(new Date());
}
let state = 0;
window.addEventListener('scroll',function(event){
console.log(document.documentElement.scrollTop,state)
state = document.documentElement.scrollTop
})
</script>
</html>
実際にはdocument.documentElement.scrollTop,state
と比較してスクロールアップ時とスクロールダウン時の値には大きさの違いがあります.
次はdocumentdocumentElement.scrollTop > state
上に上がるとdocumentdocumentElement.scrollTop
<!DOCTYPE html>
<html lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<div id='date'>Scroll me</div>
</body>
<script>
let dateTemplate = (date)=>`<p>Date: ${date}</p>`
let dateDom = document.getElementById('date')
while(document.body.clientHeight<window.innerHeight)
{
dateDom.innerHTML += dateTemplate(new Date());
}
let state = 0;
window.addEventListener('scroll',function(event){
if(document.documentElement.scrollTop>state)
{
state = document.documentElement.scrollTop
dateDom.insertAdjacentHTML('beforeend',dateTemplate(new Date()))
}
})
</script>
</html>
このようにif文で条件を設定すると、タグの追加はスクロールダウン時のみ行われます.私たちが行ってくれたpul 8219に感謝します.
Reference
この問題について(スクロール1(ステップ28)), 我々は、より多くの情報をここで見つけました https://velog.io/@khw970421/스크롤-step-28テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol