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 相关文章推荐
刷新页面实现方式总结(HTML,ASP,JS)
Nov 13 Javascript
解读JavaScript中 For, While与递归的用法
May 07 Javascript
JS求平均值的小例子
Nov 29 Javascript
JavaScript极简入门教程(一):基础篇
Oct 25 Javascript
JS操作JSON方法总结(推荐)
Jun 14 Javascript
详解RequireJS按需加载样式文件
Apr 12 Javascript
js学习总结_选项卡封装(实例讲解)
Jul 13 Javascript
vue父组件中获取子组件中的数据(实例讲解)
Sep 27 Javascript
Vue.js获取被选择的option的value和text值方法
Aug 24 Javascript
代码分析vue中如何配置less
Sep 28 Javascript
vue项目打包之后背景样式丢失的解决方案
Jan 17 Javascript
关于vue.js中实现方法内某些代码延时执行
Nov 14 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 ajax 静态分页过程形式
2011/09/02 PHP
php中flush()、ob_flush()、ob_end_flush()的区别介绍
2013/02/17 PHP
PHP自定session保存路径及删除、注销与写入的方法
2014/11/18 PHP
Laravel5.4框架中视图共享数据的方法详解
2019/09/05 PHP
基于jQuery的实现简单的分页控件
2010/10/10 Javascript
javascript学习笔记(八) js内置对象
2012/06/19 Javascript
JS获取图片实际宽高及根据图片大小进行自适应
2013/08/11 Javascript
js判断滚动条是否已到页面最底部或顶部实例
2014/11/20 Javascript
jQuery判断数组是否包含了指定的元素
2015/03/10 Javascript
javascript表单正则应用
2017/02/04 Javascript
nodejs模块nodemailer基本使用-邮件发送示例(支持附件)
2017/03/28 NodeJs
jquery引入外部CDN 加载失败则引入本地jq库
2018/05/23 jQuery
微信小程序 checkbox使用实例解析
2019/09/09 Javascript
Javascript和jquery在selenium的使用过程
2019/10/31 jQuery
js实现数字从零慢慢增加到指定数字示例
2019/11/07 Javascript
JS检索下拉列表框中被选项目的索引号(selectedIndex)
2019/12/17 Javascript
如何在selenium中使用js实现定位
2020/08/18 Javascript
js+canvas实现转盘效果(两个版本)
2020/09/13 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
2020/10/20 Javascript
web.py在模板中输出美元符号的方法
2014/08/26 Python
python 简单的多线程链接实现代码
2016/08/28 Python
PyCharm代码整体缩进,反向缩进的方法
2018/06/25 Python
Flask实现跨域请求的处理方法
2018/09/27 Python
Python实现账号密码输错三次即锁定功能简单示例
2019/03/29 Python
对python 调用类属性的方法详解
2019/07/02 Python
Python re 模块findall() 函数返回值展现方式解析
2019/08/09 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
2020/03/12 Python
CSS3 calc()会计算属性详解
2018/02/27 HTML / CSS
HTML5页面中尝试调起APP功能
2017/09/12 HTML / CSS
拥有超过850家商店的美国在线派对商店:Party City
2018/10/21 全球购物
电脑教师的教学自我评价
2013/11/26 职场文书
圣诞节开幕词
2015/01/29 职场文书
2015年乡镇民政工作总结
2015/05/13 职场文书
会议主持人开场白台词
2015/05/28 职场文书
JavaScript中的宏任务和微任务详情
2021/11/27 Javascript
浅谈Redis跟MySQL的双写问题解决方案
2022/02/24 Redis