吃饭睡觉写bug

导航

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

                  https://www.zhihu.com/question/53978105/answer/137363368

                  https://www.imooc.com/qadetail/255473?t=416948

posted on 2020-12-16 09:55  吃饭睡觉写bug  阅读(183)  评论(0)    收藏  举报