scroll事件及其应用

tech2024-10-21  5

scroll事件及其应用

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> * { margin: 0; padding: 0; } ul li { height: 600px; border: 1px solid #ccc; list-style: none; } .header { height: 500px; background-color: red; } ol { list-style: none; width: 700px; display: flex; margin: 0 auto; position: sticky; top: 0; text-align: center; } ol li { flex: 1; cursor: pointer; } .backTop { position: fixed; right: 120px; bottom: 120px; padding: 20px; border: 1px solid #ccc; cursor: pointer; } </style> </head> <body> <div class="header"></div> <ol> <li><a>1</a></li> <li><a>2</a></li> <li><a>3</a></li> <li><a>4</a></li> <li><a>5</a></li> <li><a>6</a></li> <li><a>7</a></li> <li><a>8</a></li> <li><a>9</a></li> <li><a>10</a></li> <li><a>11</a></li> <li><a>12</a></li> </ol> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <li>6</li> <li>7</li> <li>8</li> <li>9</li> <li>10</li> <li>11</li> <li>12</li> </ul> <div id="backTop" class="backTop">回到顶部</div> <script> var backTop = document.querySelector("#backTop") //获取页面的高度 var pageHeight = document.body.clientHeight //获取视口高度 let clientHeight = document.documentElement.clientHeight; let timer = null; //scroll 事件 当页面卷动值发送变化的时候触发 document.onscroll = function() { // console.log(1111); //兼容IE浏览器 var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; // console.log(pageHeight - clientHeight - scrollTop); //判断是否滚动到页面底部了 if (pageHeight - clientHeight - scrollTop < 300) { clearTimeout(timer); //为了不让浏览器频繁触发一个已经设置完成的事件 timer = setTimeout(function() { console.log(1); backTop.style.display = 'block' }, 1000) //节流模式 } else { backTop.style.display = 'none' } } </script> </body> </html> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> * { margin: 0; padding: 0; } ul li { height: 600px; border: 1px solid #ccc; list-style: none; } .header { height: 500px; background-color: red; } ol { list-style: none; width: 1200px; display: flex; margin: 0 auto; position: sticky; top: 0; text-align: center; } ol li { flex: 1; cursor: pointer; } </style> </head> <body> <div class="header"></div> <ol> <li><a>1</a></li> <li><a>2</a></li> <li><a>3</a></li> <li><a>4</a></li> <li><a>5</a></li> <li><a>6</a></li> <li><a>7</a></li> <li><a>8</a></li> <li><a>9</a></li> <li><a>10</a></li> <li><a>11</a></li> <li><a>12</a></li> </ol> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <li>6</li> <li>7</li> <li>8</li> <li>9</li> <li>10</li> <li>11</li> <li>12</li> </ul> <script> //scrollTop 获取页面的卷动值(滚动值) //document.documentElement.scrollTop||document.body.scrollTop // setTimeout(function() { // //如果要设置 请两条分开书写 // document.documentElement.scrollTop = 4000; // document.body.scrollTop = 4000; // }, 3000) //获取的所有a标签 //将伪数组转化为数组 以便使用数组的方法 let arr = Array.from(document.querySelectorAll("a")); arr.forEach(function(value, index) { value.onclick = function() { // console.log(index); document.documentElement.scrollTop = 500 + 21 + index * 602 } }) </script> </body> </html>
最新回复(0)