用JavaScript实现使用鼠标画线的示例代码


Posted in Javascript onAugust 19, 2014
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled 1</title> 
<style type="text/css"> 
.style1 { 
  font-size: x-small; 
} 
</style> 
<script type="text/javascript"> 
/**
  画点
*/  
function makedot(x, y){ 
 pointDiv = "<div style='height:1px;position:absolute;left:" + x +
   "px;top:" + y + "px;width:1px;background:#f00;overflow:hidden'></div>"; 
 return pointDiv;
} 
/** 
 根据两点坐标画直线。 
*/ 

function line(x1,y1,x2,y2){ 
 var slope; //斜率
 var direction;//坐标运动方向
 var tx = x2 - x1;
 var ty = y2 - y1;
 if(tx == 0 && ty == 0)return;
 var points = "";
 var axis;//坐标轴上的坐标
 if(Math.abs(tx) >= Math.abs(ty)){//在x轴上移动
   direction = tx > 0 ? 1 : -1;
   tx = Math.abs(tx);
   slope = ty / tx;
   axis = x1;
   for(i = 0; i < tx; i ++){
     points += makedot(axis, y1 + i * slope);
     axis += direction;
   }
    
 }else{//在y轴上移动
   direction = ty > 0 ? 1 : -1;
   ty = Math.abs(ty);
   slope = tx / ty; 
   axis = y1;  
   for(i = 0; i < ty; i ++){
     points += makedot(x1 + i * slope, axis);
     axis += direction;
   }
 }
 var container = document.getElementById("container");
 container.innerHTML += points; 
} 
var oldPoint = null;
//获取鼠标位置
function mousePosition(ev){
  ev = ev || window.event;
  if(ev.pageX || ev.pageY){
    return {x:ev.pageX, y:ev.pageY};
  }
  var doc = document.documentElement, body = document.body;
  var pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
  var pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);    
  return {x:pageX, y:pageY};
}

function recordPoint(ev){
  
  var point = mousePosition(ev);
  if(oldPoint != null){
    line(oldPoint.x, oldPoint.y, point.x, point.y);
  }
  oldPoint = point;
}
</script>
</head> 

<body> 
<div id="container" style="width: 1000px; height: 600px; border:1px #bfbfbf solid;" onclick="recordPoint(event);">
  
</div>
<script type="text/javascript"> 
  //line(19,19,22,300); 
</script>
</body> 
</html>
Javascript 相关文章推荐
JavaScript 面向对象的之私有成员和公开成员
May 04 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
Dec 27 Javascript
jquery提示效果实例分析
Nov 25 Javascript
jQuery实现带幻灯的tab滑动切换风格菜单代码
Aug 27 Javascript
浅谈JS中逗号运算符的用法
Jun 12 Javascript
Vue.js中轻松解决v-for执行出错的三个方案
Jun 09 Javascript
详解微信小程序设置底部导航栏目方法
Jun 29 Javascript
jQuery实现验证表单密码一致性及正则表达式验证邮箱、手机号的方法
Dec 05 jQuery
angular2 NgModel模块的具体使用方法
Apr 10 Javascript
详解微信小程序开发用户授权登陆
Apr 24 Javascript
关于vue-cli3打包代码后白屏的解决方案
Sep 02 Javascript
微信小程序实现点击导航条切换页面
Nov 19 Javascript
[原创]推荐10款最热门jQuery UI框架
Aug 19 #Javascript
js选择并转移导航菜单示例代码
Aug 19 #Javascript
js遍历子节点子元素附属性及方法
Aug 19 #Javascript
jQuery实现返回顶部功能适合不支持js的浏览器
Aug 19 #Javascript
用循环或if语句从json中取数据示例
Aug 18 #Javascript
通过jquery 获取URL参数并进行转码
Aug 18 #Javascript
浅谈JavaScript中定义变量时有无var声明的区别
Aug 18 #Javascript
You might like
Windows下PHP的任意文件执行漏洞
2006/10/09 PHP
PHP中date与gmdate的区别及默认时区设置
2014/05/12 PHP
PHP使用php-resque库配合Redis实现MQ消息队列的教程
2016/06/29 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
详解JavaScript的while循环的使用
2015/06/03 Javascript
整理JavaScript创建对象的八种方法
2015/11/03 Javascript
很全面的JavaScript常用功能汇总集合
2016/01/22 Javascript
JavaScript自动点击链接 防止绕过浏览器访问的方法
2017/01/19 Javascript
微信小程序 template模板详解及实例
2017/02/21 Javascript
令按钮悬浮在(手机)页面底部的实现方法
2017/05/02 Javascript
webstorm中配置Eslint的两种方式及差异比较详解
2018/10/19 Javascript
如何手写简易的 Vue Router
2020/10/10 Javascript
python之wxPython应用实例
2014/09/28 Python
Python的Flask框架中的Jinja2模板引擎学习教程
2016/06/30 Python
Python三级菜单的实例
2017/09/13 Python
Python实现基本数据结构中栈的操作示例
2017/12/04 Python
利用Python暴力破解zip文件口令的方法详解
2017/12/21 Python
Python使用Matplotlib实现雨点图动画效果的方法
2017/12/23 Python
python基于twisted框架编写简单聊天室
2018/01/02 Python
对python 操作solr索引数据的实例详解
2018/12/07 Python
Python multiprocessing多进程原理与应用示例
2019/02/28 Python
Python内置方法实现字符串的秘钥加解密(推荐)
2019/12/09 Python
py-charm延长试用期限实例
2019/12/22 Python
Python如何基于Tesseract实现识别文字功能
2020/06/05 Python
使用jupyter notebook运行python和R的步骤
2020/08/13 Python
python实现文件+参数发送request的实例代码
2021/01/05 Python
导购员的岗位职责
2014/02/08 职场文书
环境科学专业求职信
2014/08/04 职场文书
房租涨价通知
2015/04/23 职场文书
文艺委员竞选稿
2015/11/19 职场文书
2016庆祝国庆67周年宣传语
2015/11/25 职场文书
《黄山奇石》教学反思
2016/02/18 职场文书
react antd实现动态增减表单
2021/06/03 Javascript
Lakehouse数据湖并发控制陷阱分析
2022/03/31 Oracle
VW、VH适配移动端的解决方案与常见问题
2023/05/21 HTML / CSS