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 相关文章推荐
完美解决JS中汉字显示乱码问题(已解决)
Dec 27 Javascript
JavaScript XML和string相互转化实现代码
Jul 04 Javascript
JS 自定义带默认值的函数
Jul 21 Javascript
10款非常有用的 Ajax 插件分享
Mar 14 Javascript
jquery+css+ul模拟列表菜单具体实现思路
Apr 15 Javascript
简单的邮箱登陆的提示效果类似于yahoo邮箱
Feb 26 Javascript
js判断是否为空和typeof的用法(详解)
Oct 07 Javascript
jQuery实现立体式数字动态增加(animate方法)
Dec 21 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
May 18 Javascript
详解小程序云开发数据库
May 20 Javascript
使用Vue.observable()进行状态管理的实例代码详解
May 26 Javascript
京东优选小程序的实现代码示例
Feb 25 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
php类
2006/11/27 PHP
PHP加速 eAccelerator配置和使用指南
2009/06/05 PHP
php的一些小问题
2010/07/03 PHP
flash用php连接数据库的代码
2011/04/21 PHP
Yii2中datetime类的使用
2016/12/17 PHP
php提取微信账单的有效信息
2018/10/01 PHP
javaScript arguments 对象使用介绍
2013/10/18 Javascript
JavaScript fontsize方法入门实例(按照指定的尺寸来显示字符串)
2014/10/17 Javascript
jQuery实现自定义事件的方法
2015/04/17 Javascript
JQuery鼠标移到小图显示大图效果的方法
2015/06/10 Javascript
jquery实现弹出层登录和全屏层注册特效
2015/08/28 Javascript
浅谈angular懒加载的一些坑
2016/08/20 Javascript
jQuery实现立体式数字滚动条增加效果
2016/12/21 Javascript
JavaScript比较两个数组的内容是否相同(推荐)
2017/05/02 Javascript
JavaScript之underscore_动力节点Java学院整理
2017/07/03 Javascript
javascript实现最长公共子序列实例代码
2018/02/05 Javascript
基于Vue实现微信小程序的图文编辑器
2018/07/25 Javascript
微信小程序点击顶部导航栏切换样式代码实例
2019/11/12 Javascript
[43:26]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第二场 11.20
2020/11/23 DOTA
OpenCV-Python实现轮廓检测实例分析
2018/01/05 Python
python机器学习理论与实战(六)支持向量机
2018/01/19 Python
Python叠加两幅栅格图像的实现方法
2019/07/05 Python
python统计文章中单词出现次数实例
2020/02/27 Python
python如何使用腾讯云发送短信
2020/09/17 Python
咨询公司各岗位职责
2013/12/02 职场文书
本科毕业论文导师评语
2014/12/31 职场文书
2014年个人年终总结
2015/03/09 职场文书
大学生实习证明
2015/06/16 职场文书
运动会闭幕式通讯稿
2015/07/18 职场文书
导游词之湖北武当山
2019/09/23 职场文书
Mysql数据库命令大全
2021/05/26 MySQL
k8s部署redis cluster集群的实现
2021/06/24 Redis
golang中字符串MD5生成方式总结
2021/07/04 Golang
Arthas排查Kubernetes中应用频繁挂掉重启异常
2022/02/28 MySQL
MySQL库表太大怎么办? 数据库分库分表项目实践
2022/04/11 MySQL
app场景下uniapp的扫码记录
2022/07/23 Java/Android