用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 插件 任意位置浮动固定层
Dec 25 Javascript
jquery iframe操作详细解析
Nov 20 Javascript
jquery实现隐藏在左侧的弹性弹出菜单效果
Sep 18 Javascript
基于JavaScript短信验证码如何实现
Jan 24 Javascript
Angular懒加载机制刷新后无法回退的快速解决方法
Aug 30 Javascript
js实现数字递增特效【仿支付宝我的财富】
May 05 Javascript
详解基于angular-cli配置代理解决跨域请求问题
Jul 05 Javascript
实现div内部滚动条滚动到底部和顶部的代码
Nov 15 Javascript
关于TypeScript模块导入的那些事
Jun 12 Javascript
js调用设备摄像头的方法
Jul 19 Javascript
微信小程序使用车牌号输入法的示例代码
Aug 20 Javascript
layui使用label标签的方法
Sep 14 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生成缩略图的类代码
2008/10/02 PHP
PHP JSON格式数据交互实例代码详解
2011/01/13 PHP
Win下如何安装PHP的APC拓展
2013/08/07 PHP
ThinkPHP 模板substr的截取字符串函数详解
2017/01/09 PHP
JavaScript调用堆栈及setTimeout使用方法深入剖析
2013/02/16 Javascript
html+js实现动态显示本地时间
2013/09/21 Javascript
jQuery的attr与prop使用介绍
2013/10/10 Javascript
js左右弹性滚动对联广告代码分享
2014/02/19 Javascript
jquery中ajax函数执行顺序问题之如何设置同步
2014/02/28 Javascript
JavaScript 实现打印,打印预览,打印设置
2014/12/30 Javascript
jquery通过扩展select控件实现支持enter或focus选择的方法
2015/11/19 Javascript
JS实现字符串转日期并比较大小实例分析
2015/12/09 Javascript
AngularJs解决跨域问题案例详解(简单方法)
2016/05/19 Javascript
Bootstrap学习笔记之css组件(3)
2016/06/07 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
2016/07/14 Javascript
80%应聘者都不及格的JS面试题
2017/03/21 Javascript
bootstrap实现二级下拉菜单效果
2017/11/23 Javascript
node.js中axios使用心得总结
2017/11/29 Javascript
微信小程序如何像vue一样在动态绑定类名
2018/04/17 Javascript
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
2018/04/26 jQuery
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
2018/08/24 Javascript
解决vue 项目引入字体图标报错、不显示等问题
2018/09/01 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
2018/10/19 Javascript
JS实现页面数据懒加载
2020/02/13 Javascript
jdk1.8+vue elementui实现多级菜单功能
2020/09/24 Javascript
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
根据DataFrame某一列的值来选择具体的某一行方法
2018/07/03 Python
Python @property原理解析和用法实例
2020/02/11 Python
美国在线精品家居网站:Burke Decor
2017/04/12 全球购物
行政人员工作职责
2013/12/05 职场文书
六五普法规划实施方案
2014/03/21 职场文书
幼儿园家长评语大全
2014/04/16 职场文书
党员十八大心得体会
2014/09/12 职场文书
工作作风懒散检讨书
2014/10/29 职场文书
2014年度培训工作总结
2014/11/27 职场文书
vue.js 使用原生js实现轮播图
2022/04/26 Vue.js