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 相关文章推荐
基于jquery的$.ajax async使用
Oct 19 Javascript
javascript测试题练习代码
Oct 10 Javascript
判定是否原生方法的JS代码
Nov 12 Javascript
jQuery拖动布局其结果保存到数据库
Oct 09 Javascript
分享javascript计算时间差的示例代码
Mar 19 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
May 30 Javascript
jQuery增加、删除及修改select option的方法
Aug 19 Javascript
vue-cli的eslint相关用法
Sep 29 Javascript
jQuery实现的页面详情展开收起功能示例
Jun 11 jQuery
angular2 NgModel模块的具体使用方法
Apr 10 Javascript
详解微信小程序自定义组件的实现及数据交互
Jul 22 Javascript
js中实现继承的五种方法
Jan 25 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
PHPThumb图片处理实例
2014/05/03 PHP
PHP中使用gettext解决国际化问题的例子(i18n)
2014/06/13 PHP
php中stdClass的用法分析
2015/02/27 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
文本框只能选择数据到文本框禁止手动输入
2013/11/22 Javascript
改变隐藏的input中value值的方法
2014/03/19 Javascript
12306验证码破解思路分享
2015/03/25 Javascript
jQuery实现响应鼠标背景变化的动态菜单效果代码
2015/08/27 Javascript
全面详细的jQuery常见开发技巧手册
2016/02/21 Javascript
超链接怎么正确调用javascript函数
2016/05/23 Javascript
vue2.0 实现导航守卫(路由守卫)
2018/05/21 Javascript
JavaScript实现的鼠标跟随特效示例【2则实例】
2018/12/22 Javascript
详解微信小程序回到顶部的两种方式
2019/05/09 Javascript
vue+element实现打印页面功能
2019/05/20 Javascript
Vue触发隐藏input file的方法实例详解
2019/08/14 Javascript
python基础教程之python消息摘要算法使用示例
2014/02/10 Python
Python验证码识别的方法
2015/07/10 Python
python 中的int()函数怎么用
2017/10/17 Python
python实现监控某个服务 服务崩溃即发送邮件报告
2018/06/21 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
2019/01/23 Python
Python中py文件转换成exe可执行文件的方法
2019/06/14 Python
使用python客户端访问impala的操作方式
2020/03/28 Python
tensorflow实现将ckpt转pb文件的方法
2020/04/22 Python
使用Keras预训练好的模型进行目标类别预测详解
2020/06/27 Python
Python如何实现自带HTTP文件传输服务
2020/07/08 Python
python dict如何定义
2020/09/02 Python
意大利综合购物网站:Giordano Shop
2016/10/21 全球购物
REISS英国官网:伦敦High Street最受欢迎品牌
2016/12/21 全球购物
世界知名接发和假发品牌:Poze Hair
2017/03/08 全球购物
Zooplus葡萄牙:欧洲领先的网上宠物商店
2018/07/01 全球购物
Armor Lux法国官方网站:水手服装、成衣和内衣
2020/05/26 全球购物
Groupon西班牙官方网站:在线优惠券和交易,节省高达70%
2021/03/13 全球购物
介绍信的格式
2015/01/30 职场文书
2016年暑期见闻作文
2015/11/25 职场文书
关于Mybatis中SQL节点的深入解析
2022/03/19 Java/Android