最近写了一个原生JavaScript实现矩形块大小任意缩放的案例,感觉里面的东西比较的绕,,里分享源码给大家,一起学习一下。
& lt; !DOCTYPE html> & lt; html lang=癳n”比; & lt; head> & lt;元charset=皍tf - 8”比; & lt;元name=笆哟啊蹦谌?翱矶?设备宽度,初始=1.0”比; & lt; title>原生JavaScript实现矩形块大小任意缩放& lt;/title> & lt;/head> & lt; style> * { 保证金:0; 填充:0; } .box { 位置:相对; 前:200像素; 左:500 px; 宽度:500 px; 身高:300 px; background - color: blueviolet; } .box> div: nth-child (- n + 4) { 位置:绝对的; 宽度:5 px; 身高:5 px; background - color: # cc00ff; } .box> div: nth-child (n + 5) { 位置:绝对的; background - color: # f30497; } .box>。dot1 { 光标:nw-resize; 上图:5 px; 左:5 px; } .box>。dot2 { 光标:ne-resize; 上图:5 px; 右:5 px; } .box>。dot3 { 光标:se-resize; 底部:5 px; 右:5 px; } .box>。dot4 { 光标:sw-resize; 底部:5 px; 左:5 px; } .box> .line1, .box>。line3 { 宽度:500 px; 身高:5 px; } .box>。line1 { 上图:5 px; 光标:n-resize; } .box>。line3 { 底部:5 px; 光标:s-resize; } .box> .line2, .box>。line4 { 宽度:5 px; 身高:300 px; } .box>。么{ 右:5 px; 光标:e-resize; } .box>。line4 { 左:5 px; 光标:e-resize; } & lt;/style> & lt; body> & lt; div类="盒子"比; & lt; div类=" dot1 "祝辞& lt;/div> & lt; div类=" dot2 "祝辞& lt;/div> & lt; div类=" dot3 "祝辞& lt;/div> & lt; div类=" dot4 "祝辞& lt;/div> & lt; div类=" line1 "祝辞& lt;/div> & lt; div类=懊础弊4? lt;/div> & lt; div类=" line3 "祝辞& lt;/div> & lt; div类=" line4 "祝辞& lt;/div> & lt;/div> & lt; script>//获取相关元素节点 让盒子=document.querySelector (“.box”); 让点=document.querySelectorAll (“.box> div: nth-child (n + 4) "); 让线=document.querySelectorAll (“.box> div: nth-child (n + 5) ");//类边框宽度 让bd=5;//循环指定事件对象 函数changeBox([框,点、线、bd]) { (让我=0;我& lt;4;我+ +){ 让{0:dot1, 1: dot2, 2: dot3, 3: dot4}=点;//点对象解构 让{0:line1, 1:么,2:line3, 3: line4}=线;//行对象解构//矩形顶点点击拖动调整大小 点[我]。onmousedown=function (ev) {//点击事件初始化相关值 让老人=ev.clientY;//顶点原本的y值 让oldX=ev.clientX;//顶点原本的x值 让h=box.clientHeight;//盒的高度 让w=box.clientWidth;//框的宽度 让t=box.offsetTop;//箱距离顶部的值 让l=box.offsetLeft;//箱距离左边的左值 窗口。onmousemove=function (e) { 让offsetY=e。clientY——老人;//鼠标移动y轴偏移量 让offsetX=e。clientX - oldX;//鼠标移动x轴偏移量//如果条件是判断鼠标点击的节点目标对象 如果(i==0) { box.style。身高=" $ {h - offsetY + bd} px”;//箱高度变化 box.style。顶级=' $ {t + offsetY - bd} px”;//箱的顶值变化(定位) box.style。宽度=" $ {w - offsetX + bd} px”;//框的宽度变化 box.style。左=' $ {l + offsetX - bd} px”;//盒的左值变化(定位) }如果(i==1) { box.style。身高=" $ {h - offsetY + bd} px”; box.style。顶级=' $ {t + offsetY - bd} px”; box.style。宽度=" $ {w + offsetX + bd} px”; }如果(我==2){ box.style。身高=" $ {h + offsetY + bd} px”; box.style。宽度=" $ {w + offsetX + bd} px”; }如果(我==3){ box.style。身高=" $ {h + offsetY + bd} px”; box.style。宽度=" $ {w - offsetX + bd} px”; box.style。左=' $ {l + offsetX - bd} px”; }//边框线的高度/宽度随着盒子的大小变化而变化 line1.style。宽度=box.style.width; line2.style。身高=box.style.height; line3.style。宽度=box.style.width; line4.style。身高=box.style.height; } }//边框点击拖动调整大小 [我]。onmousedown=function (ev) {//点击事件初始化相关值 让老人=ev.clientY;//顶点原本的y值 让oldX=ev.clientX;//顶点原本的x值 让h=box.clientHeight;//盒的高度 让w=box.clientWidth;//框的宽度 让t=box.offsetTop;//箱距离顶部的值 让l=box.offsetLeft;//箱距离左边的左值 窗口。onmousemove=function (e) { 让offsetX=e。clientX - oldX;//鼠标移动x轴偏移量 让offsetY=e。clientY——老人;//鼠标移动y轴偏移量//如果条件是判断鼠标点击的节点目标对象 如果(i==0) { box.style。身高=" $ {h - offsetY + bd} px”; box.style。顶级=' $ {t + offsetY - bd} px”; }如果(i==1) { box.style。宽度=" $ {w + offsetX + bd} px”; }如果(我==2){ box.style。身高=" $ {h + offsetY + bd} px”; 其他}{ box.style。宽度=" $ {w - offsetX + bd} px”; box.style。左=' $ {l + offsetX - bd} px”; }//边框线的高度/宽度随着盒子的大小变化而变化 line1.style。宽度=box.style.width; line2.style。身高=box.style.height; line3.style。宽度=box.style.width; line4.style。身高=box.style.height; } }//鼠标抬起后清除鼠标移动事件 窗口。onmouseup=function () { 窗口。onmousemove=false; } } } changeBox([框,点、线、bd]) & lt;/script> & lt;/body> & lt;/html>JavaScript实现矩形块大小任意缩放