用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 相关文章推荐
jquery tools 系列 scrollable学习
Sep 06 Javascript
让innerText在firefox火狐和IE浏览器都能用的写法
May 14 Javascript
js函数排序的实例代码
Jul 01 Javascript
js字符串转换成数字与数字转换成字符串的实现方法
Jan 08 Javascript
在myeclipse中如何加入jquery代码提示功能
Jun 03 Javascript
javascript发送短信验证码实现代码
Nov 12 Javascript
浅谈javascript中onbeforeunload与onunload事件
Dec 10 Javascript
javascript基础语法——全面理解变量和标识符
Jun 02 Javascript
微信小程序canvas写字板效果及实例
Jun 15 Javascript
JavaScript基础心法 深浅拷贝(浅拷贝和深拷贝)
Mar 05 Javascript
JS简单数组排序操作示例【sort方法】
May 17 Javascript
详解Anyscript开发指南绕过typescript类型检查
Sep 23 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
《忧国的莫里亚蒂》先导宣传图与STAFF公开
2020/03/04 日漫
PHP5中Cookie与 Session使用详解
2013/04/30 PHP
解析array splice的移除数组中指定键的值,返回一个新的数组
2013/07/02 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
2013/11/07 PHP
迅速确定php多维数组的深度的方法
2014/01/07 PHP
PHP、Python和Javascript的装饰器模式对比
2015/02/03 PHP
Zend Framework基本页面布局分析
2016/03/19 PHP
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
2017/07/18 PHP
php实现小程序支付完整版
2018/10/09 PHP
Javascript 各浏览器的 Javascript 效率对比
2008/01/23 Javascript
JS 对象介绍
2010/01/20 Javascript
js截取函数(indexOf,join等)
2010/09/01 Javascript
jquery 使用简明教程
2014/03/05 Javascript
javascript获取dom的下一个节点方法
2014/09/05 Javascript
使用Javascript实现选择下拉菜单互移并排序
2016/02/23 Javascript
JS深度拷贝Object Array实例分析
2016/03/31 Javascript
js传值后台中文出现乱码的解决方法
2016/06/30 Javascript
JQuery.validationEngine表单验证插件(推荐)
2016/12/10 Javascript
JavaScript实现的冒泡排序法及统计相邻数交换次数示例
2017/04/26 Javascript
vue的全局提示框组件实例代码
2018/02/26 Javascript
微信小程序如何再次获取用户授权的方法
2019/05/10 Javascript
[38:39]完美世界DOTA2联赛循环赛 IO vs GXR BO2第二场 11.04
2020/11/05 DOTA
利用Python中的输入和输出功能进行读取和写入的教程
2015/04/14 Python
python3获取当前文件的上一级目录实例
2018/04/26 Python
和孩子一起学习python之变量命名规则
2018/05/27 Python
Python爬虫程序架构和运行流程原理解析
2020/03/09 Python
新加坡航空官方网站:Singapore Airlines
2016/10/13 全球购物
店长助理岗位职责
2013/12/13 职场文书
电子商务应届生自我鉴定
2014/01/13 职场文书
服务之星获奖感言
2014/01/21 职场文书
物流管理专业毕业生求职信
2014/03/23 职场文书
小学教师暑期培训方案
2014/08/28 职场文书
优秀教师申报材料
2014/12/16 职场文书
小学运动会入场词
2015/07/18 职场文书
2016年百日安全生产活动总结
2016/04/06 职场文书
用Python编写简单的gRPC服务的详细过程
2021/07/04 Python