• 使用js中的(offset,page)实现登录效果


    css内容部分:

    1. *{
    2. padding: 0px;
    3. margin: 0px;
    4. }
    5. li{
    6. list-style: none;
    7. }
    8. a{
    9. text-decoration: none;
    10. }
    11. .bg{
    12. width: 100%;
    13. height: 100%;
    14. position: fixed;
    15. top: 0px;
    16. left:0px;
    17. background: rgb(0,0,0,.4);
    18. z-index: 9998;
    19. display: none;
    20. }
    21. .login{
    22. width: 600px;
    23. height: 300px;
    24. position: fixed;
    25. top:50%;
    26. left:50%;
    27. /* 将登录界面居于浏览器的中央 */
    28. transform: translate(-50%,-50%);
    29. z-index: 9999;
    30. background: #fff;
    31. /* 鼠标在登录界面内部处于的样式 */
    32. display: none;
    33. }
    34. .title{
    35. height: 45px;
    36. line-height: 45px;
    37. text-align: center;
    38. border-bottom: 1px solid #DCDCDC;
    39. position: relative;
    40. cursor: move;
    41. }
    42. .content p{
    43. text-align: center;
    44. line-height: 45px;
    45. }
    46. .title a{
    47. display: block;
    48. position: fixed;
    49. top:2px;
    50. right: 5px;
    51. z-index: 9999;
    52. }

    HTML内容部分:

    1. <!-- 制作登录框 -->
    2. <a href="javascript:;" id="loginA">注册/登录</a>
    3. <!-- 登录弹框 -->
    4. <div class="login">
    5. <div class="title">
    6. 用户登录 <a href="javascript:;" id="close">关闭</a>
    7. </div>
    8. <div class="content">
    9. <p> 用户名:<input type="text" value="" /></p>
    10. <p> 密码:<input type="password" value="" /></p>
    11. <p> <input type="button" value="提交" /></p>
    12. </div>
    13. </div>
    14. <div class="bg"></div>

    js内容部分: (详细介绍)

    注:红色指的是获取元素部分,绿色指的是显示登录部分,蓝色指的是隐藏部分,橙色指的是主要实现内容部分。黑色部分是注释部分。

    //获取元素
                var title=document.querySelector('.title');
                var loginA=document.getElementById('loginA');
                var login=document.querySelector('.login');
                var close=document.getElementById('close');
                var bg=document.querySelector('.bg');

                 // 显示登录框
                loginA.οnclick=function(){
                     login.style.display='block';
                     bg.style.display='block';
                }

                // 隐藏登录框
                close.οnclick=function(){
                login.style.display='none';
                bg.style.display='none';    
                }

                // 移动登录框,只能在title范围内移动该框
                //鼠标移动事件属性是(mousedown)
                //设定监听事件
                title.addEventListener('mousedown',function(e){
              
         // var x=e.pageX-login.offsetLeft;
                    // var y=e.pageY-login.offsetTop;
                    // console.log(x,y);
                    //这样打印出来会出现一个负值,原因是没有解析上面的css中的动画
                    //transform,它所减去的值是按照原来得位置计算的,解决方法为,在上面的式子中
                    //再减去该框子的宽度和高度的一般,直接写值,上面先注释,正确的写法在下方;
                    var x=e.pageX-(login.offsetLeft-300);
                    var y=e.pageY-(login.offsetTop-150);

                    // 计算鼠标移动时,登录框需要移动的距离
                    //这里采用的是鼠标移入,且调用监听事件里面的函数
                    document.addEventListener('mousemove',move);
                    function  move(e){

                        //计算值
                        var newX=e.pageX-x;
                        var newY=e.pageY-y;

                        //因为上面给框添加了左侧,上部值,下方可以不再添加,主要原因是上方减去值,下方若不加上原减去的值,鼠标放置的位置便是在框子的右下角
                        // 非我们所想实现的位置。
                        login.style.left=newX+300+"px";
                        login.style.top=newY+150+"px";
                    }

                        //清除mousemove移动事件
                    document.addEventListener('mouseup',function(){
                        // 清除鼠标移入中的函数move
                        document.removeEventListener('mousemove',move);
                    })
                    
                })

                

    主要实现效果:

     

  • 相关阅读:
    45:第四章:开发文件服务:6:第三方云存储解决方案【阿里云OSS】;(购买OSS服务;开通服务;创建一个Bucket;)
    JavaScript知识点复习--(二)函数高级
    水浸监测新方法,简单实用,你值得拥有!
    vtk对二维图像构造三维
    Valens VA6000 USB2.0延长器
    Sharding-JDBC概述
    python交通数据分析系统 智慧交通 实时监控系统 Flask框架(源码)✅
    kubeadm 搭建 K8s
    跑步耳机排行榜,目前最好的六款跑步耳机
    xsschallenge通关攻略详解
  • 原文地址:https://blog.csdn.net/m0_59505309/article/details/125597792