Javascript----scroll事件进度条监听
1、效果
2、代码:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta charset="UTF-8"> <title></title> <style type="text/css"> * { margin: 0; padding: 0; } .container div { width: 100%; height: 600px; text-align: center; } .div { height: 1200px; color: red; } .div1 { background-color: red; } .div2 { background-color: orange; } .div3 { background-color: green; } .div4 { background-color: blue; } .div5 { background-color: black; } .div6 { background-color: pink; } .left-bar { position: fixed; display: none; top: 50%; right: 0; transform: translateY(-50%); } .left-bar ul {} .left-bar ul li { list-style: none; font-size: 16px; color: #00D5FD; height: 58px; width: 86px; } .left-bar ul li span, .left-bar ul li a { display: inline-block; float: left; } .left-bar ul li span { float: left; transform: translateX(90px); transition: linear 0.2s all; color: #00D5FD; } .left-bar ul li:hover span { transform: translateX(0px); transition: linear 0.2s all; color: #00D5FD; } .left-bar ul li a { width: 16px; height: 16px; background-color: #00D5FD; border-radius: 8px; float: right; } </style> </head> <body> <div class="container" id='container'> <div class='div'> <h1>4324324</h1> </div> <div class='div1'> <h1>技术开发</h1> </div> <div class='div2'> <h1>精彩案列</h1> </div> <div class='div3'> <h1>团队介绍</h1> </div> <div class='div4'> <h1>H5技术</h1> </div> <div class='div5' style="color: white"> <h1>合作客户</h1> </div> <div class='div6'> <h1>联系我们</h1> </div> </div> <div class="left-bar" id='left-bar'> <ul> <li> <span id='span1'>技术开发</span> <a href="#" class='a-list1' data-id='1'></a> </li> <li> <span id='span2'>精彩案列</span> <a href="#" class='a-list2' data-id='2'></a> </li> <li> <span id='span3'>团队介绍</span> <a href="#" class='a-list3' data-id='3'></a> </li> <li> <span id='span4'>H5技术</span> <a href="#" class='a-list4' data-id='4'></a> </li> <li> <span id='span5'>合作客户</span> <a href="#" class='a-list5' data-id='5'></a> </li> <li> <span id='span6'>联系我们</span> <a href="#" class='a-list6' data-id='6'></a> </li> </ul> </div> <script type="text/javascript"> /*模仿蓝景官网(https://bluej.cn/newPage/app/Development.html)的侧边导航*/ var container = document.getElementById("container"); var leftBar = document.getElementById("left-bar"); var span1 = document.getElementById("span1"); var span2 = document.getElementById("span2"); var span3 = document.getElementById("span3"); var span4 = document.getElementById("span4"); var span5 = document.getElementById("span5"); var span6 = document.getElementById("span6"); var aList1 = document.querySelector(".a-list1"); var aList2 = document.querySelector(".a-list2"); var aList3 = document.querySelector(".a-list3"); var aList4 = document.querySelector(".a-list4"); var aList5 = document.querySelector(".a-list5"); var aList6 = document.querySelector(".a-list6"); document.body.onscroll = function(event) { event = event || window.event; /* console.log(document.body.scrollTop);*/ var h = document.body.scrollTop; if (h > 100) { leftBar.setAttribute("style", "display:block"); } else { leftBar.setAttribute("style", "display:none"); } if (h >= 200 && h < 500) { span1.setAttribute("style", "transform:translateX(0);"); span2.setAttribute("style", "transform:translateX(90px);"); span3.setAttribute("style", "transform:translateX(90px);"); span4.setAttribute("style", "transform:translateX(90px);"); span5.setAttribute("style", "transform:translateX(90px);"); span6.setAttribute("style", "transform:translateX(90px);"); } else if (h >= 500 && h < 1100) { span1.setAttribute("style", "transform:translateX(90px);"); span2.setAttribute("style", "transform:translateX(0);"); span3.setAttribute("style", "transform:translateX(90px);"); span4.setAttribute("style", "transform:translateX(90px);"); span5.setAttribute("style", "transform:translateX(90px);"); span6.setAttribute("style", "transform:translateX(90px);"); } else if (h >= 1100 && h < 1600) { span1.setAttribute("style", "transform:translateX(90px);"); span2.setAttribute("style", "transform:translateX(90px);"); span3.setAttribute("style", "transform:translateX(0);"); span4.setAttribute("style", "transform:translateX(90px);"); span5.setAttribute("style", "transform:translateX(90px);"); span6.setAttribute("style", "transform:translateX(90px);"); } else if (h >= 1600 && h < 2200) { span1.setAttribute("style", "transform:translateX(90px);"); span2.setAttribute("style", "transform:translateX(90px);"); span3.setAttribute("style", "transform:translateX(90px);"); span4.setAttribute("style", "transform:translateX(0);"); span5.setAttribute("style", "transform:translateX(90px);"); span6.setAttribute("style", "transform:translateX(90px);"); } else if (h >= 2200 && h < 2700) { span1.setAttribute("style", "transform:translateX(90px);"); span2.setAttribute("style", "transform:translateX(90px);"); span3.setAttribute("style", "transform:translateX(90px);"); span4.setAttribute("style", "transform:translateX(90px);"); span5.setAttribute("style", "transform:translateX(0);"); span6.setAttribute("style", "transform:translateX(90px);"); } else if (h >= 2700 && h < 3400) { span1.setAttribute("style", "transform:translateX(90px);"); span2.setAttribute("style", "transform:translateX(90px);"); span3.setAttribute("style", "transform:translateX(90px);"); span4.setAttribute("style", "transform:translateX(90px);"); span5.setAttribute("style", "transform:translateX(90px);"); span6.setAttribute("style", "transform:translateX(0);"); } }; aList1.addEventListener('click', function(event) { event.preventDefault(); var that = this; var h1 = 100; demo(that, h1); }) aList2.addEventListener('click', function(event) { event.preventDefault(); var h1 = 900; var that = this; demo(that, h1); }) aList3.addEventListener('click', function(event) { event.preventDefault(); var h1 = 1300; var that = this; demo(that, h1); }) aList4.addEventListener('click', function(event) { event.preventDefault(); var h1 = 1900; var that = this; demo(that, h1); }) aList5.addEventListener('click', function(event) { event.preventDefault(); var h1 = 2700; var that = this; demo(that, h1); }) aList6.addEventListener('click', function(event) { event.preventDefault(); var h1 = 3100; var that = this; demo(that, h1); }) function demo(that, h1) { var id = that.getAttribute("data-id"); var h1 = parseInt(h1); var h = parseInt(document.body.scrollTop); var interVal = 34; var h2 = h; var setInt = setInterval(function() { var speed = parseInt((h - h1) / 100) > 0 ? parseInt((h - h1) / 100) : -parseInt((h - h1) / 100); if (h2 - h1 >= -interVal && h2 - h1 <= interVal) { //(h2 - h1 <= 10) console.log(h2 + "~=" + h1); clearInterval(setInt); } else if (h2 - h1 > interVal) { h2 -= speed; document.body.scrollTop = h2; console.log(h2 + "-->" + h1); } else { h2 += speed; document.body.scrollTop = h2; console.log(h2 + "<--" + h1); } }, 1) } </script> </body> </html>