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 相关文章推荐
JS IE和FF兼容性问题汇总
Feb 09 Javascript
关于JavaScript的一些看法
May 27 Javascript
类似GMAIL的Ajax信息反馈显示
Feb 16 Javascript
收集的一些Array及String原型对象的扩展实现代码
Dec 05 Javascript
jQuery中attr()方法用法实例
Jan 05 Javascript
js实现Select列表内容自动滚动效果代码
Aug 20 Javascript
vue2.0 axios跨域并渲染的问题解决方法
Mar 08 Javascript
JS中用EL表达式获取上下文参数值的方法
Mar 28 Javascript
对angular 实时更新模板视图的方法$apply详解
Oct 09 Javascript
Vue开发之watch监听数组、对象、变量操作分析
Apr 25 Javascript
2020淘宝618理想生活列车自动领喵币js脚本的代码
Jun 02 Javascript
适用于 Vue 的播放器组件Vue-Video-Player操作
Nov 16 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加速 eAccelerator配置和使用指南
2009/06/05 PHP
使用php批量删除数据库下所有前缀为prefix_的表
2014/06/09 PHP
Yii2中使用asset压缩js,css文件的方法
2016/11/24 PHP
php中static和const关键字用法分析
2016/12/07 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
2017/07/13 PHP
利用php操作memcache缓存的基础方法示例
2017/08/02 PHP
一个js拖拽的效果类和dom-drag.js浅析
2010/07/17 Javascript
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
2011/03/17 Javascript
比较新旧两个数组值得增加和删除的JS代码
2013/10/30 Javascript
jquery-tips悬浮提示插件分享
2015/07/31 Javascript
Bootstrap输入框组件简单实现代码
2017/03/06 Javascript
js实现3D图片展示效果
2017/03/09 Javascript
限时抢购-倒计时的完整实例(分享)
2017/09/17 Javascript
JavaScript深拷贝和浅拷贝概念与用法实例分析
2018/06/07 Javascript
VUE脚手架具体使用方法
2019/05/20 Javascript
解决VUE双向绑定失效的问题
2019/10/29 Javascript
vue中touch和click共存的解决方式
2020/07/28 Javascript
[04:04]DOTA2亚洲邀请赛比赛场馆&酒店全攻略
2017/03/23 DOTA
彻底理解Python list切片原理
2017/10/27 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
2017/11/23 Python
Python计算开方、立方、圆周率,精确到小数点后任意位的方法
2018/07/17 Python
学生信息管理系统Python面向对象版
2019/01/30 Python
Python3爬楼梯算法示例
2019/03/04 Python
PyTorch: 梯度下降及反向传播的实例详解
2019/08/20 Python
Python基础之函数基本用法与进阶详解
2020/01/02 Python
Python读取配置文件(config.ini)以及写入配置文件
2020/04/08 Python
W Hamond官网:始于1979年的钻石专家
2020/07/20 全球购物
周年庆典邀请函范文
2014/01/23 职场文书
公务员转正考察材料
2014/02/07 职场文书
物流业务员岗位职责
2014/02/08 职场文书
计算机科学系职业生涯规划书
2014/03/08 职场文书
体育馆的标语
2014/06/24 职场文书
质量负责人岗位职责
2015/02/15 职场文书
2015年全国“爱牙日”宣传活动总结
2015/03/23 职场文书
Python使用OpenCV实现虚拟缩放效果
2022/02/28 Python
Windows Server 2012 R2服务器安装与配置的完整步骤
2022/07/15 Servers