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 相关文章推荐
js中获取事件对象的方法小结
Mar 13 Javascript
js 关键词高亮(根据ID/tag高亮关键字)案例介绍
Jan 21 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
Jun 09 Javascript
JavaScript获取图片真实大小代码实例
Sep 24 Javascript
js防止DIV布局滚动时闪动的解决方法
Oct 30 Javascript
js 左右悬浮对联广告代码示例
Dec 12 Javascript
原生javascript实现的一个简单动画效果
Mar 30 Javascript
Bootstrap开发实战之第一次接触Bootstrap
Jun 02 Javascript
JSONP跨域请求实例详解
Jul 04 Javascript
H5移动端适配 Flexible方案
Oct 24 Javascript
js实现功能比较全面的全选和多选
Mar 02 Javascript
一篇超完整的Vue新手入门指导教程
Nov 18 Vue.js
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类
2006/11/27 PHP
PHP实现QQ空间自动回复说说的方法
2015/12/02 PHP
简单谈谈PHP中的Reload操作
2016/12/12 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
php swoft框架实例用法
2020/12/22 PHP
一种JavaScript的设计模式
2006/11/22 Javascript
ExtJS 2.0实用简明教程 之获得ExtJS
2009/04/29 Javascript
Jquery ajaxsubmit上传图片实现代码
2010/11/04 Javascript
JQuery自适应IFrame高度(支持嵌套 兼容IE,ff,safafi,chrome)
2011/03/28 Javascript
JavaScript移除数组元素减少长度的方法
2013/09/05 Javascript
Javascript动态创建div的方法
2015/02/09 Javascript
在Python中使用glob模块查找文件路径的方法
2015/06/17 Javascript
跟我学习javascript的函数调用和构造函数调用
2015/11/16 Javascript
字符串反转_JavaScript
2016/04/28 Javascript
jQuery中map函数的两种方式
2017/04/07 jQuery
jQuery EasyUI Layout实现tabs标签的实例
2017/09/26 jQuery
详解tween.js 中文使用指南
2018/01/05 Javascript
浅谈使用mpvue开发小程序需要注意和了解的知识点
2018/05/23 Javascript
使用eslint和githooks统一前端风格的技巧
2020/07/29 Javascript
vue组件开发之slider组件使用详解
2020/08/21 Javascript
vue中如何添加百度统计代码
2020/12/19 Vue.js
在Python中使用成员运算符的示例
2015/05/13 Python
Django后台获取前端post上传的文件方法
2018/05/28 Python
Django中间件实现拦截器的方法
2018/06/01 Python
Python爬虫之pandas基本安装与使用方法示例
2018/08/08 Python
python绘制BA无标度网络示例代码
2019/11/21 Python
基于python监控程序是否关闭
2020/01/14 Python
django inspectdb 操作已有数据库数据的使用步骤
2021/02/07 Python
历史学专业推荐信
2013/11/06 职场文书
教师通用专业自荐书范文
2014/02/11 职场文书
教师对学生的寄语
2014/04/03 职场文书
基层党建工作汇报材料
2014/08/15 职场文书
员工保密协议书
2014/09/27 职场文书
党员教师群众路线对照检查材料思想汇报
2014/09/29 职场文书
聘任合同书
2015/09/21 职场文书
Python实现生成bmp图像的方法
2021/06/13 Python