今天一直在纠结JS画矩形,找了很多资料,终于找到个像样点的了,自己改了点,不过还存在一些问题
<form name="myForm" action="exportToExcel" method="POST">
<div style="position:absolute;top:1260px;left:400px;z-index:-1;">
<input type="button" value="select" onclick="beginSelect()"
name="select" />
<input type="button" value="export" onclick="get()" name="export" />
<input type="hidden" name="textDatas">
</div>
</form>
</div>
<iframe name=saveWin height=0 width=0></iframe>
<div id="ld" class="area" style="filter: Alpha(Opacity=60)"></div>
</body>
<script language='javascript'>
var value = "";
int index=0;
//矩形选择区域
var client_x = 0;
var client_y = 0;
var bLeftDown = false;
var bSelected =false;
var bClick = false;
//存矩形选择区域
var tempX1=0;
var tempY1=0;
var tempX2=0;
var tempY2=0;
//将像素字符串转成int
function changePixelToInt(pixel){
var str = pixel;
return parseInt(str.substring(0,str.indexOf("px")));
}
//这里是得到所选矩形区域内的所有文本框值
function get(){
if(!bSelected)
{
window.alert("请选择要导出的区域!");
return;
}
//获得矩形选择区域坐标
tempX1=changePixelToInt(ld.style.left);
tempY1=changePixelToInt(ld.style.top);
tempX2=tempX1+changePixelToInt(ld.style.width);
tempY2=tempY1+changePixelToInt(ld.style.height);
var texts = document.myForm.elements;
for(var i = 0; i < texts.length; i ++){
if(texts[i].type == 'text'){
getAbsPoint(texts[i]);
}
}
document.myForm.textDatas.value=value;//将文本框信息赋给POST
init();
document.myForm.submit();
}
//获得文本框信息
function getAbsPoint(obj)
{
var x,y;
var oRect = obj.getBoundingClientRect();
x=oRect.left +document.body.scrollLeft ;
y=oRect.top +document.body.scrollTop ;
//判断是否在所选区域内
if(Math.max(x,tempX1)>=Math.min(x+obj.offsetWidth,tempX2) || Math.max(y,tempY1)>=Math.min(y+obj.offsetHeight,tempY2)){
//两个矩形不相交,则不在所选区域内,退出
return;
}
//文本框信息用#分开
var s = index+"#"+obj.value+"#"+x+"#"+y+"#"+obj.offsetWidth+"#"+obj.offsetHeight;
value +=s;
value+="!"; //将各文本框组合成长串
index++;
}
//初始化
function init(){
bSelected = false;
document.myForm.select.value="select";
ld.style.width = 0;
ld.style.height = 0;
ld.style.left = client_x;
ld.style.top = client_y;
ld.style.visibility = "hidden";
bClick = false;
tempX1=0;
tempY1=0;
tempX2=0;
tempY2=0;
value = "";
}
//是否变成可选择状态
function beginSelect(){
var value = document.myForm.select.value;
if(value=="select"){
bSelected = true;
document.myForm.select.value="cancel";
}
else{
bSelected = false;
document.myForm.select.value="select";
}
}
//随鼠标运动的更改函数
function resize()
{
if(bSelected){
if(bLeftDown){
if(bClick){
ld.style.width = 0;
ld.style.height = 0;
ld.style.left = client_x;
ld.style.top = client_y;
ld.style.visibility = "visible";
bClick = false;
}
var scroll_left = document.body.scrollLeft;
var scroll_top = document.body.scrollTop;
var new_x = event.clientX + scroll_left;
var new_y = event.clientY + scroll_top;
//swordmaple javascript article @jx165.com
//by im286 yeye
//取得当前鼠标位置
if (new_y>=client_y) temp_height = new_y - client_y;
else {
temp_height = client_y - new_y;
ld.style.top = new_y;
}
//如果上下移动
if (new_x>=client_x) temp_width = new_x - client_x;
else {
temp_width = client_x - new_x;
ld.style.left = new_x;
}
//如果左右移动
ld.style.width = temp_width;
ld.style.height = temp_height;
//重设层的宽度及位置
return false;
}}
}
//点击鼠标重设
function reset()
{
if(bSelected){
if(event.button == 1)
bLeftDown = true;
if(bLeftDown){
bClick = true;
client_x = event.clientX + document.body.scrollLeft;
client_y = event.clientY + document.body.scrollTop;
}
}
//初始定义层属性
}
//放开鼠标键操作
function mouseup(){
bLeftDown = false;
}
document.onmousedown = reset;
document.onmousemove = resize;
document.onmouseup = mouseup;
</script>
</html>
分享到:
相关推荐
综上所述,这个简单的JS画矩形代码利用了HTML5的`canvas`元素和其相关的绘图API,结合鼠标事件监听,实现了动态交互的矩形绘制功能。通过这个实例,我们可以更好地理解JavaScript在网页动态效果中的应用,并为进一步...
本教程将深入探讨如何使用jQuery实现一个功能,即在选定的图片上绘制带有颜色的矩形框,以便用户可以标记或选择图片的特定区域。这个功能常见于图像编辑工具、标注应用或者数据分析场景,通过获取XY轴坐标,可以精确...
- 可以监听鼠标事件(如`mousedown`、`mousemove`和`mouseup`)来实现用户选择和拖动矩形区域。 - 使用`getBoundingClientRect()`方法获取元素的边界信息,用于计算鼠标位置和热区的关系。 4. **Canvas 绘制蒙版*...
在Vue项目中实现图片上画矩形框并获取对角坐标以及设置`<map>`中的`<area>`样式,涉及到的技术主要包括JavaScript、HTML5的绘图API以及图像热区技术。接下来,我们将深入探讨这些知识点。 1. **JavaScript绘图API**...
在JavaScript(简称JS)编程中,实现鼠标拉框截图是一项常见的功能,特别是在Web应用中,如在线编辑器、协作工具等。这个功能的核心是通过监听鼠标事件,结合HTML5的Canvas API来完成图像的选择和捕获。以下是实现这...
在Vue.js框架中实现图像上绘制矩形框并获取对角坐标的功能,是常见的图像处理需求,例如在图像标注、对象检测等应用场景中。本文将详细介绍如何在Vue项目中完成这个任务。 首先,我们需要了解Vue的基本概念。Vue.js...
Vue使用鼠标在Canvas上绘制矩形 本文实例为大家分享了Vue使用鼠标在Canvas上绘制矩形的具体代码,供大家参考,具体内容如下 1.代码 <template> ;"> width="460" height="240" @mousedown="mousedown" @...
这个功能可以让用户通过鼠标拖动来选取一个矩形区域内的元素,比如在文本编辑器中选择文字,或者在图像编辑工具中选取部分图像。下面将详细解释如何实现这一功能。 首先,我们需要监听鼠标的`mousedown`、`...
在这个案例中,我们将用JavaScript监听鼠标的按下、移动和释放事件,以便用户可以选取一个矩形区域。 核心的JavaScript代码通常会包括以下几个部分: 1. **事件监听**:使用`addEventListener`方法添加对鼠标事件...
这些知识在实际应用中非常广泛,例如,你可以创建一个地图应用,用户可以在地图上画出矩形区域,然后获取该区域的面积,或者用作地理围栏设定,触发特定的业务逻辑。 总结,Leaflet提供的矩形采集与编辑功能,结合...
在本示例中,我们将探讨如何使用jQuery来创建一个可拖动的矩形框,并且这个功能...这在创建交互式界面,特别是需要用户自定义选择区域的应用场景中非常有用。理解这一技术可以帮助开发者更高效地构建富交互的Web应用。
例如,画矩形的API是: ```javascript // 参数:x轴起点坐标,y轴起点坐标,矩形宽度,矩形高度 ctx.fillRect(x, y, width, height); // 参数:x轴起点坐标,y轴起点坐标,矩形宽度,矩形高度,边框宽度,边框颜色...
"跟随鼠标画线applet"是一个基于Java Applet技术的简单图形绘制程序,它允许用户在网页上通过鼠标操作来绘制线条。Applet是Java的一种小程序,可以嵌入到HTML页面中,为用户提供交互式的体验。 这个applet的核心...
这个"按住鼠标左键选中区域元素框js代码.zip"文件包含了一个JavaScript实现的功能,即允许用户通过长按鼠标左键在网页上选择一个矩形区域,从而选中该区域内所有元素。这种功能在数据可视化、图像编辑或用户自定义...
- **模块化**:项目中的`shape.js`和`drawshape.js`可能包含了形状类定义和绘制函数,遵循模块化设计原则,方便代码复用和维护。 - **事件处理**:使用事件委托,提高性能,减少事件监听器的数量。 - **状态管理*...
本文将深入探讨如何使用JavaScript(js)实现鼠标悬停在地图热点区域时突出显示的效果,并基于提供的文件`test.html`、`pic_map.js`和`map.png`进行讲解。 首先,`test.html`是HTML文件,它是网页的基础结构。在`...
在JavaScript(JS)中实现鼠标截图功能,主要是利用HTML5中的Canvas元素以及相关的API来完成。Canvas是一个可编程的画布,允许我们动态绘制图形、处理图像,并且能够捕获屏幕的一部分作为图像数据。以下是对这个功能...
WinAPI提供了`ClipCursor`函数,它可以设置一个矩形区域作为鼠标的活动范围。以下是一个简单的示例代码: ```csharp using System.Runtime.InteropServices; public class MouseRestriction { [DllImport("user32...
Canvas通过JavaScript API提供了一系列方法,如`fillRect()`, `strokeRect()`, `beginPath()`, `moveTo()`, `lineTo()`等,用于绘制直线、曲线、矩形、圆形等图形。在这个小画布工具中,Canvas被用来接收用户的鼠标...
在实际项目中,可能还需要考虑边界限制、选择区域的形状(如矩形、圆形)、以及是否支持多选等问题。此外,如果涉及到缩放,可能需要处理比例因子,确保选择区域保持一定的形状。这个过程可能需要用到CSS3的变换(`...