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与C# Windows应用程序交互方法
Jun 29 Javascript
ext实现完整的登录代码
Aug 08 Javascript
IE bug table元素的innerHTML
Jan 11 Javascript
textarea中的手动换行处理的jquery代码
Feb 26 Javascript
jquery 倒计时效果实现秒杀思路
Sep 11 Javascript
封装好的一个万能检测表单的方法
Jan 21 Javascript
jQuery经过一段时间自动隐藏指定元素的方法
Mar 17 Javascript
Javascript 事件冒泡机制详细介绍
Oct 10 Javascript
详解vue slot插槽的使用方法
Jun 13 Javascript
Node.js环境下Koa2添加travis ci持续集成工具的方法
Jun 19 Javascript
javaScript封装的各种写法
Aug 14 Javascript
vue-cli axios请求方式及跨域处理问题
Mar 28 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
Apache实现Web Server负载均衡详解(不考虑Session版)
2013/07/05 PHP
PHP把小数转成整数3种方法
2014/06/30 PHP
PHP生成指定长度随机数最简洁的方法
2014/07/14 PHP
PHP模板引擎Smarty内建函数section,sectionelse用法详解
2016/04/11 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
2019/04/10 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
2020/05/01 PHP
js checkbox(复选框) 使用集锦
2009/04/28 Javascript
JavaScript事件学习小结(三)js事件对象
2016/06/09 Javascript
js 毫秒转天时分秒的实例
2017/11/17 Javascript
JS中call和apply函数用法实例分析
2018/06/20 Javascript
node.js到底要不要加分号浅析
2018/07/11 Javascript
使用gulp构建前端自动化的方法示例
2018/12/25 Javascript
15分钟深入了解JS继承分类、原理与用法
2019/01/19 Javascript
Vue如何基于es6导入外部js文件
2020/05/15 Javascript
[23:21]Ti4 冒泡赛第二轮DK vs C9 2
2014/07/14 DOTA
[35:26]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第三局
2016/02/26 DOTA
[48:23]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第一局
2016/03/05 DOTA
python smtplib模块实现发送邮件带附件sendmail
2018/05/22 Python
Python 给定的经纬度标注在地图上的实现方法
2019/07/05 Python
Python实用库 PrettyTable 学习笔记
2019/08/06 Python
Python List列表对象内置方法实例详解
2019/10/22 Python
Python 给下载文件显示进度条和下载时间的实现
2020/04/02 Python
python 实现aes256加密
2020/11/27 Python
使用JS+CSS3技术:让你的名字动起来
2013/04/27 HTML / CSS
Html5新增标签有哪些
2017/04/13 HTML / CSS
SKECHERS官方旗舰店:美国舒适运动休闲品牌
2017/12/22 全球购物
泰国时尚电商:POMELO Fashion
2020/03/11 全球购物
C++面试题目
2013/06/25 面试题
vue项目实现分页效果
2021/03/24 Vue.js
应届毕业生自我评价分享
2013/12/15 职场文书
幼儿教育感言
2014/02/05 职场文书
机械电子工程专业自荐书
2014/06/10 职场文书
2015年团支部工作总结
2015/04/03 职场文书
幼儿园新生开学寄语
2015/05/27 职场文书
大学生学习十八届五中全会精神心得体会
2016/01/05 职场文书
HTML通过表单实现酒店筛选功能
2021/05/18 HTML / CSS