使用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 ...
随机推荐
- Clough-Tocher
Clough-Tocher The Clough-Tocher interpolation technique is often referred to in the literature as a ...
- 微信公众号开发第六课 BAE结合实现迅雷账号随机分享
迅雷离线是个好东西,那么我们能不能实现这样一个功能,回复迅雷,随机返回一个迅雷账户和密码. 首先在t_type类型表中添加 迅雷以及对应用值xunlei,这样返回的case值中对应值xunlei. 建 ...
- 游戏开发工具之纹理打包器-3.使用GDI+绘图
上一次我们实现了把我们要的图片添加到CTreeCtrl控件里去,并显示图片的缩略图,现在开始我们要讲比较重要的部分--绘图区.为了实现能编辑图片的功能,绘图区应该具有如下功能. 1. 添加删除图片. ...
- codeforces Fedor and New Game
#include<iostream> #include<stack> #include<cstring> #include<cstdio> #inclu ...
- Could not load file or assembly 'System.Core, Version=2.0.5.0 和autofac冲突的问题
在部署到iis的时候会出现这个状况. 解决:下载安装这个补丁 http://support.microsoft.com/kb/2468871 http://www.microsoft.com/zh-c ...
- [IR] Ranking - top k
PageRanking 通过: Input degree of link "Flow" model - 流量判断喜好度 传统的方式又是什么呢? Every term在某个doc中的 ...
- Microsoft Visual Studio 2013 VSTS单元测试指南
安装vs2013时并未安装VSTS工具包,所以在工具栏:工具->拓展和更新 进行下载安装 vs13已经用了两年了,相比于之前老师推荐的vc6.0感觉要强出很多,刚上手时感觉比较困难,在使用一 ...
- LeetCode——Find Median from Data Stream
Median is the middle value in an ordered integer list. If the size of the list is even, there is no ...
- 一个关于explain出来为all的说明及优化
explain sql语句一个语句,得到如下结果,为什么已经创建了t_bill_invests.bid_id的索引,但却没有显示using index,而是显示all扫描方式呢,原来这还与select ...
- “康园圈--互联网+校园平台“项目之sprint1总结
一.团队成员 梁植淋,官郅豪,纪焓,詹耀海 二.目前进度 在全体组员的努力下,目前完成了项目的<设计方案书>.<功能需求书>.框架搭建.项目部署文档. 并成 ...