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的禁用右键、文本选择功能、复制按键的实现代码
Aug 27 Javascript
jQuery元素选择器用法实例
Dec 23 Javascript
js实现点击链接后窗口缩小并居中的方法
Mar 02 Javascript
js实现div模拟模态对话框展现URL内容
May 27 Javascript
详解Vue.js——60分钟组件快速入门(上篇)
Dec 05 Javascript
webpack打包并将文件加载到指定的位置方法
Feb 22 Javascript
webpack external模块的具体使用
Mar 10 Javascript
如何用JavaScript实现功能齐全的单链表详解
Feb 11 Javascript
JS中的算法与数据结构之队列(Queue)实例详解
Aug 20 Javascript
JS常见内存泄漏及解决方案解析
May 30 Javascript
Javascript call及apply应用场景及实例
Aug 26 Javascript
原生小程序封装跑马灯效果
Oct 21 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中::、-&amp;gt;、self、$this几种操作符的区别介绍
2013/04/24 PHP
laravel 模型查询按照whereIn排序的示例
2019/10/16 PHP
Extjs 几个方法的讨论
2010/01/28 Javascript
jquery选择器(常用选择器说明)
2010/09/28 Javascript
javascript判断iphone/android手机横竖屏模式的函数
2011/12/20 Javascript
捕获和分析JavaScript Error的方法
2014/03/25 Javascript
js 数组去重的四种实用方法
2014/09/09 Javascript
JavaScript静态类型检查工具FLOW简介
2015/01/06 Javascript
JS表的模拟方法
2015/02/05 Javascript
jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
2015/04/22 Javascript
JS实现的另类手风琴效果网页内容切换代码
2015/09/08 Javascript
最佳的JavaScript错误处理实践
2016/07/16 Javascript
JavaScript中最容易混淆的作用域、提升、闭包知识详解(推荐)
2016/09/05 Javascript
jquery实现图片轮播器
2017/05/23 jQuery
利用JS对iframe父子(内外)页面进行操作的方法教程
2017/06/15 Javascript
解决Vue.js 2.0 有时双向绑定img src属性失败的问题
2018/03/14 Javascript
webuploader分片上传的实现代码(前后端分离)
2018/09/10 Javascript
Vue.js实现的购物车功能详解
2019/01/27 Javascript
Vue表单控件绑定图文详解
2019/02/11 Javascript
微信小程序拼接图片链接无底洞深入探究
2019/09/03 Javascript
Python中字符串的格式化方法小结
2016/05/03 Python
python实现rsa加密实例详解
2017/07/19 Python
Django视图和URL配置详解
2018/01/31 Python
Python 依赖库太多了该如何管理
2019/11/08 Python
python中对二维列表中一维列表的调用方法
2020/06/07 Python
Python实现区域填充的示例代码
2021/02/03 Python
Opencv 图片的OCR识别的实战示例
2021/03/02 Python
html5贪吃蛇游戏使用63行代码完美实现
2013/06/25 HTML / CSS
银行见习期自我鉴定
2014/01/29 职场文书
采购类个人求职的自我评价
2014/02/18 职场文书
离婚代理词范文
2015/05/23 职场文书
公司车辆管理制度
2015/08/04 职场文书
2016教师六五普法学习心得体会
2016/01/21 职场文书
2016开学第一课心得体会
2016/01/23 职场文书
Python中使用Lambda函数的5种用法
2021/04/01 Python
什么是clearfix (一文搞清楚css清除浮动clearfix)
2023/05/21 HTML / CSS