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 相关文章推荐
ajax 缓存 问题 requestheader
Aug 01 Javascript
js控制input输入字符解析
Dec 27 Javascript
详解jQuery中的元素的属性和相关操作
Aug 14 Javascript
Ajax使用原生态JS验证用户名是否存在
May 26 Javascript
jQuery Validate插件自定义验证规则的方法
Dec 27 Javascript
JavaScript实现反转字符串的方法详解
Apr 27 Javascript
JavaScript之RegExp_动力节点Java学院整理
Jun 29 Javascript
jQuery插件jsonview展示json数据
May 26 jQuery
json前后端数据交互相关代码
Sep 19 Javascript
vue 实现左右拖拽元素并且不超过他的父元素的宽度
Nov 30 Javascript
解决removeEventListener 无法清除监听的问题
Oct 30 Javascript
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
Apr 30 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
用PHP4访问Oracle815
2006/10/09 PHP
CI框架中集成CKEditor编辑器的教程
2014/06/09 PHP
PHP中cookie和session的区别实例分析
2014/08/28 PHP
php编写的一个E-mail验证类
2015/03/25 PHP
smarty简单应用实例
2015/11/03 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
2017/07/27 PHP
javascript 带有滚动条的表格,标题固定,带排序功能.
2009/11/13 Javascript
Javascript动态绑定事件的简单实现代码
2010/12/25 Javascript
分享10篇优秀的jQuery幻灯片制作教程及应用案例
2011/04/16 Javascript
javascript中实现兼容JAVA的hashCode算法代码分享
2020/08/11 Javascript
JavaScript面对国际化编程时的一些建议
2015/06/24 Javascript
Nodejs中session的简单使用及通过session实现身份验证的方法
2016/02/04 NodeJs
Web性能优化系列 10个提升JavaScript性能的技巧
2016/09/27 Javascript
jQuery实现弹幕效果
2017/02/17 Javascript
关于Javascript中document.cookie的使用
2017/03/08 Javascript
基于Vue实现后台系统权限控制的示例代码
2017/08/29 Javascript
从源码看angular/material2 中 dialog模块的实现方法
2017/10/18 Javascript
JS与jQuery判断文本框还剩多少字符可以输入的方法
2018/09/01 jQuery
详解Vue依赖收集引发的问题
2019/04/22 Javascript
ES6 Proxy实现Vue的变化检测问题
2019/06/11 Javascript
Js代码中的span拼接问题解决
2019/11/22 Javascript
Vue.js原理分析之nextTick实现详解
2020/09/07 Javascript
Python循环语句中else的用法总结
2016/09/11 Python
老生常谈Python基础之字符编码
2017/06/14 Python
解决Django数据库makemigrations有变化但是migrate时未变动问题
2018/05/30 Python
python批量查询、汉字去重处理CSV文件
2018/05/31 Python
python实现人民币大写转换
2018/06/20 Python
python 实现A*算法的示例代码
2018/08/13 Python
python 计算平均平方误差(MSE)的实例
2019/06/29 Python
Python散点图与折线图绘制过程解析
2019/11/30 Python
Python 列表中的修改、添加和删除元素的实现
2020/06/11 Python
名人珠宝设计师:Melinda Maria Jewelry
2019/03/06 全球购物
党的群众路线教育实践活动个人剖析材料
2014/10/07 职场文书
干部职工纪律作风整改措施思想汇报
2014/10/11 职场文书
水电工程师岗位职责
2015/02/13 职场文书
2015年小班保育员工作总结
2015/05/27 职场文书