大致实现思路 第一个区县装载数据,然后根据滚动事件,滚到哪层时,加载数据。
关键点就是当当前视口的高度+滚到高度>当前层的高度时 装载数据
其中各个层的高度范围可以用swicth来区分 注意switch(true),
top = document.documentElement.scrollTop || document.body.scrollTop; //滚动高度+视口的高度>当前层的高度的话,要显示。 var cl = top + base.getViewPort().pageHeight; switch(true) { case cl < areaB1.offsetHeight + areaB1.offsetTop && cl > areaB1.offsetTop: if(!areaB1.classList.contains("areaFlag")) { areaB1.classList.add("areaFlag"); areaB1.innerHTML = "b1"; } break; case cl < areaB2.offsetHeight + areaB2.offsetTop && cl > areaB2.offsetTop: if(!areaB2.classList.contains("areaFlag")) { areaB2.classList.add("areaFlag"); areaB2.innerHTML = "b2"; } break; case cl < areaC1.offsetHeight + areaC1.offsetTop && cl > areaC1.offsetTop: if(!areaC1.classList.contains("areaFlag")) { areaC1.classList.add("areaFlag"); areaC1.innerHTML = "c1"; } break; case cl < areaC2.offsetHeight + areaC2.offsetTop && cl > areaC2.offsetTop: if(!areaC2.classList.contains("areaFlag")) { areaC2.classList.add("areaFlag"); areaC2.innerHTML = "c2"; } break; case cl < areaD1.offsetHeight + areaD1.offsetTop && cl > areaD1.offsetTop: if(!areaD1.classList.contains("areaFlag")) { areaD1.classList.add("areaFlag"); areaD1.innerHTML = "d1"; } break; case cl < areaD2.offsetHeight + areaD2.offsetTop && cl > areaD2.offsetTop: if(!areaD2.classList.contains("areaFlag")) { areaD2.classList.add("areaFlag"); areaD2.innerHTML = "d2"; } break; }
你只需将对应的 数据装载进去即可 。
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <title>Document</title> <style type="text/css"> * { margin: 0; padding: 0; } #areaA, #areaB1, #areaB2, #areaC1, #areaC2, #areaD1, #areaD2 { height: 1100px; margin: 0 auto; white-space: nowrap; overflow: auto; background: gray; } </style> </head> <body> <h1>北A区分布如下</h1> <div id="areaA"> <div class="areaA13"></div> <div class="areaA12"></div> <div class="areaA11"></div> <div class="areaA10"></div> <div class="areaA9"></div> <div class="areaA8"></div> <div class="areaA7"></div> <div class="areaA6"></div> <div class="areaA5"></div> <div class="areaA4"></div> <div class="areaA3"></div> <div class="areaA2"></div> <div class="areaA1"></div> </div> <h1>北B1(西边 永久)区分布如下</h1> <div id="areaB1"> <div class="areaB113"></div> <div class="areaB112"></div> <div class="areaB111"></div> <div class="areaB110"></div> <div class="areaB19"></div> <div class="areaB18"></div> <div class="areaB17"></div> <div class="areaB16"></div> <div class="areaB15"></div> <div class="areaB14"></div> <div class="areaB13"></div> <div class="areaB12"></div> <div class="areaB11"></div> </div> <h1>北B2(东边 永久)区分布如下</h1> <div id="areaB2"> <div class="areaB213"></div> <div class="areaB212"></div> <div class="areaB211"></div> <div class="areaB210"></div> <div class="areaB29"></div> <div class="areaB28"></div> <div class="areaB27"></div> <div class="areaB26"></div> <div class="areaB25"></div> <div class="areaB24"></div> <div class="areaB23"></div> <div class="areaB22"></div> <div class="areaB21"></div> </div> <h1>北C1区(西边、永久)分布如下</h1> <div id="areaC1"> <div class="areaC113"></div> <div class="areaC112"></div> <div class="areaC111"></div> <div class="areaC110"></div> <div class="areaC19"></div> <div class="areaC18"></div> <div class="areaC17"></div> <div class="areaC16"></div> <div class="areaC15"></div> <div class="areaC14"></div> <div class="areaC13"></div> <div class="areaC12"></div> <div class="areaC11"></div> </div> <h1>北C2区(东边、永久)分布如下</h1> <div id="areaC2"> <div class="areaC213"></div> <div class="areaC212"></div> <div class="areaC211"></div> <div class="areaC210"></div> <div class="areaC29"></div> <div class="areaC28"></div> <div class="areaC27"></div> <div class="areaC26"></div> <div class="areaC25"></div> <div class="areaC24"></div> <div class="areaC23"></div> <div class="areaC22"></div> <div class="areaC21"></div> </div> <h1>北D1区(西边、短期)分布如下</h1> <div id="areaD1"> <div class="areaD113"></div> <div class="areaD112"></div> <div class="areaD111"></div> <div class="areaD110"></div> <div class="areaD19"></div> <div class="areaD18"></div> <div class="areaD17"></div> <div class="areaD16"></div> <div class="areaD15"></div> <div class="areaD14"></div> <div class="areaD13"></div> <div class="areaD12"></div> <div class="areaD11"></div> </div> <h1>北D2区(东边、短期)分布如下</h1> <div id="areaD2"> <div class="areaD213"></div> <div class="areaD212"></div> <div class="areaD211"></div> <div class="areaD210"></div> <div class="areaD29"></div> <div class="areaD28"></div> <div class="areaD27"></div> <div class="areaD26"></div> <div class="areaD25"></div> <div class="areaD24"></div> <div class="areaD23"></div> <div class="areaD22"></div> <div class="areaD21"></div> </div> <script src="js/Base.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> var base = new Base(), areaA = base.getDom("areaA"), areaB1 = base.getDom("areaB1"), areaB2 = base.getDom("areaB2"), areaC1 = base.getDom("areaC1"), areaC2 = base.getDom("areaC2"), areaD1 = base.getDom("areaD1"), areaD2 = base.getDom("areaD2"); areaA.innerHTML = "a"; window.onscroll = function(event) { var top = ""; scrollBox(); function scrollBox() { top = document.documentElement.scrollTop || document.body.scrollTop; //滚动高度+视口的高度>当前层的高度的话,要显示。 var cl = top + base.getViewPort().pageHeight; switch(true) { case cl < areaB1.offsetHeight + areaB1.offsetTop && cl > areaB1.offsetTop: if(!areaB1.classList.contains("areaFlag")) { areaB1.classList.add("areaFlag"); areaB1.innerHTML = "b1"; } break; case cl < areaB2.offsetHeight + areaB2.offsetTop && cl > areaB2.offsetTop: if(!areaB2.classList.contains("areaFlag")) { areaB2.classList.add("areaFlag"); areaB2.innerHTML = "b2"; } break; case cl < areaC1.offsetHeight + areaC1.offsetTop && cl > areaC1.offsetTop: if(!areaC1.classList.contains("areaFlag")) { areaC1.classList.add("areaFlag"); areaC1.innerHTML = "c1"; } break; case cl < areaC2.offsetHeight + areaC2.offsetTop && cl > areaC2.offsetTop: if(!areaC2.classList.contains("areaFlag")) { areaC2.classList.add("areaFlag"); areaC2.innerHTML = "c2"; } break; case cl < areaD1.offsetHeight + areaD1.offsetTop && cl > areaD1.offsetTop: if(!areaD1.classList.contains("areaFlag")) { areaD1.classList.add("areaFlag"); areaD1.innerHTML = "d1"; } break; case cl < areaD2.offsetHeight + areaD2.offsetTop && cl > areaD2.offsetTop: if(!areaD2.classList.contains("areaFlag")) { areaD2.classList.add("areaFlag"); areaD2.innerHTML = "d2"; } break; } } } //end scroll </script> </body> </html>