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 07 Javascript
Javascript之文件操作
Mar 07 Javascript
ASP.NET jQuery 实例6 (实现CheckBoxList成员全选或全取消)
Jan 13 Javascript
javascript+canvas实现刮刮卡抽奖效果
Jul 29 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
Jul 01 Javascript
vue.js入门教程之基础语法小结
Sep 01 Javascript
node.js中实现kindEditor图片上传功能的方法教程
Apr 26 Javascript
angular4 如何在全局设置路由跳转动画的方法
Aug 30 Javascript
20行JS代码实现粘贴板复制功能
Feb 06 Javascript
vue动态配置模板 'component is'代码
Jul 04 Javascript
javaScript中indexOf用法技巧
Nov 26 Javascript
如何在 Vue 中使用 JSX
Feb 14 Vue.js
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一些公用函数的集合
2008/03/27 PHP
php截取后台登陆密码的代码
2012/05/05 PHP
php 获取本地IP代码
2013/06/23 PHP
php广告加载类用法实例
2014/09/23 PHP
php实现随机显示图片方法汇总
2015/05/21 PHP
php源码分析之DZX1.5字符串截断函数cutstr用法
2015/06/17 PHP
简单的无缝滚动程序-仅几行代码
2007/05/08 Javascript
JavaScript设计模式之适配器模式介绍
2014/12/28 Javascript
jQuery中 attr() 方法使用小结
2015/05/03 Javascript
js实现分割上传大文件
2016/03/09 Javascript
jQuery实现一个简单的轮播图
2017/02/19 Javascript
react-native DatePicker日期选择组件的实现代码
2017/09/12 Javascript
初学者AngularJS的环境搭建过程
2017/10/27 Javascript
vue webpack重写cookie路径的方法
2019/07/10 Javascript
微信小程序渲染性能调优小结
2019/07/30 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
2019/09/03 Javascript
vue开发简单上传图片功能
2020/06/30 Javascript
vue同个按钮控制展开和折叠同个事件操作
2020/07/29 Javascript
JavaScript ES 模块的使用
2020/11/12 Javascript
vue-router路由懒加载及实现的3种方式
2021/02/28 Vue.js
Python中threading模块join函数用法实例分析
2015/06/04 Python
Python进程间通信用法实例
2015/06/04 Python
python模拟表单提交登录图书馆
2018/04/27 Python
Python数据分析matplotlib设置多个子图的间距方法
2018/08/03 Python
python 自动批量打开网页的示例
2019/02/21 Python
Django forms表单 select下拉框的传值实例
2019/07/19 Python
TFRecord文件查看包含的所有Features代码
2020/02/17 Python
最新版 Windows10上安装Python 3.8.5的步骤详解
2020/11/28 Python
Sneaker Studio捷克:购买运动鞋
2018/07/08 全球购物
岗位竞聘演讲稿
2014/01/10 职场文书
技校毕业生个人学习的自我评价
2014/02/21 职场文书
目标责任书范本
2014/04/16 职场文书
美术学专业求职信
2014/07/23 职场文书
实习指导老师意见
2015/06/04 职场文书
小学英语教学反思范文
2016/02/15 职场文书
关于nginx 实现jira反向代理的问题
2021/09/25 Servers