js拖动改变div的宽高 js拖动改变div的宽高

js拖动改变div的宽高

  1. <p><!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title></title>
  6. <style type="text/css">
  7. #box{position: absolute;top: 150px;left: 250px;width: 200px;height: 200px;background-color: red;}
  8. </style>
  9. <script type="text/javascript">
  10. window.onload=function(){
  11. var oBox=document.getElementById('box');
  12. var b='';//声明两个空变量a,b;
  13. var a='';
  14. oBox.onmousedown=function(ev){
  15. var iEvent=ev||event;
  16. var dx=iEvent.clientX;//当你第一次单击的时候,存储x轴的坐标。
  17. var dy=iEvent.clientY;//当你第一次单击的时候,储存Y轴的坐标。
  18. var dw=oBox.offsetWidth;//存储默认的div的宽度。
  19. var dh=oBox.offsetHeight;//存储默认的div的高度。
  20. var disright=oBox.offsetLeft+oBox.offsetWidth;//存储默认div右边距离屏幕左边的距离。
  21. var distop=oBox.offsetHeight+oBox.offsetTop;//存储默认div上边距离屏幕左边的距离。
  22. if(iEvent.clientX>oBox.offsetLeft+oBox.offsetWidth-10){//判断鼠标是否点在右边还是左边,看图1理解
  23. b='right';
  24. }
  25. if(iEvent.clientX<oBox.offsetLeft+10){//同理
  26. b='left';
  27. }
  28. if(iEvent.clientY<oBox.offsetTop+10){
  29. a='top';
  30. }
  31. if(iEvent.clientY>oBox.offsetTop+oBox.offsetHeight-10){
  32. a='bottom';
  33. }
  34. document.onmousemove=function(ev){
  35. var iEvent=ev||event;
  36. if(b=='right'){
  37. oBox.style.width=dw+(iEvent.clientX-dx)+'px';
  38. //此时的iEvent.clientX的为你拖动时一直改变的鼠标的X坐标,例如你拖动的距离为下图的绿色部分,第二个黑点就表示你此时的iEvent.clientX
  39. //所以,此时的盒子宽度就等于绿色部分的距离加上原本盒子的距离,看图2
  40. if(oBox.offsetWidth<=10){//当盒子缩小到一定范围内的时候,让他保持一个固定值,不再继续改变
  41. oBox.style.width='10px';
  42. }
  43. }
  44. if(b=='left'){
  45. oBox.style.width=dw-(iEvent.clientX-dx)+'px';//iEvent.clientX-dx表示第二次鼠标的X坐标减去第一次鼠标的X坐标,得到绿色移动的距离(为负数),再加上原本的div宽度,就得到新的宽度。 图3
  46. oBox.style.left=disright-oBox.offsetWidth+'px';//disright表示盒子右边框距离左边的距离,disright-当前的盒子宽度,就是当前盒子距离左边的距离
  47. if(oBox.offsetWidth<=10){
  48. oBox.style.width='10px';
  49. oBox.style.left=disright-oBox.offsetWidth+'px';//防止抖动
  50. }
  51. }
  52. if(a=='bottom'){
  53. oBox.style.height=iEvent.clientY-dy+dh+'px';
  54. if(oBox.offsetHeight<=10){
  55. oBox.style.height='10px';
  56. }
  57. }
  58. if(a=='top'){
  59. oBox.style.height=dh-(iEvent.clientY-dy)+'px'
  60. oBox.style.top=distop-oBox.offsetHeight+'px';
  61. if(oBox.offsetHeight<=10){
  62. oBox.style.height='10px';
  63. oBox.style.top=distop-oBox.offsetHeight+'px';
  64. }
  65. }
  66. };
  67. document.onmouseup=function(){
  68. document.onmousedown=null;
  69. document.onmousemove=null;
  70. };
  71. return false;
  72. };
  73. };
  74. </script>
  75. </head>
  76. <body>
  77. <div id="box"></div>
  78. </body>
  79. </html>
  80. </p>

图1


图2



  1. <p><!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title></title>
  6. <style type="text/css">
  7. #box{position: absolute;top: 150px;left: 250px;width: 200px;height: 200px;background-color: red;}
  8. </style>
  9. <script type="text/javascript">
  10. window.onload=function(){
  11. var oBox=document.getElementById('box');
  12. var b='';//声明两个空变量a,b;
  13. var a='';
  14. oBox.onmousedown=function(ev){
  15. var iEvent=ev||event;
  16. var dx=iEvent.clientX;//当你第一次单击的时候,存储x轴的坐标。
  17. var dy=iEvent.clientY;//当你第一次单击的时候,储存Y轴的坐标。
  18. var dw=oBox.offsetWidth;//存储默认的div的宽度。
  19. var dh=oBox.offsetHeight;//存储默认的div的高度。
  20. var disright=oBox.offsetLeft+oBox.offsetWidth;//存储默认div右边距离屏幕左边的距离。
  21. var distop=oBox.offsetHeight+oBox.offsetTop;//存储默认div上边距离屏幕左边的距离。
  22. if(iEvent.clientX>oBox.offsetLeft+oBox.offsetWidth-10){//判断鼠标是否点在右边还是左边,看图1理解
  23. b='right';
  24. }
  25. if(iEvent.clientX<oBox.offsetLeft+10){//同理
  26. b='left';
  27. }
  28. if(iEvent.clientY<oBox.offsetTop+10){
  29. a='top';
  30. }
  31. if(iEvent.clientY>oBox.offsetTop+oBox.offsetHeight-10){
  32. a='bottom';
  33. }
  34. document.onmousemove=function(ev){
  35. var iEvent=ev||event;
  36. if(b=='right'){
  37. oBox.style.width=dw+(iEvent.clientX-dx)+'px';
  38. //此时的iEvent.clientX的为你拖动时一直改变的鼠标的X坐标,例如你拖动的距离为下图的绿色部分,第二个黑点就表示你此时的iEvent.clientX
  39. //所以,此时的盒子宽度就等于绿色部分的距离加上原本盒子的距离,看图2
  40. if(oBox.offsetWidth<=10){//当盒子缩小到一定范围内的时候,让他保持一个固定值,不再继续改变
  41. oBox.style.width='10px';
  42. }
  43. }
  44. if(b=='left'){
  45. oBox.style.width=dw-(iEvent.clientX-dx)+'px';//iEvent.clientX-dx表示第二次鼠标的X坐标减去第一次鼠标的X坐标,得到绿色移动的距离(为负数),再加上原本的div宽度,就得到新的宽度。 图3
  46. oBox.style.left=disright-oBox.offsetWidth+'px';//disright表示盒子右边框距离左边的距离,disright-当前的盒子宽度,就是当前盒子距离左边的距离
  47. if(oBox.offsetWidth<=10){
  48. oBox.style.width='10px';
  49. oBox.style.left=disright-oBox.offsetWidth+'px';//防止抖动
  50. }
  51. }
  52. if(a=='bottom'){
  53. oBox.style.height=iEvent.clientY-dy+dh+'px';
  54. if(oBox.offsetHeight<=10){
  55. oBox.style.height='10px';
  56. }
  57. }
  58. if(a=='top'){
  59. oBox.style.height=dh-(iEvent.clientY-dy)+'px'
  60. oBox.style.top=distop-oBox.offsetHeight+'px';
  61. if(oBox.offsetHeight<=10){
  62. oBox.style.height='10px';
  63. oBox.style.top=distop-oBox.offsetHeight+'px';
  64. }
  65. }
  66. };
  67. document.onmouseup=function(){
  68. document.onmousedown=null;
  69. document.onmousemove=null;
  70. };
  71. return false;
  72. };
  73. };
  74. </script>
  75. </head>
  76. <body>
  77. <div id="box"></div>
  78. </body>
  79. </html>
  80. </p>

图1


图2



猜你喜欢

转载自blog.csdn.net/u012207345/article/details/80840946
今日推荐