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 相关文章推荐
Javascript里使用Dom操作Xml
Sep 20 Javascript
javascript操作字符串的原生方法
Dec 22 Javascript
zepto.js中tap事件阻止冒泡的实现方法
Feb 12 Javascript
Javascript验证方法大全
Sep 21 Javascript
javascript自定义滚动条实现代码
Apr 20 Javascript
浅析Bootstrap缩略图组件与警示框组件
Apr 29 Javascript
js实现String.Fomat的实例代码
Sep 02 Javascript
jQuery实现的放大镜效果示例
Sep 13 Javascript
基于BootStrap栅格栏系统完成网站底部版权信息区
Dec 23 Javascript
Vue使用高德地图搭建实时公交应用功能(地图 + 附近站点+线路详情 + 输入提示+换乘详情)
May 16 Javascript
在vue项目中正确使用iconfont的方法
Sep 28 Javascript
微信小程序模板消息限制实现无限制主动推送的示例代码
Aug 27 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
MongoDB在PHP中的常用操作小结
2014/02/20 PHP
thinkphp中session和cookie无效的解决方法
2014/12/19 PHP
TP5框架请求响应参数实例分析
2019/10/17 PHP
会自动逐行上升的文本框
2006/06/30 Javascript
jquery 实现的全选和反选
2009/04/15 Javascript
动态调用CSS文件的JS代码
2010/07/29 Javascript
Jquery实现网页跳转或用命令打开指定网页的解决方法
2013/07/09 Javascript
jquery ajax应用中iframe自适应高度问题解决方法
2014/04/12 Javascript
JavaScript淡入淡出渐变简单实例
2015/08/06 Javascript
JS实现的5级联动Select下拉选择框实例
2015/08/17 Javascript
js焦点文字滚动效果代码分享
2015/08/25 Javascript
javascript返回顶部的按钮实现方法
2016/01/09 Javascript
js+canvas简单绘制圆圈的方法
2016/01/28 Javascript
如何利用Promises编写更优雅的JavaScript代码
2016/05/17 Javascript
JS 组件系列之 bootstrap treegrid 组件封装过程
2017/04/28 Javascript
详解Vue2.0里过滤器容易踩到的坑
2017/06/01 Javascript
详解VueJs中的V-bind指令
2018/05/03 Javascript
灵活使用console让js调试更简单的方法步骤
2019/04/23 Javascript
javascript 代码是如何被压缩的示例代码
2020/05/06 Javascript
python3实现UDP协议的服务器和客户端
2017/06/14 Python
Python正则表达式知识汇总
2017/09/22 Python
Python新手如何进行闭包时绑定变量操作
2020/05/29 Python
Python logging模块原理解析及应用
2020/08/13 Python
CSS3 text shadow字体阴影效果
2016/01/08 HTML / CSS
html5中嵌入视频自动播放的问题解决
2020/05/25 HTML / CSS
亚马逊巴西站:Amazon.com.br
2019/09/22 全球购物
应届生求职信写作技巧
2013/10/24 职场文书
单位领导证婚词
2014/01/14 职场文书
在校生自我鉴定
2014/01/23 职场文书
应届毕业生简历自我评价
2014/01/31 职场文书
2014新课程改革心得体会
2014/03/10 职场文书
雏鹰争章活动总结
2014/05/09 职场文书
教师专业自荐信
2014/05/31 职场文书
如何在python中实现ECDSA你知道吗
2021/11/23 Python
使用Mysql计算地址的经纬度距离和实时位置信息
2022/04/29 MySQL
解决 redis 无法远程连接
2022/05/15 Redis