js通过八个点 拖动改变div大小的实现方法

js 拖动--动态改变div的宽高大小 / 拖拽后物体的高。// 拖拽后物体的宽。// 获取拖拽前div的高。// 获取拖拽前div的宽。// 获取鼠标按下时光标x的值。// 获取鼠标按下时光标Y的值。// 拖拽前div的高。//拖拽前div的宽。 阅读详情
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Resize</title> 
<style type="text/css"> 
#rRightDown,#rLeftDown,#rLeftUp,#rRightUp,#rRight,#rLeft,#rUp,#rDown{ 
position:absolute;background:#C00;width:6px;height:6px;z-index:5;font-size:0;} 
#rLeftDown,#rRightUp{cursor:ne-resize;} 
#rRightDown,#rLeftUp{cursor:nw-resize;} 
#rRight,#rLeft{cursor:e-resize;} 
#rUp,#rDown{cursor:n-resize;} 
#rRightDown{ bottom:-3px; right:-3px;} 
#rLeftDown{ bottom:-3px; left:-3px;} 
#rRightUp{ top:-3px; right:-3px;} 
#rLeftUp{ top:-3px; left:-3px;} 
#rRight{ right:-3px; top:50%} 
#rLeft{ left:-3px; top:50%} 
#rUp{ top:-3px; left:50%} 
#rDown{ bottom:-3px; left:50%} 
</style> 
</head> 
<body> 
<div id='ss' style="height:100px; width:100px; border:1px solid #000000; position:absolute; left:200px; top:200px;" > 
<div id="rRightDown"> </div> 
<div id="rLeftDown"> </div> 
<div id="rRightUp"> </div> 
<div id="rLeftUp"> </div> 
<div id="rRight"> </div> 
<div id="rLeft"> </div> 
<div id="rUp"> </div> 
<div id="rDown"></div> 
</div> 
<script> 
var Sys = (function(ua){ 
    var s = {}; 
    s.IE = ua.match(/msie ([\d.]+)/)?true:false; 
    s.Firefox = ua.match(/firefox\/([\d.]+)/)?true:false; 
    s.Chrome = ua.match(/chrome\/([\d.]+)/)?true:false; 
    s.IE6 = (s.IE&&([/MSIE (\d)\.0/i.exec(navigator.userAgent)][0][1] == 6))?true:false; 
    s.IE7 = (s.IE&&([/MSIE (\d)\.0/i.exec(navigator.userAgent)][0][1] == 7))?true:false; 
    s.IE8 = (s.IE&&([/MSIE (\d)\.0/i.exec(navigator.userAgent)][0][1] == 8))?true:false; 
    return s; 
})(navigator.userAgent.toLowerCase());
var $ = function (id) { 
    return document.getElementById(id); 
};
var Css = function(e,o){ 
    for(var i in o) 
    e.style[i] = o[i]; 
};
var Extend = function(destination, source) { 
    for (var property in source) { 
        destination[property] = source[property]; 
    } 
};
var Bind = function(object, fun) { 
    var args = Array.prototype.slice.call(arguments).slice(2); 
    return function() { 
        return fun.apply(object, args); 
    } 
};
var BindAsEventListener = function(object, fun) { 
    var args = Array.prototype.slice.call(arguments).slice(2); 
    return function(event) { 
        return fun.apply(object, [event || window.event].concat(args)); 
    } 
};
var CurrentStyle = function(element){ 
    return element.currentStyle || document.defaultView.getComputedStyle(element, null); 
};
function addListener(element,e,fn){ 
    element.addEventListener?element.addEventListener(e,fn,false):element.attachEvent("on" + e,fn); 
}; 
function removeListener(element,e,fn){ 
    element.removeEventListener?element.removeEventListener(e,fn,false):element.detachEvent("on" + e,fn) 
};
var Class = function(properties){ 
    var _class = function(){return (arguments[0] !== null && this.initialize && typeof(this.initialize) == 'function') ? this.initialize.apply(this, arguments) : this;}; 
    _class.prototype = properties; 
    return _class; 
};
var Resize =new Class({ 
    initialize : function(obj){ 
        this.obj = obj; 
        this.resizeelm = null; 
        this.fun = null; //记录触发什么事件的索引 
        this.original = []; //记录开始状态的数组 
        this.width = null; 
        this.height = null; 
        this.fR = BindAsEventListener(this,this.resize); 
        this.fS = Bind(this,this.stop);     
    }, 
    set : function(elm,direction){ 
        if(!elm)return; 
        this.resizeelm = elm; 
        addListener(this.resizeelm,'mousedown',BindAsEventListener(this, this.start, this[direction])); 
        return this; 
    }, 
    start : function(e,fun){ 
        this.fun = fun; 
        this.original = [parseInt(CurrentStyle(this.obj).width),parseInt(CurrentStyle(this.obj).height),parseInt(CurrentStyle(this.obj).left),parseInt(CurrentStyle(this.obj).top)];
        this.width = (this.original[2]||0) + this.original[0]; 
        this.height = (this.original[3]||0) + this.original[1]; 
        addListener(document,"mousemove",this.fR); 
        addListener(document,'mouseup',this.fS); 
    }, 
    resize : function(e){ 
        this.fun(e); 
        Sys.IE?(this.resizeelm.onlosecapture=function(){this.fS()}):(this.resizeelm.onblur=function(){this.fS()}) 
    }, 
    stop : function(){ 
        removeListener(document, "mousemove", this.fR); 
        removeListener(document, "mousemove", this.fS); 
        window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();     
    }, 
    up : function(e){ 
        this.height>e.clientY?Css(this.obj,{top:e.clientY + "px",height:this.height-e.clientY + "px"}):this.turnDown(e); 
    }, 
    down : function(e){ 
        e.clientY>this.original[3]?Css(this.obj,{top:this.original[3]+'px',height:e.clientY-this.original[3]+'px'}):this.turnUp(e);     
    }, 
    left : function(e){ 
        e.clientX<this.width?Css(this.obj,{left:e.clientX +'px',width:this.width-e.clientX + "px"}):this.turnRight(e);         
    }, 
    right : function(e){ 
        e.clientX>this.original[2]?Css(this.obj,{left:this.original[2]+'px',width:e.clientX-this.original[2]+"px"}):this.turnLeft(e)    ; 
    }, 
    leftUp:function(e){ 
        this.up(e);this.left(e); 
    }, 
    leftDown:function(e){ 
        this.left(e);this.down(e); 
    }, 
    rightUp:function(e){ 
        this.up(e);this.right(e); 
    }, 
    rightDown:function(e){ 
        this.right(e);this.down(e); 
    },                 
    turnDown : function(e){ 
        Css(this.obj,{top:this.height+'px',height:e.clientY - this.height + 'px'}); 
    }, 
    turnUp : function(e){ 
        Css(this.obj,{top : e.clientY +'px',height : this.original[3] - e.clientY +'px'}); 
    }, 
    turnRight : function(e){ 
        Css(this.obj,{left:this.width+'px',width:e.clientX- this.width +'px'}); 
    }, 
    turnLeft : function(e){ 
        Css(this.obj,{left:e.clientX +'px',width:this.original[2]-e.clientX+'px'});          
    }         
}); 
window.onload = function(){ 
    new Resize($('ss')).set($('rUp'),'up').set($('rDown'),'down').set($('rLeft'),'left').set($('rRight'),'right').set($('rLeftUp'),'leftUp').set($('rLeftDown'),'leftDown').set($('rRightDown'),'rightDown').set($('rRightUp'),'rightUp');
} 
</script> 
</body> 
</html>


用画布实现 鼠标绘制可拖动 可改变大小矩形框 网上找了一下 用canvas实现鼠标绘制矩形框 找到的都是需要用jQuery的,所以自己用js写了一个。效果图如下: 代码可能写的实在不算好,但是可以用,就当成一个demo来看吧。 实现原理的话和一般的鼠标拖动绘制矩形框(用div实现)原理差不多,计算鼠标的坐标点来减去画布距离网页窗口最左边以及最上边的距离 以此为基点 改变矩形框的大小,不同的是 这里每帧都要把画布清空以及重绘 这样最终看到的效果... 阅读详情

相关推荐

M×N扫描序列图像拼接、大视场图像拼接、全景图像拼接、2D网格拼图方法、累计误差消除(显微图像/航拍图像等)

M×N序列图像完整拼接方法前言一、最朴实的一般方法二、广度优先搜索算法1.引入库2.读入数据整体路径优化算法 前言 1、网上有很多介绍图像两两拼接的算法,但是缺少对M×N张子图两两相对位置关系获得整体误差较小,肉眼下无明显错位的完整图像的算法实现。 2、由于拼接算法的不稳定可能会产生不同程度的误差,那么如何需要选择(搜索)误差较小拼接路径。 一、最朴实的一般方法 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、广度优先搜索算法 1.引入库 代码如下(示

qq_37764141的博客 5407

手动拖动div改变窗口宽高大小

div 手动改变宽度

Coder_Yw的博客 2844

告别屏幕适配焦虑:用AndroidAutoSize 1.2.1搞定多尺寸设备(附AndroidX兼容方案)

本文详细介绍了AndroidAutoSize 1.2.1在屏幕适配中的应用,帮助开发者高效解决多尺寸设备适配问题。通过动态计算机制,AutoSize显著提升了UI一致性和开发效率,特别适合处理横竖屏切换、折叠屏等复杂场景。文章还提供了AndroidX兼容方案和性能优化建议,是Android开发者的实用指南。

weixin_42535461的博客 189

JavaScript实现鼠标拖拽调整div大小

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> body, html { width: 100%; height: 100%; margin: 0; } #container { width: 200px; height: 200px; .

beichen3997的博客 4868

MOBsf联动雷电模拟器(在docker国内库撤销后)

MobSF (全称:Mobile Security Framework,中文名:移动安全框架) 是一个自动化的移动应用程序(Android / iOS / Windows)开源测试工具,该工具采用Python开发,能够执行静态,动态和恶意软件分析。MobSF提供了很多自动化分析功能,尤其适用于Android应用。安装必备(默认已准备好)docker(kali) 现在的国内镜像源都已经下架了只能开代理下载桌面版然后给pull到本地。

qq_48149564的博客 1600

【毕设】基于LoRa的物联网控制器:从原理图到PCB的完整硬件设计指南

本文提供了一份完整的基于LoRa的物联网控制器硬件设计指南,涵盖从系统框图、原理图设计到PCB布局布线的全流程。详细讲解了电源电路、单片机最小系统、信号接口以及LoRa无线模块等核心模块的设计要点与抗干扰技巧,并分享了实用的调试心得,旨在帮助电子、物联网专业学生顺利完成毕业设计,掌握低功耗远距离物联网节点的硬件开发实践。

weixin_42126677的博客 306

js实现鼠标拖拽改变div大小的同时另一个div宽度也变化

【代码】js实现鼠标拖拽改变div大小的同时另一个div宽度也变化。

Mr_yangx的博客 2000

lammps模拟技巧:高熵合金势函数设置三种方法

大家好,我是小马老师。 本文继续介绍lammps模拟中的势函数设置方法。 在前面的文章中,介绍过高熵合金的建模:高熵合金建模 高熵合金包含的原子数较多,势函数的设置相对复杂,在平时一对一的咨询中,这种问题也相对较多。 下面介绍三种高熵合金势函数设置方法。 1.下载专用势函数 下面的网站包含了大多数原子的势函数: https://www.ctcms.nist.gov/potentials/ 如需下载包含Fe原子的势函数,直接点Fe: 出现势函数列表: 比如Al-Co-Cr-Fe-Ni就是高熵合金AlCoC

lammps_jiayou的博客 8962

原生javascript实现上下左右中间八个点控制元素大小、旋转角度、拖拽位置功能

最近在接触一个简单的图形编辑器,要求是要实现web页面加载图标元素并可以通过上下左右中间八个点鼠标控制元素大小。拖拽功能比较简单,一般都比较容易实现,主要是旋转和八个点控制元素的大小,旋转是相对难理解一点,需要到一些数学问题,关于坐标系的知识。 整个demo源码下载地址:点击下载源码 通过 Math.atan可以计算出反正切的值,从而推算出鼠标移动到哪个象限的时候的角度。四个点的拖拉也这...

CodingNoob 3670

基于Cesium实现,动态水面+大坝排水动画

一、绘制面状水域,使用水波纹理,进行渲染,水体透明,可以看到底色。三、使用粒子系统,将喷泉改变方向,加上重力设置,实现排水动画。二、绘制线状三维体,用作模拟大坝拦截效果。四、最后,模拟水位上升,进行淹没分析,

一醉千秋的专栏 1418

【NVIDIA】Jetson Orin Nano系列:编译外部驱动(交叉编译和板上编译)

Orin Nano外部驱动的开发入门,以hello world为例。使用交叉编译和板上编译两种方法

郭老二 1734

php 页面拖动改变大小,js通过八个点拖动改变div大小的实现方法_javascript技巧

代码如下:Resize《script》var Sys = (function(ua){var s = {};s.IE = ua.match(/msie ([\d.]+)/)?true:false;s.Firefox = ua.match(/firefox\/([\d.]+)/)?true:false;s.Chrome = ua.match(/chrome\/([\d.]+)/)?true:fals...

weixin_39869378的博客 112

SAP-RPT-1 深度解读:面向企业表格数据的 rapid one

摘要: SAP在TechEd 2025大会上推出面向企业结构化数据的SAP-RPT-1(Relational Pretrained Transformer),旨在通过in-context learning直接预测表格数据中的缺失值,无需传统机器学习流程。与LLM不同,RPT专为业务表格设计,支持实时预测(如交货延迟、回款风险等)。提供Small(高吞吐)、Large(高精度)和开源版本,用户可通过无代码Playground(上传CSV并用[PREDICT]标记目标列)或Python API快速验证。典型场景

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 235

vue实现div可拖动位置也可改变盒子大小

以下是效果图:实现了div盒子在固定区域的拖动,也可改变盒子的高度和宽度,当超出边距后无法继续改变大小 这里说一下大致原理:拖动和改变大小是分开来操作的,接下来分别说一下 盒子拖动 这里用到了js的三个鼠标事件,分别是onmousedown(鼠标按下)、onmousemove(鼠标移动)以及onmouseup(鼠标松开),大致流程就是鼠标按下拖动图标进行拖动时,动态获取当前div的left和top再重新赋值给当前div的top、left值,当鼠标松开再清除事件,至于固定在某个区域内拖动,在赋值的时

qq_38519358的博客 7968

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

div拖动改变大小

最近在做个页面,需要首页模块可拖动并且编辑大小,首页用到的基本上是div标签, 由于个人不是搞前端的,js真心不是很熟~~~,网上搜索了一些资料,基本上都不完整,都有一定的缺少部分! 于是自己结合网上的多篇资料,整合了一份,可以div拖动改变大小的html代码例子,有这方面需要的可以参考下: 以下是效果图: Html代码如下(直接复制保存为html文件即可运行): <!DOC...

漫天雪_昆仑巅 7872

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

vue可拖动可放大div_vue实现div可拖动位置也可改变盒子大小的原理

以下是效果图:实现了div盒子在固定区域的拖动,也可改变盒子的高度和宽度,当超出边距后无法继续改变大小这里说一下大致原理:拖动和改变大小是分开来操作的,接下来分别说一下盒子拖动这里用到了js的三个鼠标事件,分别是onmousedown(鼠标按下)、onmousemove(鼠标移动)以及onmouseup(鼠标松开),大致流程就是鼠标按下拖动图标进行拖动时,动态获取当前div的left和top再重新...

weixin_39634237的博客 1235

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

vue可调整大小的div_vue实现div可拖动位置也可改变盒子大小的原理

以下是效果图:实现了div盒子在固定区域的拖动,也可改变盒子的高度和宽度,当超出边距后无法继续改变大小这里说一下大致原理:拖动和改变大小是分开来操作的,接下来分别说一下盒子拖动这里用到了js的三个鼠标事件,分别是onmousedown(鼠标按下)、onmousemove(鼠标移动)以及onmouseup(鼠标松开),大致流程就是鼠标按下拖动图标进行拖动时,动态获取当前div的left和top再重新...

weixin_36335903的博客 2746

边框处拖动鼠标改变div大小

边框处拖动鼠标改变div大小 改变层的大小-阿里西西WEB开发 { box-sizing: border-box; moz-box-sizing: border-box } #testDiv     { background-color: buttonface; background-repeat: repeat;                 back

dai0941的专栏 6208

js实现鼠标拖动改变iframe,frameset大小

实现拖动竖线调整左侧菜单部分的宽度 思路:点击tree和content中间这条线时记录当前鼠标位置,当鼠标抬起时再次记录位置并且重新设置tree部分的宽度。 页面组成:页面由三部分组成:top.html 一级菜单部分,tree.html 左侧菜单部分,content.html主要内容部分。最外层是一个main.html, 我们要实现拖动tree和content之间线改变tree部分的宽度 具体...

满大人的博客 1676

Vue+js+css实现绘制div并进行拖动选区、移动、改变大小

需求:就是可以实现拖动一个方框,扔在一个图片上面,就可以在该图片上面绘制出新的div选区,可以对绘制的div进行移动、改变大小 html:拖动选区的方框 <div draggable="true" id="source" class="drag"></div> <div id="big_Img" draggable="true"> <img :style="imgHW" :src="fileUrl"> </div> mounte

weixin_42418774的博客 1746

php 页面拖动改变大小,鼠标拖动改变DIV等网页元素的大小的实现方法

1.初次实现1.1 html代码div change width by dragdiv change width by drag1.2 js代码var eleLeft = $('#myDiv').offset().left;var isMouseDown = false;var borderLen = 4; //左右边框$('#myDiv').bind({mousedown:function(e)...

weixin_30068505的博客 258

div不占位置_js组件-可改变大小的div

在实现了可拖动div的组件后,又联想到拖拽可改变div大小的需求,话不多说先看效果,再来慢慢分析可所以改变大小的div组件分析给目标div增加四周的边框,并且在边框的八个方向增加拖拽点,分别用方向的首字母组合代替当鼠标落在八个点上时,鼠标形状变成向各个方向拖拽的形状当鼠标按下并拖拽时,计算div新的位置和大小,并改变div逻辑挺简单的,我们一步步实现对目标div增加边框增加边框的逻辑很简单,就是增...

weixin_39989668的博客 259

js 拖动div 并改变div大小 的搜索网址

http://www.jqueryajax.com/jquery/1074.html http://blog.youkuaiyun.com/lee576/article/details/4413359 js特效: http://bbs.youkuaiyun.com/topics/310131198 js通过八个点 拖动改变div大小 http://www.cnblogs.com/wtcs

TianGaojie123abc的专栏 2170
上一篇: js 实现鼠标按下 拖动div
下一篇: JS 获取div框的宽度和高度
OnePiece_Sky
博客等级 码龄15年 9粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值