关于鼠标移动对话框案例中出现的Bug报错

242 阅读1分钟

在上一个案例-可移动的对话框中, 出现了一个bug,当我按下鼠标并拖动对话框时,鼠标距离对话框总有个距离,且永远无法移动到文档的四个角,如下图:

image.png 百度无果以后,自己排查:

  1. 查看js中的代码,因为是按下鼠标并拖动时,才出现的情况,所以思考是不是公式写错,或者我写的公式逻辑上有误,排查以后发现不是;

仔细查看有问题的页面,发现对话框弹出来以后,就会有滚动条。 image.png 固第二个排查思路是检查CSS样式。 因为CSS样式写的很多,排查起来很困难,一度想放弃算了。但是,还是想想而已。 最后定位这段样式

 .login{
            width: 400px;
            height: 220px;
            position: fixed;
            border-radius: 30px;
            background: #ffffff;
            box-shadow: 0px 0px 20px #ddd;
            z-index: 9999; 
            transform: translate(110%, 80%);
            text-align: center;
            position: relative;
            margin: 300px auto;
            display: none;
        }
  • 发现自己写了两个position,为了让盒子可以在文档流中自由移动,所以position要设置成fixed或者absolute。注释掉 position: relative;注释完以后,右侧和下方的滑动条不见了。

  • 关于鼠标跟盒子之间一直有个距离,我一开始以为是哪个地方的height设置了,后面发现即使注释了,也不影响这个bug的出现。最后问题定位在 margin: 300px auto;是我在盒子固定不动时,想着让他水平居中,而设置了margin,结果就导致了数据距离盒子有一段距离。