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 相关文章推荐
Code:findPosX 和 findPosY
Dec 20 Javascript
在IE模态窗口中自由查看HTML源码的方法
Mar 08 Javascript
javascript 实用的文字链提示框效果
Jun 30 Javascript
用js判断输入是否为中文的函数
Mar 10 Javascript
JavaScript中对象property的读取和写入方法介绍
Dec 30 Javascript
jQuery动画出现连续触发、滞后反复执行的解决方法
Jan 28 Javascript
jQuery层动画定位滑动效果的方法
Apr 30 Javascript
canvas红包照片实例分享
Feb 28 Javascript
详解Vue.use自定义自己的全局组件
Jun 14 Javascript
Vue中引入样式文件的方法
Aug 18 Javascript
完美解决iview 的select下拉框选项错位的问题
Mar 02 Javascript
微信小程序中的店铺评分组件及vue中用svg实现的评分显示组件
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学习之运算符相关概念
2011/06/09 PHP
PHP数组操作简单案例分析
2016/10/15 PHP
PHP创建单例后台进程的方法示例
2017/05/23 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
2020/08/30 PHP
jQuery $.get 的妙用 访问本地文本文件
2012/07/12 Javascript
JavaScript实现在标题栏上显示当前日期的方法
2015/03/19 Javascript
使用three.js 画渐变的直线
2016/06/05 Javascript
15个非常实用的JavaScript代码片段
2016/12/18 Javascript
jQuery中页面返回顶部的方法总结
2016/12/30 Javascript
jQuery Ajax前后端使用JSON进行交互示例
2017/03/17 Javascript
React Native react-navigation 导航使用详解
2017/12/01 Javascript
使用axios实现上传图片进度条功能
2017/12/21 Javascript
angular将html代码输出为内容的实例
2018/09/30 Javascript
详解在vue-cli3.0中自定css、js和图片的打包路径
2019/08/26 Javascript
vue改变循环遍历后的数据实例
2019/11/07 Javascript
解决vue admin element noCache设置无效的问题
2019/11/12 Javascript
[00:18]天涯墨客三技能展示
2018/08/25 DOTA
python 函数传参之传值还是传引用的分析
2017/09/07 Python
python读取中文txt文本的方法
2018/04/12 Python
对Python3中的print函数以及与python2的对比分析
2018/05/02 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
2019/01/29 Python
手写一个python迭代器过程详解
2019/08/27 Python
基于tensorflow for循环 while循环案例
2020/06/30 Python
python递归函数用法详解
2020/10/26 Python
CSS3中animation实现流光按钮效果
2020/12/21 HTML / CSS
在职研究生自我鉴定
2013/10/16 职场文书
外企求职信范文分享
2013/12/31 职场文书
工会主席岗位责任制
2014/02/11 职场文书
博士毕业生自我鉴定范文
2014/04/13 职场文书
劳模先进事迹材料
2014/12/24 职场文书
2015年审计人员工作总结
2015/05/26 职场文书
白银帝国观后感
2015/06/17 职场文书
医学生自荐信范文(2016精选篇)
2016/01/28 职场文书
餐厅营销的秘密:为什么老顾客会流水?
2019/08/08 职场文书
Python语言规范之Pylint的详细用法
2021/06/24 Python