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 相关文章推荐
jQuery.ajax 用户登录验证代码
Oct 29 Javascript
jquery中使用$(#form).submit()重写提交表单无效原因分析及解决
Mar 25 Javascript
当鼠标滑过文本框自动选中输入框内容的JS代码分享
Nov 26 Javascript
简单的jquery左侧导航栏和页面选中效果
Aug 21 Javascript
JavaScript 常见安全漏洞和自动化检测技术
Aug 21 Javascript
javascript实现Email邮件显示与删除功能
Nov 21 Javascript
JavaScript九九乘法口诀表的简单实现
Oct 04 Javascript
Ajax的概述与实现过程
Nov 18 Javascript
浅谈js函数中的实例对象、类对象、局部变量(局部函数)
Nov 20 Javascript
jQuery插件ContextMenu自定义图标
Mar 15 Javascript
一份超级详细的Vue-cli3.0使用教程【推荐】
Nov 15 Javascript
javascript 模块依赖管理的本质深入详解
Apr 30 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
PHP 和 HTML
2006/10/09 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
2014/09/10 PHP
Laravel模型事件的实现原理详解
2018/03/14 PHP
jQuery Ajax 全解析
2009/02/08 Javascript
为JavaScript类型增加方法的实现代码(增加功能)
2011/12/29 Javascript
Windows系统中安装nodejs图文教程
2015/02/28 NodeJs
仅30行代码实现Javascript中的MVC
2016/02/15 Javascript
原生javascript实现的一个简单动画效果
2016/03/30 Javascript
js阻止浏览器默认行为的简单实例
2016/05/15 Javascript
JS绘制微信小程序画布时钟
2016/12/24 Javascript
Vue2.0基于vue-cli+webpack Vuex的用法(实例讲解)
2017/09/15 Javascript
解决Vue编译时写在style中的路径问题
2017/09/21 Javascript
微信小程序实现tab左右切换效果
2020/11/15 Javascript
详解Vue项目在其他电脑npm run dev运行报错的解决方法
2018/10/29 Javascript
vue中使用微信公众号js-sdk踩坑记录
2019/03/29 Javascript
javascript中this的用法实践分析
2019/07/29 Javascript
js实现无限瀑布流实例方法
2019/09/16 Javascript
Python中的CURL PycURL使用例子
2014/06/01 Python
跟老齐学Python之模块的加载
2014/10/24 Python
python通过zlib实现压缩与解压字符串的方法
2014/11/19 Python
python rsa 加密解密
2017/03/20 Python
使用pandas对矢量化数据进行替换处理的方法
2018/04/11 Python
python编写简易聊天室实现局域网内聊天功能
2018/07/28 Python
Python将列表数据写入文件(txt, csv,excel)
2019/04/03 Python
通过python-pptx模块操作ppt文件的方法
2020/12/26 Python
AP澳洲中文网:澳洲正品直邮,包税收件无忧
2019/07/12 全球购物
文员个人的求职信范文
2013/09/26 职场文书
国贸专业个人求职信范文
2014/01/08 职场文书
营销总经理岗位职责
2014/02/02 职场文书
合同意向书范本
2014/07/30 职场文书
爱护公共设施倡议书
2014/08/29 职场文书
2019班干部竞选演讲稿范本!
2019/07/08 职场文书
创业计划书之酒店
2019/08/30 职场文书
python3 hdf5文件 遍历代码
2021/05/19 Python
Redis如何实现分布式锁
2021/08/23 Redis
JavaScript函数柯里化
2021/11/07 Javascript