用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 解析json的代码
Dec 16 Javascript
js函数中onmousedown和onclick的区别和联系探讨
May 19 Javascript
node.js中的fs.lstat方法使用说明
Dec 16 Javascript
对比分析AngularJS中的$http.post与jQuery.post的区别
Feb 27 Javascript
JQuery实现鼠标滚轮滑动到页面节点
Jul 28 Javascript
jQuery实现的点赞随机数字显示动画效果(附在线演示与demo源码下载)
Dec 31 Javascript
jQuery实现可拖拽的许愿墙效果【附demo源码下载】
Sep 14 Javascript
微信JS-SDK选取手机照片上传功能
Apr 21 Javascript
package.json文件配置详解
Jun 15 Javascript
详解webpack进阶之插件篇
Jul 06 Javascript
js布局实现单选按钮控件
Jan 17 Javascript
浅谈react路由传参的几种方式
Mar 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
PHP获取当前url的具体方法全面解析
2013/11/26 PHP
thinkphp使用literal防止模板标签被解析的方法
2014/11/22 PHP
PHP实现清除wordpress里恶意代码
2015/10/21 PHP
Yii控制器中操作视图js的方法
2016/07/04 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
2020/04/23 PHP
获取任意Html元素与body之间的偏移距离 offsetTop、offsetLeft (For:IE5+ FF1 )[
2006/12/22 Javascript
Jquery中LigerUi的弹出编辑框(实现方法)
2013/07/09 Javascript
jQuery增加自定义函数的方法
2015/07/18 Javascript
浅谈JS函数定义方式的区别
2016/10/30 Javascript
layui表格checkbox选择全选样式及功能的实例
2018/03/07 Javascript
jquery获取元素到屏幕四周可视距离的方法
2018/09/05 jQuery
JS跨域请求的问题解析
2018/12/03 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
2019/09/01 Javascript
vue切换菜单取消未完成接口请求的案例
2020/11/13 Javascript
[43:58]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第二局
2016/02/27 DOTA
[34:10]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
python使用PyCharm进行远程开发和调试
2017/11/02 Python
Python内建模块struct实例详解
2018/02/02 Python
redis之django-redis的简单缓存使用
2018/06/07 Python
python定向爬虫校园论坛帖子信息
2018/07/23 Python
python读写配置文件操作示例
2019/07/03 Python
python中matplotlib条件背景颜色的实现
2019/09/02 Python
python爬虫开发之selenium模块详细使用方法与实例全解
2020/03/09 Python
PyTorch实现重写/改写Dataset并载入Dataloader
2020/07/14 Python
python模拟点击玩游戏的实例讲解
2020/11/26 Python
西雅图的买手店:Totokaelo
2019/10/19 全球购物
Haggar官网:美国男装品牌
2020/02/16 全球购物
毕业自荐书
2013/12/09 职场文书
询价采购方案
2014/06/09 职场文书
幼儿园端午节活动方案
2014/08/25 职场文书
高中生旷课检讨书
2014/10/08 职场文书
2014年学校党建工作汇报材料
2014/11/02 职场文书
大学生青年志愿者活动总结
2015/05/06 职场文书
小学英语听课心得体会
2016/01/14 职场文书
【DOTA2】高能暴走TK秀!PSG LGD vs ASTER - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA