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 相关文章推荐
js 定时器setTimeout无法调用局部变量的解决办法
Nov 28 Javascript
jquery ajax jsonp跨域调用实例代码
Dec 11 Javascript
Jquery自定义button按钮的几种方法
Jun 11 Javascript
DOM节点深度克隆函数cloneNode()用法实例
Jan 12 Javascript
JS实现简单的键盘打字的效果
Apr 24 Javascript
Backbone.js的一些使用技巧
Jul 01 Javascript
使用JQuery 加载页面时调用JS的实现方法
May 30 Javascript
jQuery序列化form表单数据为JSON对象的实现方法
Sep 20 jQuery
node上的redis调用优化示例详解
Oct 30 Javascript
微信小程序导入Vant报错VM292:1 thirdScriptError的解决方法
Aug 01 Javascript
Vue的属性、方法、生命周期实例代码详解
Sep 17 Javascript
JS实现简单移动端鼠标拖拽
Jul 23 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三维数组去重(示例代码)
2013/11/26 PHP
改善你的jQuery的25个步骤 千倍级效率提升
2010/02/11 Javascript
ASP.NET中使用后端代码注册脚本 生成JQUERY-EASYUI的界面错位的解决方法
2010/06/12 Javascript
javascript实现动态改变层大小的方法
2015/05/14 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
JavaScript中定时控制Throttle、Debounce和Immediate详解
2016/11/17 Javascript
jQuery使用EasyUi实现三级联动下拉框效果
2017/03/08 Javascript
深入浅析JavaScript中的RegExp对象
2017/09/18 Javascript
Vue组件之全局组件与局部组件的使用详解
2017/10/09 Javascript
捕获未处理的Promise错误方法
2017/10/13 Javascript
前后端如何实现登录token拦截校验详解
2018/09/03 Javascript
Angular6使用forRoot() 注册单一实例服务问题
2019/08/27 Javascript
详解JavaScript中的链式调用
2020/11/27 Javascript
[01:08]2014DOTA2展望TI 剑指西雅图LGD战队专访
2014/06/30 DOTA
python计算N天之后日期的方法
2015/03/31 Python
使用pyecharts在jupyter notebook上绘图
2020/04/23 Python
python 实现倒排索引的方法
2018/12/25 Python
Falsk 与 Django 过滤器的使用与区别详解
2019/06/04 Python
超简单的Python HTTP服务
2019/07/22 Python
基于SpringBoot构造器注入循环依赖及解决方式
2020/04/26 Python
python能自学吗
2020/06/18 Python
css3 给页面加个半圆形导航条主要利用旋转和倾斜样式
2014/02/10 HTML / CSS
非常漂亮的CSS3百叶窗焦点图动画
2016/02/24 HTML / CSS
酒店总经理工作职责
2013/12/13 职场文书
小学生新学期寄语
2014/01/19 职场文书
平面设计专业求职信
2014/08/09 职场文书
医德考评自我评价
2014/09/14 职场文书
2014年会计工作总结
2014/11/27 职场文书
优秀教师推荐材料
2014/12/16 职场文书
实习指导教师评语
2014/12/30 职场文书
2015年学校政教工作总结
2015/07/20 职场文书
采购部2015年度工作总结
2015/07/24 职场文书
五年级作文之劳动作文
2019/11/12 职场文书
导游词之天下银坑景区
2019/11/21 职场文书
教你如何使用Python实现二叉树结构及三种遍历
2021/06/18 Python
安装Ruby和 Rails的详细步骤
2022/04/19 Ruby