scrollTop()判断垂直滚动条判断是否下滑到底问题
window.onload = function () { var info = document.getElementById("info"); var inputs = document.getElementsByTagName("input"); info.onscroll = function () { // alert(info.scrollHeight); if(info.scrollHeight - info.scrollTop === info.clientHeight){ inputs[0].disabled = false; inputs[1].disabled = false; } }; };
<h3>欢迎用户注册</h3> <p id="info"> 尊敬的用户,请仔细阅读以下协议,如果你不仔细阅读就不能注册 ....... </p> 我已仔细阅读协议,确认同意 <input type="checkbox" disabled="disabled"> <input type="submit" value="提交" disabled="disabled">
本来效果应该是滚动条滑到最底部,复选框和提交按钮才能使用,但是代码写完测试时发现无法生效,挨个打印.scrollTop 。 info.clientHeight和 scrollHeight的值后发现info.scrollTop的值为小数,
后改为
1 if( info.scrollTop + info.clientHeight + 1 >=info.scrollHeight && info.scrollHeight>info.scrollTop){ 2 inputs[0].disabled = false; 3 inputs[1].disabled = false; 4 } 5 } 6 };
百度看完别人的博客后所得:
随着市面上各种高分屏,高DPI,都会出现这样的问题
设计师的电脑真香,2K屏
他毕竟工作在抽象的绘图空间上的,px的概念已经从最初的屏幕物理像素变成了一个长度单位,随着你屏幕dpi的不同,一个px所代表的真实像素数也不同。所以现代的2D渲染系统都是以浮点数定义坐标的。
也就是说,假如我设高为100px,那么在所有分辨率的屏幕上显示出来的高度未必相同
DPI不是分辨率。举个栗子,MBP的视网膜屏分辨率没提高,但dpi高了。
document.body.scrollTop 设置上去的像素并不一定是最终的物理像素,另外可能需要留意的一点是,似乎目前有的浏览器并不支持小数像素值。
你忘记老师说过了?计算机无法准确的存储整数,scrollTop=scrollTop+1px,加的实际上是一个大约是1的数。
参考链接:https://www.joynop.com/p/171.html
浙公网安备 33010602011771号