用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 相关文章推荐
ANT 压缩(去掉空格/注释)JS文件可提高js运行速度
Apr 15 Javascript
angularJS与bootstrap结合实现动态加载弹出提示内容
Oct 16 Javascript
详解JavaScript表单验证(E-mail 验证)
Mar 31 Javascript
实例讲解JavaScript中instanceof运算符的用法
Jun 08 Javascript
Jquery循环截取字符串的方法(多出的字符串处理成&quot;...&quot;)
Nov 28 Javascript
jsp 自动编译机制详细介绍
Dec 01 Javascript
清除输入框内的空格
Dec 21 Javascript
vue实现行列转换的一种方法
Aug 06 Javascript
微信小程序实现点击卡片 翻转效果
Sep 04 Javascript
通过原生vue添加滚动加载更多功能
Nov 21 Javascript
vue内置组件keep-alive事件动态缓存实例
Oct 30 Javascript
详解JS数组方法
Nov 20 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 数组排序方法总结 推荐收藏
2010/06/30 PHP
PHP通过API获取手机号码归属地
2015/05/28 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
JavaScript TO HTML 转换
2006/06/26 Javascript
使用 JScript 创建 .exe 或 .dll 文件的方法
2011/07/13 Javascript
js charAt的使用示例
2014/02/18 Javascript
jQuery实现的多滑动门,多选项卡效果代码
2016/03/28 Javascript
jQuery简单倒计时效果完整示例
2016/09/20 Javascript
easyui combogrid实现本地模糊搜索过滤多列
2017/05/13 Javascript
AngularJS 打开新的标签页实现代码
2017/09/07 Javascript
React Native中NavigatorIOS组件的简单使用详解
2018/01/27 Javascript
jQuery实现新闻播报滚动及淡入淡出效果示例
2018/03/23 jQuery
微信小程序之onLaunch与onload异步问题详解
2019/03/28 Javascript
详解Vue之父子组件传值
2019/04/01 Javascript
JavaScript如何判断对象有某属性
2020/07/03 Javascript
解决Vue中使用keepAlive不缓存问题
2020/08/04 Javascript
vue制作toast组件npm包示例代码
2020/10/29 Javascript
探究Python的Tornado框架对子域名和泛域名的支持
2015/05/02 Python
Python时间的精准正则匹配方法分析
2017/08/17 Python
python DataFrame 修改列的顺序实例
2018/04/10 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
2019/04/18 Python
解决Python正则表达式匹配反斜杠''\''问题
2019/07/17 Python
pytorch 预训练层的使用方法
2019/08/20 Python
python基于TCP实现的文件下载器功能案例
2019/12/10 Python
python 使用opencv 把视频分割成图片示例
2019/12/12 Python
tensorflow的ckpt及pb模型持久化方式及转化详解
2020/02/12 Python
Jupyter加载文件的实现方法
2020/04/14 Python
详解CSS3+JS完美实现放大镜模式
2020/12/03 HTML / CSS
2014年小班元旦活动方案
2014/02/16 职场文书
留学经费担保书
2014/05/12 职场文书
企业金融服务方案
2014/06/03 职场文书
出国签证在职证明
2014/09/20 职场文书
加强干部作风建设整改方案
2014/10/24 职场文书
Pytorch实现图像识别之数字识别(附详细注释)
2021/05/11 Python
如何设置多台电脑共享打印机?多台电脑共享打印机的方法
2022/04/08 数码科技
Java存储没有重复元素的数组
2022/04/29 Java/Android