使用div创建选取框
使用div实现了选取框效果.
代码如下
<!DOCTYPE html>
<html>
<head>
<title>myCanvasTest</title>
<style type="text/css">
#selection{
border: 3px red solid;
display: none;
position: absolute;
}
*{
cursor: crosshair;
}
</style>
</head>
<body>
<div id="selection"></div>
</body>
<script type="text/javascript">
var selection, //存储坐标量(方便用)
flag = false, //作为是否在鼠标点击时的移动标记
selectionDiv = document.getElementById("selection"); //获取选取框div对象 //初始化坐标对象
function init () {
selection = {
top :0,
left :0,
width :0,
height :0
};
} //鼠标按下,记录坐标
function setLocation (x, y) {
selection.left = x;
selection.top = y;
} //鼠标移动计算距离存入宽高
function moveLocation (x, y) {
selection.width = selection.left - x;
selection.height = selection.top - y;
moveIt();
} //更新div坐标尺寸信息
function moveIt () {
console.log(selection);
//高度宽度小于0时说明拖拽x,y为正值,如小于0说明拖动为反方向.需重新计算top及left保证拖拽效果
selectionDiv.style.top = (selection.height < 0 ?
selection.top :
selection.top - selection.height)
+ "px";
selectionDiv.style.left = (selection.width < 0 ?
selection.left :
selection.left - selection.width)
+ "px";
//Math.abs()方法返回绝对值
selectionDiv.style.width = Math.abs(selection.width)
+ "px";
selectionDiv.style.height = Math.abs(selection.height)
+ "px";
} //显示选取框div
function showIt () {
selectionDiv.style.display = "block";
} //隐藏选取框div
function hideIt () {
selectionDiv.style.display = "none";
} //鼠标按下触发事件
window.onmousedown = function (e) {
var x = e.clientX,
y = e.clientY;
//初始化坐标对象
init();
//显示div对象
showIt();
//设置top,left值.作为本次拖拽的原点
setLocation(x, y);
//调用移动方法
moveIt();
//将标记打开
flag = true;
} //鼠标移动时触发
window.onmousemove = function (e) {
var x = e.clientX,
y = e.clientY;
//当标记开启时,触发事件
if(flag)
moveLocation(x, y);
} //鼠标抬起,触发事件,将div隐藏,清除坐标对象,关闭标记
window.onmouseup = function (e) {
//隐藏div
hideIt();
//清除坐标信息
init();
//关闭标记
flag = false;
} </script>
</html>
感觉在编码的时候.卡在了x,y都为负值的地方.
为了保证在x,y都为负值时还有拖拽效果.必须要将div的位置移动.
看起来就像拖拽一样.实则在更新大小的同时更新了div的坐标位置
使用div创建选取框的更多相关文章
- HTML创建文本框的3种方式
我的第一个随笔,记录主要用来整理学习的知识点 1.input 创建单行文本框 <input type="text" size="10" maxlength ...
- Python测试开发-创建模态框及保存数据
Python测试开发-创建模态框及保存数据 原创: fin 测试开发社区 前天 什么是模态框? 模态框是指的在覆盖在父窗体上的子窗体.可用来做交互,我们经常会看到模态框用来登录.确定等等,到底是怎 ...
- easyUI draggable插件使用不当,导致拖动div内部文本框无法输入;设置echarts数据为空时就显示空白,不要动画和文字
先上一个Demo <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://ww ...
- DIV+CSS区块框浮动设计
在页面布局的时候,能够用绝对定位来实现,可是因为调整某个区块框时其它区块的位置不会对应的改变,所以这并非布局的首选方式.可是使用浮动的区块框能够向左或向右移动,直到它的外边缘碰到包括它区块的边框或还有 ...
- word中创建文本框
word中创建文本框 在插入中点击"文本框"选项卡,例如以下图所看到的: 手工加入自己想要的文本框格式,然后选择所创建的文本框,在工具栏处会发现多了一 ...
- div模拟文本框textarea
需求:利用highlight.js对文本框中的内容进行高亮显示 1.highlight.js使用 js中:<script src="js/highlight/highlight.pac ...
- 使用Htmlhelper,创建文本框TextBox
下面通过HtmlHelper帮助类,创建文本框. 首先新建一个实体类,做为下面的例子: using System; using System.Collections.Generic; using Sy ...
- html的table使用div创建
午休时间写了一个使用div创建table的案例 1.样式 <style> .table { display: table; } .tableRow { display: table-row ...
- ASP.NET div信息提示框显示几秒后隐藏
今天在旧系统中,用户要求,要把一个javascript alert的信息提示,改为Div tag来显示,它在显示时,仅显示几秒,然后隐藏,这样无需用户去点击alert信息框的确定或是关闭铵钮. 下面I ...
随机推荐
- linq join多字段
from VS in m2db.Inf_VehicleSale join RS1 in m2db.His_RecSale on new { VS.vehicleCode, auctionCode=VS ...
- 十家国内知名的EDM服务提供商
国内的EDM服务商多若繁星.下面博主为大家介绍十家国内知名的EDM服务提供商. 一.Webpower 威勃庞尔. 官方网站是:www.webpower.asia.作为全球领先的邮件营销解决方案提供商, ...
- xming + putty 搭建远程图形化ssh访问ubuntu 14.04
putty下载: http://www.putty.org/ 一般我们远程登录linux 服务器,都是使用非加密的 telnet 或者加密的 ssh.这些登录方式有一个特点:只能登录字符界面,不能运行 ...
- IBM powerVM VIOS
引言 随着信息化技术不断发展,各个企业 IT 基础架构也在不断朝向虚拟化,大数据,云计算等精简,整合的趋势发展.虚拟化技术就显得尤为重要.今天要给大家介绍的是 Power 服务器虚拟化技术中的一小部分 ...
- IntelliJ IDEA 我的配置--留个脚印
PS:先PS一下汉化包,导致版本从2016.2无法升级到2016.2.1. 卸载!重新从官网下载最新安装包来安装! https://www.jetbrains.com/ 官方有Community和Ul ...
- Sql触发器模板
触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程. 触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. SQL Server 2005中触发器可以分 ...
- EventKit 学习(译)
From:http://docs.xamarin.com/guides/ios/platform_features/introduction_to_eventkit/ 本教程展示了对于如何通过Even ...
- Outlook Web App简介
一.什么是Outlook Web AppOutlook Web Access简称OWA是基于微软Hosted Exchange技术的托管邮局的一项Web访问功能.通过访问Outlook Web Acc ...
- An Introduction to Garbage Collection(垃圾回收简介)
1. Introduction 2. Principles 3. Advantages 4. Disadvantages 5. 常见的垃圾回收技术 5.1. 跟踪式垃圾回收 5.1.1. 基本算法 5 ...
- 透过WebGL 3D看动画Easing函数本质
50年前的这个月诞生了BASIC这门计算机语言,回想起自己喜欢上图形界面这行,还得归功于当年在win98下用QBASIC照葫芦画瓢敲了一段绘制奥运五环的代码,当带色彩的奥运五环呈现在自己面前时我已知道 ...