博客
关于我
js实现模态框拖拽
阅读量:126 次
发布时间:2019-02-27

本文共 1961 字,大约阅读时间需要 6 分钟。

效果展示和需求分析

效果展示展示了一个完整的登录模态框界面,其中包括登录表单、背景遮罩和关闭按钮。模态框支持以下功能:

  • 点击登录按钮后,登录表单和遮罩层会同时显示
  • 点击关闭按钮后,表单和遮罩层会隐藏
  • 密码输入时支持明文查看或隐藏
  • 表单标题可以通过拖拽移动
  • 鼠标弹起后拖拽结束
  • 需求分析系统需求如下:

  • 登录后显示登录表单和遮罩层
  • 支持明文和隐藏密码显示切换
  • 允许用户拖拽表单标题区域
  • 拖拽结束后自动调整表单位置
  • 代码分析HTML代码

    账号登录

    关闭

    JS代码

    var eyeState = document.querySelector('#eye-state');var pswInput = document.querySelector('#psw');var login = document.querySelector('.login');var loginBg = document.querySelector('#bg');var loginForm = document.querySelector('form');var closeBtn = document.querySelector('.close-btn');var eyeFlag = 0;eyeState.onclick = setEye;login.onclick = goLogin;closeBtn.onclick = leaveLogin;loginForm.children[0].addEventListener('mousedown', dragForm);loginForm.onselectstart = function(e) {    e.preventDefault();};function setEye() {    if (!eyeFlag) {        eyeState.className = 'open';        pswInput.type = 'text';        eyeFlag = 1;    } else {        eyeState.className = 'close';        pswInput.type = 'password';        eyeFlag = 0;    }}function goLogin() {    loginBg.style.visibility = 'visible';    loginForm.style.display = 'block';    login.style.display = 'none';}function leaveLogin() {    loginBg.style.visibility = 'hidden';    loginForm.style.display = 'none';    login.style.display = 'block';}function dragForm(e) {    var x = e.pageX - this.parentNode.offsetLeft;    var y = e.pageY - this.parentNode.offsetTop;    document.addEventListener('mousemove', move);    this.addEventListener('mouseup', function() {        document.removeEventListener('mousemove', move);    });    function move(event) {        loginForm.style.left = event.pageX - x + 'px';        loginForm.style.top = event.pageY - y + 'px';    }}

    分析

  • 密码输入框通过 eyeFlag 变量控制 type 属性和小眼睛图标状态
  • 拖拽效果通过 mousemove 事件绑定给 document 实现
  • mouseup 事件绑定给标题元素确保拖拽结束时移除事件
  • 表单标题区域通过 mousedown 事件实现拖拽效果
  • 密度跟随鼠标实现基于鼠标位置的动态调整
  • 转载地址:http://neqf.baihongyu.com/

    你可能感兴趣的文章
    python | rich,一个无敌的 Python 库!
    查看>>
    python | rlax,一个超强的 强化学习领域 Python 库!
    查看>>
    python | rpyc,一个超实用的 Python 库!
    查看>>
    python | rq,一个无敌的 关于Redis 的Python 库!
    查看>>
    python读取字符串指定位置字符_python要怎么截取指定位置的字符串呢?
    查看>>
    python | scikit-llm,一个神奇的 Python 库!
    查看>>
    python | sentry,一个超酷的 关于错误监控工具 Python 库!
    查看>>
    python | shiv,一个超酷的 打包工具 Python 库!
    查看>>
    python | six,一个神奇的 Python 库!
    查看>>
    Python读取图片的几种方法供net使用
    查看>>
    python | spacy,一个神奇的 Python 库!
    查看>>
    python | sqlmap,一个实用的 Python 库!
    查看>>
    python | sumy,一个超酷的 用于文本摘要的 Python 库!
    查看>>
    python | tiler,一个不可思议的 图像切片重组 Python 库!
    查看>>
    python | tinydb,一个非常厉害的 关于数据库的 Python 库!
    查看>>
    python | tox,一个超强的 自动化测试工具 Python 库!
    查看>>
    python | ttkbootstrap,一个神奇的 Python 库!
    查看>>
    python | unoconv,一个超厉害的 Python 库!
    查看>>
    python | urllib3,一个超强的 Python 库!
    查看>>
    python | webassets,一个超强的 Python 库!
    查看>>