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学习随笔(使用window和frame)的技巧
Mar 08 Javascript
两种简单实现菜单高亮显示的JS类代码
Jun 27 Javascript
让AJAX不依赖后端接口实现方案
Dec 03 Javascript
jquery实现多行文字图片滚动效果示例代码
Oct 10 Javascript
node.js中的fs.fchmod方法使用说明
Dec 16 Javascript
简介JavaScript中的setDate()方法的使用
Jun 11 Javascript
微信支付如何实现内置浏览器的H5页面支付
Sep 25 Javascript
jQuery插入节点和移动节点用法示例(insertAfter、insertBefore方法)
Sep 08 Javascript
AngularJS extend用法详解及实例代码
Nov 15 Javascript
jQuery用FormData实现文件上传的方法
Nov 21 Javascript
分类解析jQuery选择器
Nov 23 Javascript
Js利用Canvas实现图片压缩功能
Sep 13 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版(5)
2006/10/09 PHP
PHP浮点比较大小的方法
2016/02/14 PHP
PHP检测接口Traversable用法详解
2017/12/29 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
2018/04/20 PHP
Javascript 键盘keyCode键码值表
2009/12/24 Javascript
jQuery根据纬度经度查看地图处理程序
2013/05/08 Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
2014/01/26 Javascript
jQuery异步验证用户名是否存在示例代码
2014/05/21 Javascript
jQuery应用之jQuery链用法实例
2015/01/19 Javascript
JavaScript中常见的字符串操作函数及用法汇总
2015/05/04 Javascript
Bootstrap每天必学之表单
2015/11/23 Javascript
js获取及判断键盘按键的方法
2015/12/01 Javascript
JavaScript+CSS无限极分类效果完整实现方法
2015/12/22 Javascript
jQuery实现立体式数字滚动条增加效果
2016/12/21 Javascript
详解浏览器渲染页面过程
2017/02/09 Javascript
AngularJS学习笔记之表单验证功能实例详解
2017/07/06 Javascript
JS实现用特殊符号替换字符串的中间部分区域的实例代码
2018/07/24 Javascript
详解ES6 export default 和 import语句中的解构赋值
2019/05/28 Javascript
node.js中 mysql 增删改查操作及async,await处理实例分析
2020/02/11 Javascript
vue-router之解决addRoutes使用遇到的坑
2020/07/19 Javascript
js 函数性能比较方法
2020/08/24 Javascript
使用C#配合ArcGIS Engine进行地理信息系统开发
2016/02/19 Python
python中requests和https使用简单示例
2018/01/18 Python
Python数据抓取爬虫代理防封IP方法
2018/12/23 Python
Python pip配置国内源的方法
2020/02/14 Python
执行Python程序时模块报错问题
2020/03/26 Python
python实现飞船游戏的纵向移动
2020/04/24 Python
基于HTML5 WebGL的3D机房的示例
2018/03/16 HTML / CSS
阿玛尼美妆俄罗斯官网:Giorgio Armani Beauty RU
2020/07/19 全球购物
印刷工程专业应届生求职信
2013/09/29 职场文书
电子信息专业学生自荐信
2013/11/09 职场文书
三爱活动实施方案
2014/03/19 职场文书
加油口号大全
2014/06/13 职场文书
大学生第一学年自我鉴定
2014/09/12 职场文书
机械设计专业大学生职业生涯规划书范文
2014/09/13 职场文书
小学语文继续教育研修日志
2015/11/13 职场文书