JS滚轮控制图片缩放大小和拖动的实例代码


Posted in Javascript onNovember 20, 2018

具体代码如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
  .dragAble {
    position: relative;
    cursor: move;
  }
  .img-con {
    position: relative;
    width: 713px;
    height: 455px;
    overflow: hidden;
    border: 1px solid red;
  }
  </style>
</head>
<body>
  <p class="img-con"><img src="http://img03.tooopen.com/uploadfile/downs/images/20110714/sy_20110714135215645030.jpg" class="dragAble" /></p>
  <script type="text/javascript" charset="utf-8">
  window.onload = function() {
      var oImg = document.getElementsByTagName("img")[0];
      function fnWheel(obj, fncc) {
        obj.onmousewheel = fn;
        if (obj.addEventListener) {
          obj.addEventListener('DOMMouseScroll', fn, false);
        }
        function fn(ev) {
          var oEvent = ev || window.event;
          var down = true;
          if (oEvent.detail) {
            down = oEvent.detail > 0
          } else {
            down = oEvent.wheelDelta < 0
          }
          if (fncc) {
            fncc.call(this, down, oEvent);
          }
          if (oEvent.preventDefault) {
            oEvent.preventDefault();
          }
          return false;
        }
      };
      fnWheel(oImg, function(down, oEvent) {
        var oldWidth = this.offsetWidth;
        var oldHeight = this.offsetHeight;
        var oldLeft = this.offsetLeft;
        var oldTop = this.offsetTop;
        var scaleX = (oEvent.clientX - oldLeft) / oldWidth; //比例
        var scaleY = (oEvent.clientY - oldTop) / oldHeight;
        if (down) {
          this.style.width = this.offsetWidth * 0.9 + "px";
          this.style.height = this.offsetHeight * 0.9 + "px";
        } else {
          this.style.width = this.offsetWidth * 1.1 + "px";
          this.style.height = this.offsetHeight * 1.1 + "px";
        }
        var newWidth = this.offsetWidth;
        var newHeight = this.offsetHeight;
        this.style.left = oldLeft - scaleX * (newWidth - oldWidth) + "px";
        this.style.top = oldTop - scaleY * (newHeight - oldHeight) + "px";
      });
    }
    <!--
    //拖拽
  var ie = document.all;
  var nn6 = document.getElementByIdx && !document.all;
  var isdrag = false;
  var y, x;
  var oDragObj;
  function moveMouse(e) {
    if (isdrag) {
      oDragObj.style.top = (nn6 ? nTY + e.clientY - y : nTY + event.clientY - y) + "px";
      oDragObj.style.left = (nn6 ? nTX + e.clientX - x : nTX + event.clientX - x) + "px";
      return false;
    }
  }
  function initDrag(e) {
    var oDragHandle = nn6 ? e.target : event.srcElement;
    var topElement = "HTML";
    while (oDragHandle.tagName != topElement && oDragHandle.className != "dragAble") {
      oDragHandle = nn6 ? oDragHandle.parentNode : oDragHandle.parentElement;
    }
    if (oDragHandle.className == "dragAble") {
      isdrag = true;
      oDragObj = oDragHandle;
      nTY = parseInt(oDragObj.style.top + 0);
      y = nn6 ? e.clientY : event.clientY;
      nTX = parseInt(oDragObj.style.left + 0);
      x = nn6 ? e.clientX : event.clientX;
      document.onmousemove = moveMouse;
      return false;
    }
  }
  document.onmousedown = initDrag;
  document.onmouseup = new Function("isdrag=false");
  </script>
</body>
</html>

只缩放

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<img border="0" src="http://img03.tooopen.com/uploadfile/downs/images/20110714/sy_20110714135215645030.jpg" onmousewheel="return rollImg(this)">
</body>
<script language="javascript">
function rollImg(o){
  /* 获取当前页面的缩放比
    若未设置zoom缩放比,则为默认100%,即1,原图大小
  */ 
  var zoom=parseInt(o.style.zoom)||100;
  /* event.wheelDelta 获取滚轮滚动值并将滚动值叠加给缩放比zoom
    wheelDelta统一为±120,其中正数表示为向上滚动,负数表示向下滚动
  */
  zoom+=event.wheelDelta/12;
  /* 如果缩放比大于0,则将缩放比加载到页面元素 */
  if (zoom>0) o.style.zoom=zoom+'%';
  /* 如果缩放比不大于0,则返回false,不执行操作 */
  return false;
}
</script>
</html>

总结

以上所述是小编给大家介绍的JS滚轮控制图片缩放大小和拖动的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript与Image加载事件(onload)、加载状态(complete)
Feb 14 Javascript
JS localStorage实现本地缓存的方法
Jun 22 Javascript
jQuery中获取Radio元素值的方法
Jul 02 Javascript
关闭页面时window.location事件未执行的原因分析及解决方案
Sep 01 Javascript
Javascript基础教程之while语句
Jan 18 Javascript
jQuery自定义图片缩放拖拽插件imageQ实现方法(附demo源码下载)
May 27 Javascript
谈谈JavaScript中浏览器兼容问题的写法小议
Dec 17 Javascript
基于JavaScript实现多级菜单效果
Jul 25 Javascript
JS正则表达式常见用法实例详解
Jun 19 Javascript
vue+element的表格实现批量删除功能示例代码
Aug 17 Javascript
利用vue-i18n实现多语言切换效果的方法
Jun 19 Javascript
Element Collapse 折叠面板的使用方法
Jul 26 Javascript
vue中的适配px2rem示例代码
Nov 19 #Javascript
JS监听事件的叠加和移除功能
Nov 19 #Javascript
微信小程序自定义弹窗wcPop插件
Nov 19 #Javascript
Vue.js 使用v-cloak后仍显示变量的解决方法
Nov 19 #Javascript
Vue.js 中的 v-cloak 指令及使用详解
Nov 19 #Javascript
浅析Vue.js 中的条件渲染指令
Nov 19 #Javascript
Vue.js 中的 v-show 指令及用法详解
Nov 19 #Javascript
You might like
PHP中call_user_func_array()函数的用法演示
2012/02/05 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
PHP中Memcache操作类及用法实例
2014/12/12 PHP
Docker 如何布置PHP开发环境
2016/06/21 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
禁止JQuery中的load方法装载IE缓存中文件的方法
2009/09/11 Javascript
js 模拟实现类似c#下的hashtable的简单功能代码
2010/01/24 Javascript
extjs ColumnChart设置不同的颜色实现代码
2013/05/17 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
js HTML5多图片上传及预览实例解析(不含前端的文件分割)
2016/08/26 Javascript
Javascript 高性能之递归,迭代,查表法详解及实例
2017/01/08 Javascript
vue+vue-router转场动画的实例代码
2018/09/01 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
2018/09/26 Javascript
js使用formData实现批量上传
2020/03/27 Javascript
js实现图片实时时钟
2020/01/15 Javascript
[01:06] DOTA2英雄背景故事第三期之秩序法则光之守卫
2020/07/07 DOTA
Python常用的爬虫技巧总结
2016/03/28 Python
python批量修改图片大小的方法
2018/07/24 Python
Python将视频或者动态图gif逐帧保存为图片的方法
2019/09/10 Python
使用python去除图片白色像素的实例
2019/12/12 Python
python装饰器使用实例详解
2019/12/14 Python
python装饰器相当于函数的调用方式
2019/12/27 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
2020/02/28 Python
AmazeUI 点击元素显示全屏的实现
2020/08/25 HTML / CSS
瑞贝卡·明可弗包包官网:Rebecca Minkoff
2016/07/21 全球购物
英国最大的独立摄影零售商:Park Cameras
2019/11/27 全球购物
ORACLE第二个十问
2013/12/14 面试题
工程地质勘察专业大学生求职信
2013/10/13 职场文书
采购求职信
2014/03/17 职场文书
微笑服务标语
2014/06/24 职场文书
大学生个人求职信例文
2014/07/07 职场文书
学校交通安全责任书
2014/08/25 职场文书
自主招生英文自荐信
2015/03/25 职场文书
2015年大学班级工作总结
2015/04/28 职场文书
2015年中职班主任工作总结
2015/05/25 职场文书
优秀创业计划书分享
2019/07/19 职场文书