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的开源工具PACKER2.0.2
Nov 04 Javascript
jQuery实现用方向键控制层的上下左右移动
Jan 13 Javascript
浅析JavaScript中的同名标识符优先级
Dec 06 Javascript
window.open()详解及浏览器兼容性问题示例探讨
May 29 Javascript
JavaScript更改原始对象valueOf的方法
Mar 19 Javascript
AngularJS基础学习笔记之简单介绍
May 10 Javascript
Angular下H5上传图片的方法(可多张上传)
Jan 09 Javascript
详解性能更优越的小程序图片懒加载方式
Jul 18 Javascript
angularjs通过过滤器返回超链接的方法
Oct 26 Javascript
JS实现滚动条触底加载更多
Sep 19 Javascript
详解vue或uni-app的跨域问题解决方案
Feb 21 Javascript
JS如何寻找数组中心索引过程解析
Jun 01 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 选项及相关信息函数库
2006/12/04 PHP
PHP 已经成熟
2006/12/04 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
2012/10/29 PHP
php绘制圆形的方法
2015/01/24 PHP
提交表单后 PHP获取提交内容的实现方法
2016/05/25 PHP
Javascript attachEvent传递参数的办法
2009/12/14 Javascript
jquery自定义属性(类型/属性值)
2013/05/21 Javascript
JQUERY 获取IFrame中对象及获取其父窗口中对象示例
2013/08/19 Javascript
SeaJS入门教程系列之使用SeaJS(二)
2014/03/03 Javascript
实例详解jQuery表单验证插件validate
2016/01/18 Javascript
JavaScript toUpperCase()方法使用详解
2016/08/26 Javascript
Javascript动画效果(2)
2016/10/11 Javascript
javaScript日期工具类DateUtils详解
2017/12/08 Javascript
详解webpack之图片引入-增强的file-loader:url-loader
2018/10/08 Javascript
JavaScript数组、json对象、eval()函数用法实例分析
2019/02/21 Javascript
vue中 数字相加为字串转化为数值的例子
2019/11/07 Javascript
vue-resourc发起异步请求的方法
2020/02/11 Javascript
vue-router 路由传参用法实例分析
2020/03/06 Javascript
详解Vue的mixin策略
2020/11/19 Vue.js
Windows下搭建python开发环境详细步骤
2020/07/20 Python
Python实现的双色球生成功能示例
2017/12/18 Python
对python xlrd读取datetime类型数据的方法详解
2018/12/26 Python
关于Python3 lambda函数的深入浅出
2019/11/27 Python
python实现从ftp服务器下载文件
2020/03/03 Python
手把手教你安装Windows版本的Tensorflow
2020/03/26 Python
Django实现前台上传并显示图片功能
2020/05/29 Python
python爬取代理IP并进行有效的IP测试实现
2020/10/09 Python
Python抖音快手代码舞(字符舞)的实现方法
2021/02/07 Python
中国茶叶、茶具一站式网上购物商城:醉品茶城
2018/07/03 全球购物
进程的查看和调度分别使用什么命令
2015/03/25 面试题
迷你西餐厅创业计划书范文
2013/12/31 职场文书
网络信息安全承诺书
2014/03/26 职场文书
机关党总支领导班子整改方案
2014/09/20 职场文书
单位法人授权委托书范本
2014/10/09 职场文书
施工员岗位职责范本
2015/04/11 职场文书
解决xampp安装后Apache无法启动
2022/03/21 Servers