演示圖
考慮2個情況
一種情況初始狀態下 滾動到在中間區域的時候,這時上半部分看不見的元素就不給字體添加紅色
一種情況是,從頭向下看的.
代碼
1 .ss li { 2 margin: 40px; 3 } 4 <div class="ss"> 5 <ul> 6 <li>sss</li> 7 <li>sss</li> 8 <li>sss</li> 9 <li>sss</li> 10 <li>sss</li> 11 <li>sss</li> 12 <li>sss</li> 13 <li>sss</li> 14 <li>sss</li> 15 <li>sss</li> 16 <li>sss</li> 17 <li>sss</li> 18 <li>sss</li> 19 <li>sss</li> 20 <li>sss</li> 21 <li>sss</li> 22 <li>sss</li> 23 <li>sss</li> 24 <li>sss</li> 25 <li>sss</li> 26 <li>sss</li> 27 </ul> 28 </div>
1 const doct = window.document.documentElement; 2 const el = document.querySelectorAll("li"); 3 window.addEventListener("scroll", () => { 4 el.forEach((v, i) => { 5 /* 6 考慮2個情況 , 一種情況初始狀態下 滾動到在中間區域的時候,這時上半部分看不見的元素就不給字體添加紅色 7 一種情況是,從頭向下看的. 8 */ 9 // 10 if (v.offsetTop > doct.scrollTop && v.offsetTop < doct.clientHeight + doct.scrollTop) { 11 v.style.color = "red";// 給可視區域元素添加紅色 12 } 13 }); 14 });