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 相关文章推荐
Code:loadScript( )加载js的功能函数
Feb 02 Javascript
JQuery获取文本框中字符长度的代码
Sep 29 Javascript
JavaScript设置IFrame高度自适应(兼容各主流浏览器)
Jun 05 Javascript
js菜单点击显示或隐藏效果的简单实例
Jan 13 Javascript
js实现使用鼠标拖拽切换图片的方法
May 04 Javascript
JavaScript使ifram跨域相互访问及与PHP通信的实例
Mar 03 Javascript
jquery pagination分页插件使用详解(后台struts2)
Jan 22 Javascript
JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效)
Jul 07 Javascript
使用veloticy-ui生成文字动画效果
Feb 08 Javascript
Vue微信项目按需授权登录策略实践思路详解
May 07 Javascript
Element图表初始大小及窗口自适应实现
Jul 10 Javascript
vue 子组件修改data或调用操作
Aug 07 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
Zend Framework实现将session存储在memcache中的方法
2016/03/22 PHP
tp5框架的增删改查操作示例
2019/10/31 PHP
JavaScript类和继承 prototype属性
2010/09/03 Javascript
JavaScript中的noscript元素属性位置及作用介绍
2013/04/11 Javascript
$.getJSON在IE下失效的原因分析及解决方法
2013/06/16 Javascript
原生js做的手风琴效果的导航菜单
2013/11/08 Javascript
不要使用jQuery触发原生事件的方法
2014/03/03 Javascript
浅析JQuery中的html(),text(),val()区别
2014/09/01 Javascript
Bootstrap基本组件学习笔记之缩略图(13)
2016/12/08 Javascript
JS实现一个简单的日历
2017/02/22 Javascript
微信小程序 自动登陆PHP源码实例(源码下载)
2017/05/08 Javascript
基于AngularJS实现的工资计算器实例
2017/06/16 Javascript
vue视图不更新情况详解
2019/05/16 Javascript
[07:47]DOTA2国际邀请赛采访专栏:探访Valve总部
2013/08/08 DOTA
用Python进行基础的函数式编程的教程
2015/03/31 Python
python基于物品协同过滤算法实现代码
2018/05/31 Python
python3实现的zip格式压缩文件夹操作示例
2019/08/17 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
2020/01/14 Python
pycharm中import呈现灰色原因的解决方法
2020/03/04 Python
python图片剪裁代码(图片按四个点坐标剪裁)
2020/03/10 Python
Pycharm2020.1安装无法启动问题即设置中文插件的方法
2020/08/07 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
2021/02/07 Python
一款纯css3实现的动画加载导航
2014/10/08 HTML / CSS
潘多拉珠宝俄罗斯官方网上商店:PANDORA俄罗斯
2020/09/22 全球购物
面向对象设计的原则是什么
2013/02/13 面试题
《春到梅花山》教学反思
2014/04/16 职场文书
实习协议书范本
2014/04/22 职场文书
《鸿门宴》教学反思
2014/04/22 职场文书
促销活动计划书
2014/05/02 职场文书
小学校园之星事迹材料
2014/05/16 职场文书
公司法定代表人授权委托书
2014/09/29 职场文书
个人四风问题整改措施思想汇报
2014/10/04 职场文书
幼儿园个人总结
2015/02/28 职场文书
教师岗位职责范本
2015/04/02 职场文书
法定代表人身份证明书
2015/06/18 职场文书
教你怎么用python selenium实现自动化测试
2021/05/27 Python