JavaScript实现图片的放大缩小及拖拽功能示例


Posted in Javascript onMay 14, 2019

本文实例讲述了JavaScript实现图片的放大缩小及拖拽功能。分享给大家供大家参考,具体如下:

实现效果如下:

JavaScript实现图片的放大缩小及拖拽功能示例

实现代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    div{width:400px;height:400px;overflow:hidden;position:relative;border:1px solid #000;}
    div img{position:absolute;height:100%;width:auto;cursor:move;}
  </style>
</head>
<body>
<div id="div" onmousewheel="return bbimg(this)"><img id="img" border="0" src="img/zs.jpg" /></div>
<script language="javascript">
  var params = {
    zoomVal:1,
    left: 0,
    top: 0,
    currentX: 0,
    currentY: 0,
    flag: false
  };
  //图片缩放
  function bbimg(o){
    var o=o.getElementsByTagName("img")[0];
    params.zoomVal+=event.wheelDelta/1200;
    if (params.zoomVal >= 0.2) {
      o.style.transform="scale("+params.zoomVal+")";
    } else {
      params.zoomVal=0.2;
      o.style.transform="scale("+params.zoomVal+")";
      return false;
    }
  }
  //获取相关CSS属性
  var getCss = function(o,key){
    return o.currentStyle? o.currentStyle[key] : document.defaultView.getComputedStyle(o,false)[key];
  };
  //拖拽的实现
  var startDrag = function(bar, target, callback){
    if(getCss(target, "left") !== "auto"){
      params.left = getCss(target, "left");
    }
    if(getCss(target, "top") !== "auto"){
      params.top = getCss(target, "top");
    }
    //o是移动对象
    bar.onmousedown = function(event){
      params.flag = true;
      if(!event){
        event = window.event;
        //防止IE文字选中
        bar.onselectstart = function(){
          return false;
        }
      }
      var e = event;
      params.currentX = e.clientX;
      params.currentY = e.clientY;
    };
    document.onmouseup = function(){
      params.flag = false;
      if(getCss(target, "left") !== "auto"){
        params.left = getCss(target, "left");
      }
      if(getCss(target, "top") !== "auto"){
        params.top = getCss(target, "top");
      }
    };
    document.onmousemove = function(event){
      var e = event ? event: window.event;
      if(params.flag){
        var nowX = e.clientX, nowY = e.clientY;
        var disX = nowX - params.currentX, disY = nowY - params.currentY;
        target.style.left = parseInt(params.left) + disX+ "px";
        target.style.top = parseInt(params.top) + disY+ "px";
        if (typeof callback == "function") {
          callback((parseInt(params.left) || 0) + disX, (parseInt(params.top) || 0) + disY);
        }
        if (event.preventDefault) {
          event.preventDefault();
        }
        return false;
      }
    }
  };
  startDrag(document.getElementById("img"),document.getElementById("img"))
</script>
</body>
</html>

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
初探jquery——表单应用范例
Feb 20 Javascript
javascript 面向对象编程 function也是类
Sep 17 Javascript
图片上传判断及预览脚本的效果实例
Aug 07 Javascript
javascript实现checkBox的全选,反选与赋值
Mar 12 Javascript
Bootstrap实现响应式导航栏效果
Dec 28 Javascript
Javascript this 函数深入详解
Dec 13 Javascript
AngularJS自定义控件实例详解
Dec 13 Javascript
Bootstrap CSS布局之按钮
Dec 17 Javascript
Node.js操作redis实现添加查询功能
May 25 Javascript
AngularJS 将再发布一个重要版本 然后进入长期支持阶段
Jan 31 Javascript
vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据操作
Jul 31 Javascript
javascript实现倒计时提示框
Mar 02 Javascript
fastadmin中调用js的方法
May 14 #Javascript
vue+elementUI实现表单和图片上传及验证功能示例
May 14 #Javascript
微信小程序自定义可滑动顶部TabBar选项卡实现页面切换功能示例
May 14 #Javascript
微信小程序开发实现的选项卡(窗口顶部/底部TabBar)页面切换功能图文详解
May 14 #Javascript
详解jenkins自动化部署vue
May 14 #Javascript
基于JS实现前端压缩上传图片的实例代码
May 14 #Javascript
JavaScript如何实现元素全排列实例代码
May 14 #Javascript
You might like
php实现下载限制速度示例分享
2014/02/13 PHP
thinkPHP实现表单自动验证
2014/12/24 PHP
详解PHP中的状态模式编程
2015/08/11 PHP
Laravel框架实现的rbac权限管理操作示例
2019/01/16 PHP
用jquery实现的一个超级简单的下拉菜单
2014/05/18 Javascript
网页运行时提示对象不支持abigimage属性或方法
2014/08/10 Javascript
探寻Javascript执行效率问题
2014/11/12 Javascript
javascript实现unicode与ASCII相互转换的方法
2015/12/10 Javascript
JQuery实现定时刷新功能代码
2017/05/09 jQuery
JavaScript 上传文件(psd,压缩包等),图片,视频的实现方法
2017/06/19 Javascript
VUE2实现事件驱动弹窗示例
2017/10/21 Javascript
微信小程序 scroll-view实现锚点滑动的示例
2017/12/06 Javascript
axios发送post请求,提交图片类型表单数据方法
2018/03/16 Javascript
Vue项目pdf(base64)转图片遇到的问题及解决方法
2018/10/19 Javascript
[01:12:08]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.24
2019/09/10 DOTA
Python的函数嵌套的使用方法
2014/01/24 Python
Python中文件遍历的两种方法
2014/06/16 Python
python爬虫使用cookie登录详解
2017/12/27 Python
Python实现的rsa加密算法详解
2018/01/24 Python
基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算
2020/08/05 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
2020/08/17 Python
Python txt文件如何转换成字典
2020/11/03 Python
python 下载文件的多种方法汇总
2020/11/17 Python
python 获取域名到期时间的方法步骤
2021/02/10 Python
西尔斯百货官网:Sears
2016/09/06 全球购物
Lookfantastic意大利官网:英国知名美妆购物网站
2019/05/31 全球购物
公共汽车、火车和飞机票的通用在线预订和销售平台:INFOBUS
2019/11/30 全球购物
意大利奢侈品综合电商网站:MODES
2019/12/14 全球购物
JDK安装目录下有哪些内容
2014/08/25 面试题
如何用Python输出一个Fibonacci数列
2016/08/28 面试题
实习教师自我鉴定
2013/12/09 职场文书
留守儿童工作方案
2014/06/02 职场文书
珠宝的促销活动方案
2014/08/31 职场文书
银行党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
检讨书怎么写
2015/01/23 职场文书
windows11怎么查看自己安装的版本号? win11版本号的查看方法
2021/11/21 数码科技