博客
关于我
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 字符串中特定字符替换,截取
    查看>>
    Python 字符串总结
    查看>>
    python 字符串显示中文_Python字符串开头的b"、u"、r"与中文乱码
    查看>>
    Python 字符串的几种拼装方式
    查看>>
    python 存入数据库bigint_python基础_MySQL的bigint类型
    查看>>
    python 学习 面向对象编程
    查看>>
    Python 学习日记第三篇 -- 字典
    查看>>
    Python 学习笔记(一)Data type
    查看>>
    python 安装echarts
    查看>>
    python 安装opencv及问题解决
    查看>>
    Python 安装程序:“写入文件 C:\Python27\pythonw.exe 时出错“
    查看>>
    Python 安装避坑指南:从入门到进阶
    查看>>
    Python 安装配置详解
    查看>>
    Python 常见的错误类型和继承关系
    查看>>
    python 常量_零基础学Python系列之一:Python的变量与常量
    查看>>
    Python 并发编程
    查看>>
    python 微信扫码登录_python实现微信第三方网站扫码登录(Django)
    查看>>
    Python 快速下载依赖
    查看>>
    Python 接口并发测试详解
    查看>>
    Python 接口自动化 —— requests框架
    查看>>