JavaScript实现拖拽盒子效果


Posted in Javascript onFebruary 06, 2020

本文实例为大家分享了JavaScript实现拖拽盒子效果的具体代码,供大家参考,具体内容如下

实现效果:

1.单击关闭,关闭盒子
2.点击左上方‘点击注册',打开盒子
3.鼠标放在盒子上方蓝色区域显示十字
4.点击鼠标不松开就可移动盒子
5.松开鼠标图片暂停

JavaScript实现拖拽盒子效果

实现步骤:

1.在页面最上方设置一个盒子,里面有一个超链接,超链接里面设置href="javascript:void(0);",再点击时不打开网页。

2.再设置一个可以拖拽的盒子,盒子嵌套一个蓝色盒子为的最上方的蓝色区域,蓝色盒子里面两个span标签,里面写‘关闭'和‘可拖拽'。

3.给‘关闭'的盒子注册点击事件,点击后,拖拽盒子样式为none,(不显示)
给最上方的超链接设置点击事件,点击后,拖拽盒子样式为block,(显示)  

4.给上方蓝色盒子设置onmousedown(鼠标点击事件),同时获取鼠标点击位置
离拖拽盒子的距离,为mouseLeft和mouseTop

5.给页面(document)设置onmousemove事件让鼠标的位置分别减去mouseLeft和mouseTop,得到盒子左上角随鼠标移动的坐标,再将坐标赋值给拖拽盒子

6.最后设置onmouseup事件,鼠标松开时页面不移动。即document.onmousemove = null

实现细节:

1.让拖拽盒子居中显示:top:50%;  left: 50%; 
       margin-left :-155px;  margin-top:-155px;
      ( margin-left: -(盒子宽度的一半); 这里盒子宽度300px边框为5px,总宽度310px,
      所以设置-155px, margin-top:-(盒子高度的一半),和宽度同理)

2.var evt = event || window.event;兼容性写法。

代码:

<!DOCTYPE html>
<html>
<head>
 <title>拖拽盒子</title>
 <style type="text/css">
 *{
 margin:0px;
 padding:0px;
 }
 .dropBox{
 width:300px;
 height:300px;
  top:50%;
  left:50%;
  margin-left: -155px;
  margin-top: -155px;
  display: block;
 border: 5px solid #aaa;
 position: absolute;
 }

 .nav{
 width: 100%;
 height:30px;
 background-color: blue;
 opacity: 0.6;
 }
 .nav a{
 font-size:15px;
 color:white;
 }
 .dropBox .box{
 width:300px;
 height:30px;
 position: absolute;
 left:0px;
 top:0px;
 background-color: darkblue;
 opacity: 0.8;
 cursor:move;
 }
 .close{
 float: right;
 color:white;
 font-size: 15px;
 cursor: pointer;
 }
 .move{
 color:white;
 font-size: 15px;
 }
 </style>
 <script type="text/javascript">
 function $(id){
 return document.getElementById(id);
 }
 window.onload = function(){
 var register = $('register');
 var dropBox = $('dropDiv');
 var box = $('box');
 var box2 = $('box2');
 box2.onclick = function(){
  dropBox.style.display = 'none';
 }
 register.onclick = function(){
  dropBox.style.display = 'block';
 }
  box.onmousedown = function(event){
  var evt = event || window.event;
  var mouseLeft = evt.clientX - dropBox.offsetLeft;
  var mouseTop = evt.clientY - dropBox.offsetTop;
  document.onmousemove = function(event){
  var evt = event || window.event;
  var x = evt.clientX - mouseLeft;
  var y = evt.clientY - mouseTop;
  dropBox.style.left = x + 155 + 'px';
  dropBox.style.top = y + 155 + 'px';
  }
  document.onmouseup = function (){
 document.onmousemove = null;
  }
  }

 }



 </script>
</head>
<body>
 <div class="nav">
 <a href="javascript:void(0);" id="register">点击注册</a>
 </div>
 <div class="dropBox" id="dropDiv">
 <div class="box" id="box">
 <span class="move">注册信息(可以拖拽)</span>
 <span class="close" id="box2">【关闭】</span>
 </div>
 
 </div>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript中的变量是传值还是传址的?
Apr 19 Javascript
javascript中的缓动效果实现程序
Dec 29 Javascript
3个可以改善用户体验的AngularJS指令介绍
Jun 18 Javascript
JavaScript实现基于十进制的四舍五入实例
Jul 17 Javascript
javascript定义类和类的实现实例详解
Dec 01 Javascript
js数字舍入误差以及解决方法(必看篇)
Feb 28 Javascript
JS获取填报扩展单元格控件的值的解决办法
Jul 14 Javascript
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
Feb 08 Javascript
微信小程序仿微信运动步数排行(交互)
Jul 13 Javascript
js实现点击展开隐藏效果(实例代码)
Sep 28 Javascript
详细分析React 表单与事件
Jul 08 Javascript
JavaScript实现栈结构详细过程
Dec 06 Javascript
JS实现“全选”和&quot;全不选&quot;功能代码实例
Feb 06 #Javascript
JavaScript实现好看的跟随彩色气泡效果
Feb 06 #Javascript
详细介绍解决vue和jsp结合的方法
Feb 06 #Javascript
如何在vue项目中嵌入jsp页面的方法(2种)
Feb 06 #Javascript
js get和post请求实现代码解析
Feb 06 #Javascript
Windows下安装 node 的版本控制工具 nvm
Feb 06 #Javascript
Vue3项目打包后部署到服务器 请求不到后台接口解决方法
Feb 06 #Javascript
You might like
php获得用户ip地址的比较不错的方法
2014/02/08 PHP
php抽象方法和抽象类实例分析
2016/12/07 PHP
PHP关于foreach复制知识点总结
2019/01/28 PHP
juqery 学习之四 筛选过滤
2010/11/30 Javascript
AngularJS的内置过滤器详解
2015/05/14 Javascript
JavaScript的类型、值和变量小结
2015/07/09 Javascript
学习使用AngularJS文件上传控件
2016/02/16 Javascript
jquery trigger函数执行两次的解决方法
2016/02/29 Javascript
js实现商品抛物线加入购物车特效
2020/11/18 Javascript
解析jquery easyui tree异步加载子节点问题
2017/03/08 Javascript
浅谈Emergence.js 检测元素可见性的 js 插件
2017/11/18 Javascript
基于Vue中点击组件外关闭组件的实现方法
2018/03/06 Javascript
Layer弹出层动态获取数据的方法
2018/08/20 Javascript
微信小程序Getuserinfo解决方案图解
2018/08/24 Javascript
vue集成chart.js的实现方法
2019/08/20 Javascript
基于vue中的scoped坑点解说
2020/09/04 Javascript
python list使用示例 list中找连续的数字
2014/01/27 Python
Python程序设计入门(2)变量类型简介
2014/06/16 Python
基于Python os模块常用命令介绍
2017/11/03 Python
Python交互环境下实现输入代码
2018/06/22 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
2018/10/23 Python
Python3离线安装Requests模块问题
2019/10/13 Python
Python socket聊天脚本代码实例
2020/01/02 Python
python ubplot使用方法解析
2020/01/10 Python
Python基于gevent实现高并发代码实例
2020/05/15 Python
澳大利亚优质葡萄酒专家:Vintage Cellars
2019/01/08 全球购物
法国亚马逊官方网站:Amazon.fr
2020/12/19 全球购物
学生会竞选自荐信
2013/10/12 职场文书
机械电子工程专业推荐信范文
2013/11/20 职场文书
旅游管理专业生自荐信范文
2014/01/02 职场文书
我爱祖国演讲稿
2014/09/02 职场文书
拾金不昧感谢信
2015/01/21 职场文书
最感人的道歉情书
2015/05/12 职场文书
2016年感恩母亲节活动总结
2016/04/01 职场文书
mysql数据库入门第一步之创建表
2021/05/14 MySQL
Java 垃圾回收超详细讲解记忆集和卡表
2022/04/08 Java/Android