JS拖动鼠标画出方框实现鼠标选区的方法


Posted in Javascript onAugust 05, 2015

本文实例讲述了JS拖动鼠标画出方框实现鼠标选区的方法。分享给大家供大家参考。具体如下:

相当实用的一个JS技巧,拖动鼠标可画出一个方框,可作为一个选区的功能,可以用来画流程图,设计草图什么的,也可以作为上传头像时裁切选择图片,在头像裁切中使用广泛,鼠标在图片上拖动拉出一个方框,这个方框就代表着选区的功能,目前网页上已流行的一种操作。主要是依赖于JavaScript代码来实现。

运行效果如下图所示:

JS拖动鼠标画出方框实现鼠标选区的方法

具体代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh" lang="zh">
<head>
<title>鼠标拖动画矩形</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<style type="text/css">
body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fieldset,legend,button,input,textarea,th,td{margin:0;padding:0}
html{color:#000;overflow-y:scoll;overflow:-moz-scrollbars-vertical}
.div{position:absolute; border:1px dashed blue; width:0px; height:0px;left:0px; top:0px; overflow:hidden;}
.retc{position:absolute; border:1px solid #CCCCCC; overflow:hidden; background:#EFEFEF}
</style>
</head>
<body> 
</body>
<script language = "javascript">
 var wId = "w";
 var index = 0;
 var startX = 0, startY = 0;
 var flag = false;
 var retcLeft = "0px", retcTop = "0px", retcHeight = "0px", retcWidth = "0px";
 document.onmousedown = function(e){
  flag = true;
  try{
   var evt = window.event || e;
   var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
   var scrollLeft = document.body.scrollLeft || document.documentElement.scrollLeft;
   startX = evt.clientX + scrollLeft;
   startY = evt.clientY + scrollTop;
   index++;
   var div = document.createElement("div");
   div.id = wId + index;
   div.className = "div";
   div.style.marginLeft = startX + "px";
   div.style.marginTop = startY + "px";
   document.body.appendChild(div);
  }catch(e){
  //alert(e);
  }
 }
 document.onmouseup = function(){
  try{
   document.body.removeChild($(wId + index));
   var div = document.createElement("div");
   div.className = "retc";
   div.style.marginLeft = retcLeft;
   div.style.marginTop = retcTop;
   div.style.width = retcWidth;
   div.style.height = retcHeight;
   document.body.appendChild(div);
  }catch(e){
   //alert(e);
  }
  flag = false;
 }
 document.onmousemove = function(e){
  if(flag){
   try{
   var evt = window.event || e;
   var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
   var scrollLeft = document.body.scrollLeft || document.documentElement.scrollLeft;
   retcLeft = (startX - evt.clientX - scrollLeft > 0 ? evt.clientX + scrollLeft : startX) + "px";
   retcTop = (startY - evt.clientY - scrollTop > 0 ? evt.clientY + scrollTop : startY) + "px";
   retcHeight = Math.abs(startY - evt.clientY - scrollTop) + "px";
   retcWidth = Math.abs(startX - evt.clientX - scrollLeft) + "px";
   $(wId + index).style.marginLeft = retcLeft;
   $(wId + index).style.marginTop = retcTop;
   $(wId + index).style.width = retcWidth;
   $(wId + index).style.height = retcHeight;
   }catch(e){
    //alert(e);
   } 
  }
 }
 var $ = function(id){
  return document.getElementById(id);
 }
</script>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
JS事件Event元素(兼容IE,Firefox,Chorme)
Nov 01 Javascript
js实现在字符串中提取数字
Nov 05 Javascript
JS判断移动端访问设备并加载对应CSS样式
Jun 13 Javascript
js父页面与子页面不同时显示的方法
Oct 16 Javascript
AngularJS中实现用户访问的身份认证和表单验证功能
Apr 21 Javascript
json定义及jquery操作json的方法
Sep 29 Javascript
babel基本使用详解
Feb 17 Javascript
JS优化与惰性载入函数实例分析
Apr 06 Javascript
JQuery 获取Dom元素的实例讲解
Jul 08 jQuery
bing Map 在vue项目中的使用详解
Apr 09 Javascript
关于HTML5的data-*自定义属性的总结
May 05 Javascript
微信小程序使用gitee进行版本管理
Sep 20 Javascript
JS绘制生成花瓣效果的方法
Aug 05 #Javascript
JS实现点击上移下移LI行数据的方法
Aug 05 #Javascript
将页面table内容与样式另存成excel文件的方法
Aug 05 #Javascript
JS模拟键盘打字效果的方法
Aug 05 #Javascript
js点击列表文字对应该行显示背景颜色的实现代码
Aug 05 #Javascript
JS使用parseInt解析数字实现求和的方法
Aug 05 #Javascript
js绘制圆形和矩形的方法
Aug 05 #Javascript
You might like
第八节--访问方式
2006/11/16 PHP
PHP6 中可能会出现的新特性预览
2014/04/04 PHP
JS option location 页面跳转实现代码
2008/12/27 Javascript
js 动态选中下拉框
2009/11/26 Javascript
JavaScript中的toLocaleLowerCase()方法使用详解
2015/06/06 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
jquery实现倒计时效果
2015/12/14 Javascript
BootStrap下拉菜单和滚动监听插件实现代码
2016/09/26 Javascript
AngularJS中ng-class用法实例分析
2017/07/06 Javascript
bootstrap-table.js扩展分页工具栏(增加跳转到xx页)功能
2017/12/28 Javascript
详解react-router 4.0 下服务器如何配合BrowserRouter
2017/12/29 Javascript
通过js动态创建标签,并设置属性方法
2018/02/24 Javascript
JavaScript反射与依赖注入实例详解
2018/05/29 Javascript
微信小程序日历效果
2018/12/29 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
Vue通过provide inject实现组件通信
2020/09/03 Javascript
[00:10]DOTA2 TI9勇士令状明日上线
2019/05/07 DOTA
Python简明入门教程
2015/08/04 Python
Python实现SMTP发送邮件详细教程
2021/03/02 Python
python3 http提交json参数并获取返回值的方法
2018/12/19 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
2019/08/23 Python
Python装饰器使用你可能不知道的几种姿势
2019/10/25 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
2020/01/10 Python
利用Pytorch实现简单的线性回归算法
2020/01/15 Python
原装进口全世界:天猫国际
2016/08/03 全球购物
美国地毯购买网站:Rugs USA
2019/02/23 全球购物
骨干教师培训制度
2014/01/13 职场文书
省优秀教师事迹材料
2014/01/30 职场文书
社区国庆节活动方案
2014/02/05 职场文书
学党史心得体会
2014/09/05 职场文书
初中英语教师个人工作总结
2015/02/09 职场文书
会计专业自荐信范文
2015/03/05 职场文书
体检通知范文
2015/04/21 职场文书
辣妈辣妹观后感
2015/06/10 职场文书
大学生创业计划书
2019/06/24 职场文书
MySQL入门命令之函数-单行函数-流程控制函数
2021/04/05 MySQL