javascript实现淡蓝色的鼠标拖动选择框实例


Posted in Javascript onMay 09, 2015

本文实例讲述了javascript实现淡蓝色的鼠标拖动选择框。分享给大家供大家参考。具体实现方法如下:

<!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">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
#rectBox
{
background:#CCFFFF;
border:2px solid #0099FF;
filter:alpha(opacity=30);
opacity:0.3;
position:absolute;
}
</style>
<head>
<title>一个鼠标选择框</title>
<script type="text/javascript">
function Rect()
{
this.doc = document.documentElement;
if(!this.doc) return;
this.startX = '';
this.startY = '';
this.rect = null;
rectSelf = this;
}
Rect.prototype.down = function(e)
{
var e = e?e:window.event;
rectSelf.startX = e.clientX?e.clientX + document.body.scrollLeft:e.pageX;
rectSelf.startY = e.clientY?e.clientY + document.body.scrollTop:e.pageY;
rectSelf.showRect(true);
}
Rect.prototype.up = function(e)
{
rectSelf.rectBox.style.width = '0px';
rectSelf.rectBox.style.height = '0px';
rectSelf.showRect(false);
}
Rect.prototype.move = function(e)
{
if(rectSelf.rectBox)
{
var currentX = e.clientX?e.clientX + rectSelf.doc.scrollLeft:e.pageX;
var currentY = e.clientY?e.clientY + rectSelf.doc.scrollTop:e.pageY;
rectSelf.rectBox.style.width = Math.abs(currentX - rectSelf.startX) + 'px';
rectSelf.rectBox.style.height = Math.abs(currentY - rectSelf.startY) + 'px';
if(currentX - rectSelf.startX < 0)
{
rectSelf.rectBox.style.left = currentX + 'px';
}
if(currentY - rectSelf.startY < 0)
{
rectSelf.rectBox.style.top = currentY + 'px';
}
//document.title = "left:"+currentX + 'px '+"top:"+currentY + 'px ';
}
}
Rect.prototype.showRect = function(bool)
{
if(bool)
{
if(!this.rectBox)
{
this.rectBox = document.createElement("div");
this.rectBox.id = "rectBox";
document.body.appendChild(this.rectBox);
}
this.rectBox.style.display = "block";
this.rectBox.style.left = this.startX + 'px';
this.rectBox.style.top = this.startY + 'px'; 
this.addEventListener(this.doc , 'mousemove' , this.move);
}
else
{
if(this.rectBox)
{
this.rectBox.style.display = "none";
}
this.removeEventListener(this.doc , 'mousemove' , this.move);
}
}
Rect.prototype.addEventListener = function(o,e,l) 
{
if (o.addEventListener) {
o.addEventListener(e,l,false);
} else if (o.attachEvent) {
o.attachEvent('on'+e,function() {
l(window.event);
});
}
}
Rect.prototype.removeEventListener = function(o,e,l) 
{
if (o.removeEventListener) {
o.removeEventListener(e,l,false);
} else if (o.detachEvent) {
o.detachEvent('on'+e,function() {
l(window.event);
});
}
}
window.onload = function()
{
var oRect = new Rect();
oRect.addEventListener(oRect.doc , 'mousedown' , oRect.down);
oRect.addEventListener(oRect.doc , 'mouseup' , oRect.up);
}
</script>
</head>
<body>
<h1>拖动你的鼠标就会出现选择框</h1>
</body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
ExtJS 学习专题(一) 如何应用ExtJS(附实例)
Mar 11 Javascript
jquery 仿QQ校友的DIV模拟窗口效果源码
Mar 24 Javascript
jquery each()源代码
Feb 14 Javascript
扩展jquery实现客户端表格的分页、排序功能代码
Mar 16 Javascript
JavaScript ECMA-262-3 深入解析.第三章.this
Sep 28 Javascript
CSS(js)限制页面显示的文本字符长度
Dec 27 Javascript
js过滤特殊字符输入适合输入、粘贴、拖拽多种情况
Mar 22 Javascript
解决vue-cli中stylus无法使用的问题方法
Jun 19 Javascript
微信小程序实现自定义picker选择器弹窗内容
May 26 Javascript
jQuery实现ajax的嵌套请求案例分析
Feb 16 jQuery
webpack4 配置 ssr 环境遇到“document is not defined”
Oct 24 Javascript
jQuery实现计算器功能
Oct 19 jQuery
javasript实现密码的隐藏与显示
May 08 #Javascript
jquery实现动态改变div宽度和高度
May 08 #Javascript
jquery右下角自动弹出可关闭的广告层
May 08 #Javascript
jQuery实现鼠标经过图片变亮其他变暗效果
May 08 #Javascript
JavaScript实现自动变换表格边框颜色
May 08 #Javascript
JavaScript基于setTimeout实现计数的方法
May 08 #Javascript
jQuery基于图层模仿五星星评价功能的方法
May 07 #Javascript
You might like
复杂检索数据并分页显示的处理方法
2006/10/09 PHP
用php实现批量查询清除一句话后门的代码
2008/01/20 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
2016/10/03 PHP
JavaScript 异步调用框架 (Part 1 - 问题 &amp; 场景)
2009/08/03 Javascript
Javascript的一种模块模式
2010/09/08 Javascript
javascript高级学习笔记整理
2011/08/14 Javascript
jQuery ajax dataType值为text json探索分享
2013/09/23 Javascript
ExtJS 刷新后如何默认选中刷新前最后一次选中的节点
2014/04/03 Javascript
JavaScript中Date对象的常用方法示例
2015/10/24 Javascript
javascript实现全角转半角的方法
2016/01/23 Javascript
jQuery特殊符号转义的实现
2016/11/30 Javascript
获取IE浏览器Cookie信息的方法
2017/01/23 Javascript
JS匹配日期和时间的正则表达式示例
2017/05/12 Javascript
javascript中的隐式调用
2018/02/10 Javascript
JS实现根据指定值删除数组中的元素操作示例
2018/08/02 Javascript
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
浅析vue中的provide / inject 有什么用处
2019/11/10 Javascript
vue中父子组件的参数传递和应用示例
2021/01/04 Vue.js
[02:42]2014DOTA2国际邀请赛 三冰专访:我会打到Ti20
2014/07/13 DOTA
Python生成随机MAC地址
2015/03/10 Python
django接入新浪微博OAuth的方法
2015/06/29 Python
Python爬虫抓取手机APP的传输数据
2016/01/22 Python
python中WSGI是什么,Python应用WSGI详解
2017/11/24 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
2018/05/30 Python
python实现多层感知器
2019/01/18 Python
Python数据报表之Excel操作模块用法分析
2019/03/11 Python
python3+PyQt5 使用三种不同的简便项窗口部件显示数据的方法
2019/06/17 Python
pandas.read_csv参数详解(小结)
2019/06/21 Python
python常用数据重复项处理方法
2019/11/22 Python
PyCharm使用之配置SSH Interpreter的方法步骤
2019/12/26 Python
基于python 凸包问题的解决
2020/04/16 Python
学术诚信承诺书
2014/05/26 职场文书
中学清明节活动总结
2014/07/04 职场文书
小学生五年级大队长竞选发言稿
2014/09/12 职场文书
2014年小学重阳节活动策划方案
2014/09/16 职场文书
java协程框架quasar和kotlin中的协程对比分析
2022/02/24 Java/Android