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学习第八章 表单错误提示
Feb 19 Javascript
jquery设置元素的readonly和disabled的写法
Sep 22 Javascript
JavaScript setTimeout使用闭包功能实现定时打印数值
Dec 18 Javascript
JavaScript数组去重的两种方法推荐
Apr 05 Javascript
js简单倒计时实现代码
Apr 30 Javascript
jQuery属性选择器用法示例
Sep 09 Javascript
Select2.js下拉框使用小结
Oct 24 Javascript
在vue项目中使用Nprogress.js进度条的方法
Jan 31 Javascript
vue裁切预览组件功能的实现步骤
May 04 Javascript
vuex与组件联合使用的方法
May 10 Javascript
小程序如何定位所在城市及发起周边搜索
Feb 11 Javascript
微信小程序吸底区域适配iPhoneX的实现
Apr 09 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
第一个无线电台是由谁发明的
2021/03/01 无线电
php 清除网页病毒的方法
2008/12/05 PHP
PHP与SQL注入攻击防范小技巧
2011/09/16 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
2015/05/13 PHP
微信网页授权(OAuth2.0) PHP 源码简单实现
2016/08/29 PHP
利用javascript的面向对象的特性实现限制试用期
2011/08/04 Javascript
Jquery 改变radio/checkbox选中状态,获取选中的值(示例代码)
2013/12/12 Javascript
jqeury-easyui-layout问题解决方法
2014/03/24 Javascript
基于jquery实现简单的分页控件
2016/03/17 Javascript
jQuery动态添加
2016/04/07 Javascript
常用Javascript函数与原型功能收藏(必看篇)
2016/10/09 Javascript
Easyui的组合框的取值与赋值
2016/10/28 Javascript
javascript中Number的方法小结
2016/11/21 Javascript
EasyUI学习之Combobox级联下拉列表(2)
2016/12/29 Javascript
JS闭包用法实例分析
2017/03/27 Javascript
详解微信小程序 登录获取unionid
2017/06/27 Javascript
简单实现js拖拽效果
2017/07/25 Javascript
Vue调试神器vue-devtools安装方法
2017/12/12 Javascript
微信小程序使用gitee进行版本管理
2018/09/20 Javascript
使用js和canvas实现时钟效果
2020/09/08 Javascript
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
Python之Scrapy爬虫框架安装及简单使用详解
2017/12/22 Python
Python下调用Linux的Shell命令的方法
2018/06/12 Python
Flask框架中request、请求钩子、上下文用法分析
2019/07/23 Python
numpy按列连接两个维数不同的数组方式
2019/12/06 Python
Python Gluon参数和模块命名操作教程
2019/12/18 Python
PyCharm GUI界面开发和exe文件生成的实现
2020/03/04 Python
Python读取xlsx数据生成图标代码实例
2020/08/12 Python
英国床垫在线:Mattress Online
2016/12/07 全球购物
美国电视购物:QVC
2017/02/06 全球购物
英国手机零售商:Metrofone
2019/03/18 全球购物
《草原的早晨》教学反思
2014/04/08 职场文书
小学课外活动总结
2014/07/09 职场文书
周恩来的四个昼夜观后感
2015/06/03 职场文书
学习心理学心得体会
2016/01/22 职场文书
SpringBoot Http远程调用的方法
2022/08/14 Java/Android