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中的对象 推荐
Jan 09 Javascript
基于jquery的内容循环滚动小模块(仿新浪微博未登录首页滚动微博显示)
Mar 28 Javascript
利用ajaxfileupload插件实现文件上传无刷新的具体方法
Jun 08 Javascript
jquery.cookie() 方法的使用(读取、写入、删除)
Dec 05 Javascript
jQuery异步验证用户名是否存在示例代码
May 21 Javascript
js实现带有介绍的Select列表菜单实例
Aug 18 Javascript
利用BootStrap的Carousel.js实现轮播图动画效果
Dec 21 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
Feb 22 Javascript
React-intl 实现多语言的示例代码
Nov 03 Javascript
用Webpack构建Vue项目的实践
Nov 07 Javascript
HTML5+JS+JQuery+ECharts实现异步加载问题
Dec 16 jQuery
layui实现左侧菜单点击右侧内容区显示
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 多维数组排序实现代码
2009/08/05 PHP
解析php中eclipse 用空格替换 tab键
2013/06/24 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
Laravel框架数据库迁移操作实例详解
2020/04/06 PHP
常用简易JavaScript函数
2009/04/09 Javascript
GRID拖拽行的实例代码
2013/07/18 Javascript
非jQuery实现照片散落桌子上,单击放大的LightBox效果
2014/11/28 Javascript
如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”
2015/03/05 Javascript
浅析nodejs实现Websocket的数据接收与发送
2015/11/19 NodeJs
javascript+HTML5 Canvas绘制转盘抽奖
2020/05/16 Javascript
JavaScript基础教程——入门必看篇
2016/05/20 Javascript
Node.js中常规的文件操作总结
2016/10/13 Javascript
jQuery获取this当前对象子元素对象的方法
2016/11/29 Javascript
JavaScript制作弹出层效果
2016/12/02 Javascript
利用node.js+mongodb如何搭建一个简单登录注册的功能详解
2017/07/30 Javascript
使用vue与jquery实时监听用户输入状态的操作代码
2017/09/19 jQuery
详解使用webpack构建多页面应用
2017/12/21 Javascript
详解vue静态资源打包中的坑与解决方案
2018/02/05 Javascript
vue+webpack实现异步加载三种用法示例详解
2018/04/24 Javascript
angular2 ng2-file-upload上传示例代码
2018/08/23 Javascript
Vue组件的使用及个人理解与介绍
2019/02/09 Javascript
Vue-CLI 项目在pycharm中配置方法
2019/08/30 Javascript
[01:34]完美“圣”典宣传片震撼发布,12.17与你不见不散
2016/12/16 DOTA
python中常用的各种数据库操作模块和连接实例
2014/05/29 Python
python web.py开发httpserver解决跨域问题实例解析
2018/02/12 Python
Python如何应用cx_Oracle获取oracle中的clob字段问题
2019/08/27 Python
python speech模块的使用方法
2020/09/09 Python
大堂副理的岗位职责范文
2014/02/17 职场文书
财务管理职业生涯规划书
2014/02/26 职场文书
《毛主席在花山》教学反思
2014/04/20 职场文书
关于梦想的演讲稿
2014/05/05 职场文书
建材投资建议书
2014/05/16 职场文书
房屋出租协议书范本(标准版)
2014/09/24 职场文书
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
Ruby序列化和持久化存储 Marshal和Pstore介绍
2022/04/18 Ruby
python中mongodb包操作数据库
2022/04/19 Python