ã¨ã³ãã¬ã¹ãªãã¼ã¸
çµããã®ãªããã¼ã¸ãä½ã£ã¦ãã ããã訪åè ãæå¾ã¾ã§ã¹ã¯ãã¼ã«ããã¨ããç¾å¨ã®æ¥ä»ãããã¹ãã«èªå追å ãã¾ã(訪åè ãããã¹ã¯ãã¼ã«ã§ããããã«)ã
ãã®ããã«ãªãã¾ã:
ã¹ã¯ãã¼ã«ã«é¢ãã¦ï¼ã¤ã®éè¦ãªç¹å¾´ã«ã¤ãã¦çæãã¦ãã ãã:
- ã¹ã¯ãã¼ã«ã¯ âå¼¾ã¿â ã¾ãã ä¸é¨ã®ãã©ã¦ã¶/ããã¤ã¹ã§ã¯ãããã¥ã¡ã³ãã®éå§ã¾ãã¯çµäºãè¶ ãã¦ã¹ã¯ãã¼ã«ãããã¨ãã§ãã¾ã(ä¸ã«ç©ºç½ã表示ããããã®å¾ããã¥ã¡ã³ãã¯èªåçã«éå¸¸ã« âæ»ããã¾ãâ)ã
- ã¹ã¯ãã¼ã«ã¯ç²¾å¯ã§ã¯ããã¾ããã ãã¼ã¸ãæå¾ã¾ã§ã¹ã¯ãã¼ã«ããã¨ããå®éã«ã¯æ¬å½ã®ããã¥ã¡ã³ãã®åºãã 0-50px ç¨åº¦é¢ãã¦ããå¯è½æ§ãããã¾ãã
ãããã£ã¦ãâæå¾ã¾ã§ã¹ã¯ãã¼ã«ããâ ã¨ã¯ã訪åè ã¯ããã¥ã¡ã³ãã®åºãã 100px 以ä¸ã¯é¢ãã¦ããªããã¨ãæå³ãã¾ãã
P.S. å®è·µã§ã¯ãâããå¤ãã®ã¡ãã»ã¼ã¸â ã âããå¤ãã®ååâ ã表示ãããã§ãã
ãã®è§£æ±ºçã®ã³ã¢é¨åã¯ããã¼ã¸ã®æ«å°¾ã«ããã¨ãã«ãæ¥ä»æ å ±ããã¼ã¸ã«è¿½å (ãããã¯ãå®è·µã§ã¯ããå¤ãã®ãã®ãèªã¿è¾¼ã)ãã颿°ã§ãã
ç§ãã¡ã¯ããããããã«å¼ã³ã ããããwindow.onscroll ãã³ãã©ã¨ãã¦è¿½å ãããã¨ãã§ãã¾ãã
æãéè¦ãªåé¡ã¯ãâãã¼ã¸ãæ«å°¾ã¾ã§ã¹ã¯ãã¼ã«ãããããã©ã®ããã«ãã¦æ¤åºãããï¼â ã§ãã
ã¦ã£ã³ãã¦ç¸å¯¾åº§æ¨ã使ãã¾ãããã
ããã¥ã¡ã³ã㯠<html> ã¿ã°ãã¤ã¾ã document.documentElement ã®ä¸ã«è¡¨ç¾ããã¾ãã
document.documentElement.getBoundingClientRect() ã§ããã¥ã¡ã³ãå
¨ä½ã®ã¦ã£ã³ãã¦ç¸å¯¾åº§æ¨ãå¾ããã¨ãã§ãã¾ããããã¦ãbottom ããããã£ã¯ããã¥ã¡ã³ãã®çµããã®ã¦ã£ã³ãã¦ç¸å¯¾åº§æ¨ã§ãã
ä¾ãã°ãHTML ããã¥ã¡ã³ãå ¨ä½ã®é«ãã 2000px ã®å ´åã¯:
// ãã¼ã¸ã®ãããã«ããã¨ã
// ã¦ã£ã³ãã¦ç¸å¯¾ã®ããã㯠0 ã§ã
document.documentElement.getBoundingClientRect().top = 0
// ã¦ã£ã³ãã¦ç¸å¯¾ã®åº = 2000
// ããã¥ã¡ã³ããé·ãã®ã§ãããããã¦ã£ã³ãã¦ã®åºãã¯ããã«è¶
ãã¦ãã¾ã
document.documentElement.getBoundingClientRect().bottom = 2000
ãã 500px ä¸ã«ã¹ã¯ãã¼ã«ããã¨:
// ããã¥ã¡ã³ããããã¯ã¦ã£ã³ãã¦ãã 500px ä¸ã«ããã¾ã
document.documentElement.getBoundingClientRect().top = -500
// ããã¥ã¡ã³ãã®åºã¯ 500px è¿ã
document.documentElement.getBoundingClientRect().bottom = 1500
æå¾ã¾ã§ã¹ã¯ãã¼ã«ããã¨ããã¦ã£ã³ãã¦ã®é«ãã 600px ã¨ä»®å®ããã¨:
document.documentElement.getBoundingClientRect().top = -1400
document.documentElement.getBoundingClientRect().bottom = 600
bottom 㯠0 ã«ã¯ãªããªããã¨ã«æ³¨æãã¦ãã ããããªããªããæ±ºãã¦ã¦ã£ã³ãã¦ã®ãããã«ã¯å°éããªãããã§ããåºã®åº§æ¨ã®æãå°ããå¶éã¯ã¦ã£ã³ãã¦ã®é«ãã§ããã以ä¸ã¹ã¯ãã¼ã«ãããã¨ã¯ã§ãã¾ããã
ã¾ããã¦ã£ã³ãã¦ã®é«ã㯠document.documentElement.clientHeight ã§ãã
ç§ãã¡ã¯ãããã¥ã¡ã³ãã®åºé¨ãããããd 100px 以ä¸ã¯é¢ãã¦ãã¦ã»ãããªãã§ãã
ãããã£ã¦ã颿°ã¯æ¬¡ã®ããã«ãªãã¾ã:
function populate() {
while(true) {
// document bottom
let windowRelativeBottom = document.documentElement.getBoundingClientRect().bottom;
// ããã¦ã£ã³ãã¦ã®é«ã + 100px ããã大ããå ´åããã¼ã¸ã®çµããã§ã¯ããã¾ãã
// (ä¸ã®ä¾ã®éãã大ãã bottom ã¯ãã£ã¨ã¹ã¯ãã¼ã«ãå¿
è¦ã§ãããã¨ãæå³ãã¾ã
if (windowRelativeBottom > document.documentElement.clientHeight + 100) break;
// ãã以å¤ã¯ãã¼ã¿ã追å ãã
document.body.insertAdjacentHTML("beforeend", `<p>Date: ${new Date()}</p>`);
}
}