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 相关文章推荐
node.js 一个简单的页面输出实现代码
Mar 07 Javascript
JavaScript的setAttribute兼容性问题解决方法
Nov 11 Javascript
jQuery获取节点和子节点文本的方法
Jul 22 Javascript
javascript原型模式用法实例详解
Jun 04 Javascript
老生常谈js-react组件生命周期
May 02 Javascript
JS回调函数基本定义与用法实例分析
May 24 Javascript
webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)
Jan 09 Javascript
详解vuex的简单使用
Mar 12 Javascript
浅谈Webpack核心模块tapable解析
Sep 11 Javascript
JavaScript Window浏览器对象模型原理解析
May 30 Javascript
解决vue单页面多个组件嵌套监听浏览器窗口变化问题
Jul 30 Javascript
vue 获取元素额外生成的data-v-xxx操作
Sep 09 Javascript
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
第1次亲密接触PHP5(1)
2006/10/09 PHP
php读取EXCEL文件 php excelreader读取excel文件
2012/12/06 PHP
PHP生成不重复标识符的方法
2014/11/21 PHP
PHP中配置IIS7实现基本身份验证的方法
2015/09/24 PHP
php实现图片上传并进行替换操作
2016/03/15 PHP
PHP获取用户客户端真实IP的解决方案
2016/10/10 PHP
详解php语言最牛掰的Laravel框架
2017/11/20 PHP
如何在Laravel之外使用illuminate组件详解
2020/09/20 PHP
收藏一些不常用,但是有用的代码
2007/03/12 Javascript
javascript 复杂的嵌套环境中输出单引号和双引号
2009/05/26 Javascript
javascript判断office版本示例
2014/04/11 Javascript
如何用JavaScript定义一个类
2014/09/12 Javascript
JS实现的4种数字千位符格式化方法分享
2015/03/02 Javascript
JavaScript实现基于十进制的四舍五入实例
2015/07/17 Javascript
jQuery mobile 移动web(6)
2015/12/20 Javascript
jQuery属性选择器用法示例
2016/09/09 Javascript
浅谈vue的iview列表table render函数设置DOM属性值的方法
2017/09/30 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
2019/04/10 Javascript
详解ES6 CLASS在微信小程序中的应用实例
2020/04/24 Javascript
windows系统中python使用rar命令压缩多个文件夹示例
2014/05/06 Python
Python3.2中的字符串函数学习总结
2015/04/23 Python
python 接口测试response返回数据对比的方法
2018/02/11 Python
Python中的引用知识点总结
2019/05/20 Python
如何在Anaconda中打开python自带idle
2020/09/21 Python
Python基于内置函数type创建新类型
2020/10/22 Python
新加坡最佳婴儿用品店:Mamahood.com.sg
2018/08/26 全球购物
俄罗斯汽车零件和配件在线商店:CarvilleShop
2019/11/29 全球购物
学校后勤人员职责
2013/12/27 职场文书
公司总经理岗位职责范本
2014/08/15 职场文书
教师群众路线学习心得体会
2014/11/04 职场文书
2015年乡镇科普工作总结
2015/05/13 职场文书
幼儿园园务工作总结2015
2015/05/18 职场文书
多表查询、事务、DCL
2021/04/05 MySQL
ORACLE查看当前账号的相关信息
2021/06/18 Oracle
Jackson 反序列化时实现大小写不敏感设置
2021/06/29 Java/Android
Redis官方可视化工具RedisInsight安装使用教程
2022/04/19 Redis