分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

js改变盒子大小(上下左右)分析

发布时间:2023-09-06 01:45责任编辑:顾先生关键词:js

js改变盒子大小

知识点

三个mouse事件:mousedown mousemove mouseup

css的定位和cursor

思路

先解决单边问题
识别范围,得到所选区域 event.
根据距离,判断方向
根据方向进行样式的增加减少,注意top和left的变化
当然还要增加最小的限制

注意

识别改变的四个位置

得到它们的范围

判断改变范围的大小

注意改变top和left的边的时候,注意将盒子的left变为this.offsetLeft-(原来的event.clientX减去现在的event.clinentX);top则变为this.offsetTop-(原来的event.clientY减去现在的event.clinentY)

最后还要限制最小的范围

var container=document.getElementById(‘container‘), ?????????span=document.getElementById(‘span‘), ?????????move=document.getElementById(‘move‘), ?????????wrap=document.getElementById(‘wrap‘) ???????????divs=container.getElementsByTagName(‘div‘), ???????????top=divs[0], ???????????bottom=divs[1], ???????????left=divs[2], ???????????right=divs[3]; ???????//找到位置 ???????container.onmousedown=function(event){ ?????????????var event=event||window.event ?????????????event.preventDefault() ?????????????var mouseDownX=event.clientX ?????????????var mouseDownY=event.clientY ?????????????//得到位置 ?????????????var topLocal=this.offsetTop ?????????????var bottomLocal=this.offsetTop+this.offsetHeight ?????????????var leftLocal=this.offsetLeft ?????????????var rightLocal=this.offsetLeft+this.offsetWidth ?????????????var w=this.offsetWidth ?????????????var h=this.offsetHeight ?????????????//识别范围 ?????????????var areaT=topLocal+20 ?????????????var areaB=bottomLocal-20 ?????????????var areaL=leftLocal+20 ?????????????var areaR=rightLocal-20 ?????????????//判断改变方块的大小方向 ?????????????var changeL=event.clientX<areaL ?????????????var changeR=event.clientX>areaR ?????????????var changeT=event.clientY<areaT ?????????????var changeB=event.clientY>areaB ?????????????document.onmousemove=function(event){ ?????????????????????var event=event||window.event ?????????????????????if(changeL){ ??????????????????????????container.style.left=leftLocal-(mouseDownX-event.clientX)+‘px‘ ??????????????????????????container.style.width=(mouseDownX-event.clientX)+w+‘px‘ ?????????????????????} ?????????????????????if(changeR){ ???????????????????????????container.style.width=event.clientX-mouseDownX+w+‘px‘ ?????????????????????} ?????????????????????if(changeT){ ???????????????????????????container.style.top=topLocal-(mouseDownY-event.clientY)+‘px‘ ???????????????????????????container.style.height=mouseDownY-event.clientY+h+‘px‘ ?????????????????????} ?????????????????????if(changeB){ ???????????????????????????container.style.height=event.clientY-mouseDownY+h+‘px‘ ?????????????????????} ?????????????????????if(parseInt(container.style.width)<150){ ?????????????????????????????container.style.width=150+‘px‘ ?????????????????????????????document.onmousemove=null ?????????????????????} ?????????????????????if(parseInt(container.style.height)<150){ ?????????????????????????????container.style.height=150+‘px‘ ?????????????????????????????document.onmousemove=null ?????????????????????} ?????????????} ?????????????document.onmouseup=function(){ ?????????????????????document.onmousemove=null ?????????????????????document.onmouseup=null ?????????????} ???????}



js改变盒子大小(上下左右)分析

原文地址:https://www.cnblogs.com/iDouble/p/8584476.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved