这个功能,我花了好几天的时间才实现,主要是在拉框的时候,我可以实现,但是,我想在松开鼠标的时候,进行自己的业务处理,但是,怎么也不能响应鼠标的mouseup事件,也看了不少的例子,都是只有拉框,在移动事件里面可以实现功能,但是,鼠标的抬起事件不能响应。有的,可以相应事件,但是要鼠标在多点一下,后来就找了好多的资料,了解了事件的处理,才把这个问题搞定。
现在把代码重新整理了一下,希望对大家能有所帮助。
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=gbk">
<title>拉框</title>
</head>
<body>
<div id='lay1'
onmousedown='down(event)'
onmouseup='up(event)'
onmousemove='move(event)'
style='top:30px;left:30px;width:400px;height:400px;visibility:visible;border:solid 1px blue;'
>
<div id='rect'
style='position:absolute;background-color: #FF99FF'
>
</div>
</div>
<script language="javascript">
// 是否需要(允许)处理鼠标的移动事件,默认识不处理
var select = false;
var rect = document.getElementById("rect");
// 设置默认值,目的是隐藏图层
rect.style.width = 0;
rect.style.height = 0;
rect.style.visibility = 'hidden';
//让你要画的图层位于最上层
rect.style.zIndex = 1000;
// 记录鼠标按下时的坐标
var downX = 0;
var downY = 0;
// 记录鼠标抬起时候的坐标
var mouseX2=downX;
var mouseY2=downY;
//处理鼠标按下事件
function down(event){
// 鼠标按下时才允许处理鼠标的移动事件
select = true;
//让你要画框的那个图层显示出来
//rect.style.visibility = 'visible';
// 取得鼠标按下时的坐标位置
downX = event.clientX;
downY = event.clientY;
//设置你要画的矩形框的起点位置
rect.style.left = downX;
rect.style.top = downY;
}
//鼠标抬起事件
function up(event){
//鼠标抬起,就不允许在处理鼠标移动事件
select = false;
//隐藏图层
rect.style.visibility = 'hidden';
}
//鼠标移动事件,最主要的事件
function move(event){
// 取得鼠标移动时的坐标位置
mouseX2 = event.clientX;
mouseY2 = event.clientY;
// 设置拉框的大小
rect.style.width = Math.abs( mouseX2 - downX );
rect.style.height = Math.abs( mouseY2 - downY );
/*
这个部分,根据你鼠标按下的位置,和你拉框时鼠标松开的位置关系,可以把区域分为四个部分,根据四个部分的不同,
我们可以分别来画框,否则的话,就只能向一个方向画框,也就是点的右下方画框.
*/
if(select){
rect.style.visibility = 'visible';
// A part
if( mouseX2 < downX && mouseY2 < downY ){
rect.style.left = mouseX2;
rect.style.top = mouseY2 ;
}
// B part
if( mouseX2 > downX && mouseY2 < downY){
rect.style.left = downX ;
rect.style.top = mouseY2;
}
// C part
if( mouseX2 < downX && mouseY2 > downY){
rect.style.left = mouseX2;
rect.style.top = downY ;
}
// D part
if( mouseX2 > downX && mouseY2 > downY ){
rect.style.left = downX ;
rect.style.top = downY;
}
}
/*
这两句代码是最重要的时候,没有这两句代码,你的拉框,就只能拉框,在鼠标松开的时候,
拉框停止,但是不能相应鼠标的mouseup事件.那么你想做的处理就不能进行.
这两句的作用是使当前的鼠标事件不在冒泡,也就是说,不向其父窗口传递,所以才可以相应鼠标抬起事件,
这个部分我也理解的不是特别的清楚,如果你需要的话,你可以查资料.但是这两句话确实最核心的部分,
为了这两句话,为了实现鼠标拉框,我搞了几天的时间.
*/
window.event.cancelBubble = true;
window.event.returnValue = false;
function getDivOffsetLeft(){
var lay1 = document.getElementById("lay1");
//var rect = document.getElementById("rect");
return lay1.offsetLeft;
}
function getDivOffsetTop(){
var lay1 = document.getElementById("lay1");
//var rect = document.getElementById("rect");
return lay1.offsetTop;
}
}
</script>
</body>
</html>
相关推荐
JavaScript鼠标框选删除交互功能实现
在现代Web应用中,鼠标框选并删除功能已成为提升用户交互效率的重要手段,广泛应用于文件管理、图形编辑、数据操作等场景。本章将带你了解该功能的核心机制:用户通过鼠标拖动绘制选区,系统识别选区内元素,并支持一键删除操作。我们将从功能意义出发,探讨其在提升用户体验与前端交互设计中的价值,为后续章节的实现与优化打下坚实基础。通过本章的学习,我们已经掌握了鼠标事件的基本原理与监听方式,并实现了鼠标框选功能的初步交互。这些知识为我们后续实现框选区域的计算与元素选中判断奠定了坚实基础。
js鼠标框选元素
js实现框选多个元素的实用方法
jquery实现鼠标拖拽选择
jquery实现鼠标拖拽,完整实现左右拖拽并且选择功能,如果感觉实用,请评论.谢谢!
js实现鼠标拖拽多选功能
最近做了一个用js实现鼠标拖拽多选的功能,于是整理了一下思路,写了一个小demo:遮罩出现:被遮罩盖住的,即为选中的块(背景色为粉色)下面是具体代码,注释已在文中,与大家交流。 <!DOCTYPE html> <html> <head> <title>鼠标拖拽多选功能</tit...
鼠标框选效果
鼠标框选效果的框选代码,很精简,可以画出js 的选框,模范windows的效果
Javascript实现鼠标框选操作 不是点击选取
主要介绍了Javascript实现鼠标框选操作,不是点击选取,利用鼠标进行框选,感兴趣的小伙伴们可以参考一下
前端js、javascript 鼠标 框选 文件 功能
【代码】前端js、javascript 鼠标 框选 文件 功能。
JS实现鼠标框选效果完整实例
主要介绍了JS实现鼠标框选效果,可实现鼠标点击出现框选效果的功能,同时下方实时显示框选大小,涉及javascript鼠标事件的响应与页面元素的动态运算技巧,需要的朋友可以参考下
【转】javascript鼠标拉框(框选)的实现
这个功能,我花了好几天的时间才实现,主要是在拉框的时候,我可以实现,但是,我想在松开鼠标的时候,进行自己的业务处理,但是,怎么也不能响应鼠标的mouseup事件,也看了不少的例子,都是只有拉框,在移动事件里面可以实现功能,但是,鼠标的抬起事件不能响应。有的,可以相应事件,但是要鼠标在多点一下,后来就找了好多的资料,了解了事件的处理,才把这个问题搞定。现在把代码重新整理了一下,希望对大家能...
用javascript实现鼠标框选
用javascript实现鼠标框选
告别黑盒调试:用MMSegmentation可视化工具链,从训练到评估一目了然
本文介绍了如何利用MMSegmentation的可视化工具链,从训练到评估实现语义分割模型的透明化调试。通过整合日志分析、混淆矩阵、PR曲线等工具,开发者可以快速定位模型问题,优化性能。文章详细展示了训练曲线分析、性能剖析、混淆矩阵解读和PR曲线应用等关键步骤,帮助用户告别黑盒调试,提升模型开发效率。
识别图片中的文字(ocr)
记录一次实现图像识别的功能,利用ocr实现对图片中的文字提取的功能
Unity事件总线第一篇:为什么你的游戏需要一个事件总线?
本文探讨了游戏开发中常见的跨模块调用导致代码强耦合的问题。通过一个攻击按钮触发角色攻击、怪物掉血和血条更新的案例,分析了直接调用方式带来的维护困难、扩展性差和模块重用性低等弊端。文章提出使用事件总线(Event Bus)作为解决方案,通过发布-订阅模式实现模块解耦。重构后的代码中,各模块只需与事件总线交互,彼此不再直接依赖。这种设计使得新增功能(如音效)无需修改现有代码,大大提高了系统的可维护性和扩展性,同时增强了模块的重用性,完美体现了开闭原则。
html5实现鼠标框选,使用原生js编写一个简单的框选功能方法
今天我们来聊一下怎么使用原生javascript编写一个简单的框选功能。需求描述鼠标左键按下不放,移动鼠标出现矩形选框;鼠标左键松开,根据上边出现的矩形选框统计选框范围内的DOM元素;嗯...上边的功能描述看着是挺简单的,但实现起来也还是会有些地方需要斟酌思考的。比如,如果我们的框选范围不是document.body,而是某一个div里边进行框选呢?而现实开发过程中,我们会遇上的应该就是第二种情况...
基于Zemax的干涉仪仿真——Fizeau球面干涉仪
最近在用Zemax仿真干涉仪,在这之前查资料都是关于一些平面干涉仪的仿真,很少有关于Fizeau型的,尤其是球面干涉仪的仿真,看到很多关于这方面的问题回复都说利用多重结构仿照Zemax马赫-泽德干涉仪去做,但是也没有具体的过程,因此在这里分享一下我仿真的干涉仪步骤方法,具体是利用多重结构完成的仿真。
8.5华为OD机试真题 新系统 - IPv4 等长子网划分与自动分配系统 (Java/Py/C/C++/Js/Go)
8.5华为OD机试真题 新系统 - IPv4 等长子网划分与自动分配系统 (Java/Py/C/C++/Js/Go)
Mapbox-GL 拉框缩放自定义功能(不用按shift+鼠标左键进行框选缩放)
一、找到mapbox-gl 拉框选择源码文件名称:src\ui\handler\box_zoom.js 二、为地图做主动触发拉框缩放事件 // 初始化地图时将拉框禁用 boxZoom: false new mapboxgl.Map({ container: self.$refs.AppMap, style: style, center: [0, 0], zoom: 1, .
书旗app字符串加密分析
本文案例是对书旗app搜索接口的请求密文进行分析和逆向。
vue 鼠标移动框选和按住CTRL选
vue类似与window上多选文件css代码js代码 前言:因为这是个文件管理系统,替代用户原来的ftp系统。 用户在原来的系统里面习惯的的操作要在新系统中体现,特别是鼠标框选之类的操作。 效果图: 第一个是框选效果,第二个是按住CTRL后鼠标左键选择的效果。 代码是纯js写的,ps:主要是没找到合适的vue框选效果 html代码: 一定要看好层级关系 第一个红框中右两个事件,mouseup鼠标抬起事件,mousedown.left是鼠标左键点击事件 第二个红框中的style必须设置,这个div是与框选
Oracle EBS PAC定期成本分配处理程序请求报错:30011一个无效帐户与正在处理的物料关联
Oracle EBS版本: RDBMS : 12.1.0.2.0 Oracle Applications : 12.2.6 前提条件: 1、启用“MRP:调试模型”配置文件 月结会计反映执行《定期成本分配处理程序》请求报错: 中文:30011一个无效帐户与正在处理的物料关联。: CSTPALPC.create_dist_entry : 40 英文:30011An invalid account is associated with the item being transacted.:...
工业级向量检索核心技术:IVF-PQ原理与全流程解析
在大规模高维向量检索场景中,IVF-PQ(倒排索引结合乘积量化)凭借“粗筛范围+细算距离”的双重加速策略,成为核心解决方案。本文将深入解析其原理与全流程,助力开发者掌握这一关键技术。
利用鼠标框选checkbox-JS实现
这是一篇关于我怎样花了四个小时并借鉴前人代码链接地址才完成的一个用鼠标框选checkbox的一篇文章。 这是某厂在我投递简历后要我先完成并放在github上给它看的效果图。 先来说下要完成这张所需要的功能: 鼠标按下后,选中的内容中所有复选框(checkbox)都需为“checked”; 鼠标点击其他位置后之前选中的内容都归原,也即初始化。 需求讲完了,那就直接上代码吧。 <!DOCTYPE html> <html lang="en"> <head> <
YOLOv8性能突破:DySample超轻量动态上采样算子的创新应用与实现【附保姆级代码】
YOLOv8(You Only Look Once Version 8)作为YOLO系列模型的最新版本,延续了高效、准确的目标检测优势。其基础结构包含了骨干网络(Backbone)、检测头(Head)、以及特征融合层(Neck)。在特征融合阶段,YOLOv8需要对不同尺度的特征图进行上采样,以便将低分辨率的特征与高分辨率的特征进行融合。传统的上采样操作多使用插值(如双线性插值)或固定卷积,而这些方法可能无法很好地适应复杂的上下文信息。
html5实现鼠标框选,JS实现鼠标框选效果完整实例
本文实例讲述了JS实现鼠标框选效果的方法。分享给大家供大家参考,具体如下:/p>"http://www.w3.org/TR/html4/strict.dtd">鼠标框选效果*{padding:0;margin:0;}#bottom{position:absolute;bottom:0px;width:100%;height:40px;border:1px solid #000;back...
VB摄像头监控
该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制
VC中sqlite的使用
在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示
前端——框选技术的实现
var selList = []; window.onload = function() { //定义鼠标框选的区域 var canvas = document.getElementById('teminal-area'); var selDiv; var isSelect = false; var evt; //鼠标点击时候的坐标 var startX; va...
Outlook Express 6 (OE6) for Win7/Win8/Win10
英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。
902



被折叠的 条评论
为什么被折叠?



