[js] 判断滚动条是否滚动到底部
var QM = (function() { var exports = {}; function scrollToBottom(func) { /** * @判断是否滚动到底部 * @author qingming */ var cHeight, sHeight, sTop; if (document.compatMode == "BackCompat") { //主要是为了兼容ie cHeight = document.body.clientHeight; sHeight = document.body.scrollHeight; } else { //document.compatMode == "CSS1Compat" cHeight = document.documentElement.clientHeight; sHeight = document.documentElement.scrollHeight; } //console.log(cHeight); //console.log(sHeight); window.addEventListener("scroll", function(event) { //scrollLeft、scrollTop很不稳定,就算在firefox和chrome之间,也略有差别 sTop = document.documentElement.scrollTop == 0 ? document.body.scrollTop : document.documentElement.scrollTop; //sTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop); //sTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop; //console.log(sTop); sTop = Math.ceil(sTop); //console.log(sTop); //element.scrollHeight - element.scrollTop === element.clientHeight if (sTop + cHeight == sHeight) { func(); } }); } exports.scrollToBottom = scrollToBottom; return exports; })(); // QM.scrollToBottom(function() { // console.log('使用方法') // });
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title></title> <style> html, body, ul, li { margin: 0; padding: 0; border: 0; list-style: none; overflow: auto; } #a { height: 500px; display: block; } #b { height: 2000px; } </style> </head> <body> <img id='a' src='img/1.jpg' width="100%"> <div id='b'></div> <script> var cHeight, sHeight, sTop; var a = document.getElementById("a"); var h = document.getElementById("a").offsetHeight; if (document.compatMode == "BackCompat") { cHeight = document.body.clientHeight; sHeight = document.body.scrollHeight; } else { cHeight = document.documentElement.clientHeight; sHeight = document.documentElement.scrollHeight; } window.addEventListener("scroll", function(event) { sTop = document.documentElement.scrollTop == 0 ? document.body.scrollTop : document.documentElement.scrollTop; sTop = Math.ceil(sTop); if (sTop > h * 0.5) { a.src = 'img/5.jpg'; a.style.transform = 'scale(0.05)'; } else if (h * 0.38 < sTop && sTop < h * 0.5) { a.src = 'img/4.jpg'; a.style.transform = 'scale(0.2)'; } else if (h * 0.35 < sTop && sTop < h * 0.38) { a.src = 'img/3.jpg'; a.style.transform = 'scale(0.28)'; } else if (h * 0.2 < sTop && sTop < h * 0.35) { a.src = 'img/2.jpg'; a.style.transform = 'scale(0.6)'; } else if (sTop < h * 0.2) { a.src = 'img/1.jpg'; a.style.transform = 'scale(1)'; } }); </script> </body> </html>