用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 30 Javascript
javascript中如何处理引号编码&amp;#034;
Aug 15 Javascript
table对象中的insertRow与deleteRow使用示例
Jan 26 Javascript
toggle()隐藏问题的解决方法
Feb 17 Javascript
IE浏览器中图片onload事件无效的解决方法
Apr 29 Javascript
AngularJS表单编辑提交功能实例
Feb 13 Javascript
解决JS外部文件中文注释出现乱码问题
Jul 09 Javascript
利用vue + element实现表格分页和前端搜索的方法
Dec 25 Javascript
angularjs select 赋值 ng-options配置方法
Feb 28 Javascript
JS如何获取地址栏的参数实例讲解
Oct 06 Javascript
Vue递归组件+Vuex开发树形组件Tree--递归组件的简单实现
Apr 01 Javascript
element 中 el-menu 组件的无限极循环思路代码详解
Apr 26 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
自己做矿石收音机
2021/03/02 无线电
PHP form 表单传参明细研究
2009/07/17 PHP
PHP APC的安装与使用详解
2013/06/13 PHP
php导入csv文件碰到乱码问题的解决方法
2014/02/10 PHP
PHP代码优化之成员变量获取速度对比
2014/02/28 PHP
PHP计算一年多少个星期和每周的开始和结束日期
2014/07/01 PHP
php保存二进制原始数据为图片的程序代码
2014/10/14 PHP
php面向对象中static静态属性与方法的内存位置分析
2015/02/08 PHP
PHP的伪随机数与真随机数详解
2015/05/27 PHP
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
2016/03/21 PHP
php的4种常用运行方式详解
2016/12/22 PHP
PHP7 新增功能
2021/03/09 PHP
Javascript 面向对象(三)接口代码
2012/05/23 Javascript
Java/JS获取flash高宽的具体方法
2013/12/27 Javascript
jQuery focus和blur事件的应用详解
2014/01/26 Javascript
html5+javascript制作简易画板附图
2014/04/25 Javascript
基于jQuery实现的QQ表情插件
2015/08/25 Javascript
理解js对象继承的N种模式
2016/01/25 Javascript
jQuery处理XML文件的几种方法
2016/06/14 Javascript
微信小程序使用第三方库Underscore.js步骤详解
2016/09/27 Javascript
全面总结Javascript对数组对象的各种操作
2017/01/22 Javascript
nodejs中全局变量的实例解析
2017/03/07 NodeJs
JS实现的按钮点击颜色切换功能示例
2017/10/19 Javascript
vue父组件向子组件传递多个数据的实例
2018/03/01 Javascript
vue 实现剪裁图片并上传服务器功能
2018/03/01 Javascript
详解如何使用webpack打包JS
2018/06/21 Javascript
深入理解JavaScript 中的匿名函数((function() {})();)与变量的作用域
2018/08/28 Javascript
[01:33]一分钟玩转DOTA2第三弹:DOTA2&DotA快捷操作大对比
2014/06/04 DOTA
python模拟登录百度代码分享(获取百度贴吧等级)
2013/12/27 Python
Python Numpy库常见用法入门教程
2020/01/16 Python
Python学习之os模块及用法
2020/06/03 Python
德国自行车商店:Tretwerk
2019/06/21 全球购物
小学生家长寄语
2014/04/02 职场文书
铁路安全反思材料
2014/12/24 职场文书
总结Python连接CS2000的详细步骤
2021/06/23 Python
关于SpringBoot 使用 Redis 分布式锁解决并发问题
2021/11/17 Redis