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 相关文章推荐
在图片上显示左右箭头类似翻页的代码
Mar 04 Javascript
Jquery 点击按钮自动高亮实现原理及代码
Apr 25 Javascript
每天一篇javascript学习小结(面向对象编程)
Nov 20 Javascript
jQuery与Ajax以及序列化
Feb 01 Javascript
jQuery 中ajax异步调用的四种方式
Jun 28 Javascript
jQuery Easyui datagrid/treegrid 清空数据
Jul 09 Javascript
JS控制div跳转到指定的位置的几种解决方案总结
Nov 05 Javascript
JS获取当前地理位置的方法
Oct 25 Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
Apr 18 jQuery
在小程序开发中使用npm的方法
Oct 17 Javascript
vue-cli中安装方法(图文详细步骤)
Dec 12 Javascript
node使用request请求的方法
Dec 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
ip签名探针
2006/10/09 PHP
详解PHP中strlen和mb_strlen函数的区别
2014/03/07 PHP
Zend Framework框架实现类似Google搜索分页效果
2016/11/25 PHP
PHP中检查isset()和!empty()函数的必要性
2019/02/13 PHP
laravel5.0在linux下解决.htaccess无效和去除index.php的问题
2019/10/16 PHP
初学prototype,发个JS接受URL参数的代码
2006/09/25 Javascript
动态加载js文件 document.createElement
2006/10/14 Javascript
document.getElementById的简写方式(获取id对象的简略写法)
2010/09/10 Javascript
JQuery里面的几种选择器 查找满足条件的元素$(&quot;#控件ID&quot;)
2011/08/23 Javascript
js关闭模态窗口刷新父页面或跳转页面
2012/12/13 Javascript
JS+CSS模拟可以无刷新显示内容的留言板实例
2015/03/03 Javascript
Javascript实现的简单右键菜单类
2015/09/23 Javascript
js实现控制文件拖拽并获取拖拽内容功能
2018/02/17 Javascript
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
js实现双人五子棋小游戏
2020/05/28 Javascript
python中将阿拉伯数字转换成中文的实现代码
2011/05/19 Python
Python的collections模块中namedtuple结构使用示例
2016/07/07 Python
Python可变参数用法实例分析
2017/04/02 Python
python处理csv中的空值方法
2018/06/22 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
2019/06/17 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
2020/01/19 Python
python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例
2020/03/10 Python
使用python+poco+夜神模拟器进行自动化测试实例
2020/04/23 Python
Python新手学习标准库模块命名
2020/05/29 Python
浅谈CSS3中的变形功能-transform功能
2017/12/27 HTML / CSS
俄罗斯一家时尚女装商店:Charuel
2019/12/04 全球购物
党员领导干部廉洁从政承诺书
2014/03/27 职场文书
《冬阳童年骆驼队》教学反思
2014/04/15 职场文书
汽车销售经理岗位职责
2014/06/09 职场文书
爱护公物标语
2014/06/24 职场文书
社团活动总结书
2014/06/27 职场文书
银行竞聘上岗演讲稿
2014/09/12 职场文书
车辆委托书范本
2014/10/05 职场文书
资料员岗位职责
2015/02/10 职场文书
财产分割协议书
2016/03/22 职场文书
Python 数据可视化工具 Pyecharts 安装及应用
2022/04/20 Python