js 实现图片大小的伸缩

通过拉取图片上,下,左,右,上左,上右,下左,下右,边框和边角实现图片的伸缩。

1.html代码

<div class="boxs">
    <span class="l"></span>
    <span class="r"></span>
    <span class="t"></span>
    <span class="b"></span>
    <span class="tl"></span>
    <span class="tr"></span>
    <span class="bl"></span>
    <span class="br"></span>
    <img src="./1.jpg" alt="">
  </div>

 

2.css代码

body {padding: 0;margin: 0;}
.boxs {position: absolute; left: 100px; top: 100px; min-height: 100px; min-width: 100px;
overflow: hidden; }
 /*四边*/
.boxs .l,.boxs .b,.boxs .t,.boxs .r { position: absolute; z-index: 1; background: #666;}
.boxs .l,.boxs .r { width: 10px; height: 100%; cursor: col-resize; }
.boxs .t,.boxs .b {height: 10px; width: 100%; cursor: row-resize;}
.boxs .l { left: 0; }
.boxs .r { right: 0; }
.boxs .t { top: 0; }
.boxs .b { bottom: 0; }
/*四角*/
.boxs .tl,.boxs .tr,.boxs .bl,.boxs .br { position: absolute; background-color: #ccc;       z-index: 2; width: 10px; height: 10px; cursor: nw-resize; }
.boxs .tr { right: 0; cursor: ne-resize }
.boxs .bl { bottom: 0; cursor: ne-resize }
.boxs .br { bottom: 0; right: 0; }
.boxs img { width: 100%; height: 100%; vertical-align: top; }

3. js代码

window.onload = function () {
      var oDiv = document.getElementsByClassName('boxs')[0];
      var aSpan = oDiv.getElementsByTagName('span');
      for (var i = 0; i < aSpan.length; i++) {
        dragFn(aSpan[i]);
      }

      function dragFn(obj) {
        obj.onmousedown = function (ev) {
          var oEv = ev || event;

          var oldWidth = oDiv.offsetWidth;
          var oldHeight = oDiv.offsetHeight;
          var oldX = oEv.clientX;
          var oldY = oEv.clientY;
          var oldLeft = oDiv.offsetLeft;
          var oldTop = oDiv.offsetTop;

          document.onmousemove = function (ev) {
            var oEv = ev || event;

            if (obj.className == 'tl') {
              oDiv.style.width = oldWidth - (oEv.clientX - oldX) + 'px';
              oDiv.style.height = oldHeight - (oEv.clientY - oldY) + 'px';
              oDiv.style.left = oldLeft + (oEv.clientX - oldX) + 'px';
              oDiv.style.top = oldTop + (oEv.clientY - oldY) + 'px';
            }
            else if (obj.className == 'bl') {
              oDiv.style.width = oldWidth - (oEv.clientX - oldX) + 'px';
              oDiv.style.height = oldHeight + (oEv.clientY - oldY) + 'px';
              oDiv.style.left = oldLeft + (oEv.clientX - oldX) + 'px';
              oDiv.style.bottom = oldTop + (oEv.clientY + oldY) + 'px';
            }
            else if (obj.className == 'tr') {
              oDiv.style.width = oldWidth + (oEv.clientX - oldX) + 'px';
              oDiv.style.height = oldHeight - (oEv.clientY - oldY) + 'px';
              oDiv.style.right = oldLeft - (oEv.clientX - oldX) + 'px';
              oDiv.style.top = oldTop + (oEv.clientY - oldY) + 'px';
            }
            else if (obj.className == 'br') {
              oDiv.style.width = oldWidth + (oEv.clientX - oldX) + 'px';
              oDiv.style.height = oldHeight + (oEv.clientY - oldY) + 'px';
              oDiv.style.right = oldLeft - (oEv.clientX - oldX) + 'px';
              oDiv.style.bottom = oldTop + (oEv.clientY + oldY) + 'px';
            }
            else if (obj.className == 't') {
              oDiv.style.height = oldHeight - (oEv.clientY - oldY) + 'px';
              oDiv.style.top = oldTop + (oEv.clientY - oldY) + 'px';
            }
            else if (obj.className == 'b') {
              oDiv.style.height = oldHeight + (oEv.clientY - oldY) + 'px';
              oDiv.style.bottom = oldTop - (oEv.clientY + oldY) + 'px';
            }
            else if (obj.className == 'l') {
              oDiv.style.height = oldHeight + 'px';
              oDiv.style.width = oldWidth - (oEv.clientX - oldX) + 'px';
              oDiv.style.left = oldLeft + (oEv.clientX - oldX) + 'px';
            }
            else if (obj.className == 'r') {
              oDiv.style.height = oldHeight + 'px';
              oDiv.style.width = oldWidth + (oEv.clientX - oldX) + 'px';
              oDiv.style.right = oldLeft - (oEv.clientX - oldX) + 'px';
            }
          };

          document.onmouseup = function () {
            document.onmousemove = null;
          };
          return false;
        };
      }
    };

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值