• vue 图片拖拉转放大缩小组件


    vue 图片拖拉转放大缩小组件

    <doc>
      图片组件 - 用户放大缩小以及拖拽
    </doc>
    <template>
      <div style=" 100%;position: relative;overflow: hidden;text-align: center;border: 1px solid #f1f2f3;">
        <el-button size='mini' @click="toBIgChange" icon="el-icon-zoom-in"
          style="position: absolute;top: 2px ;left: 2px;z-index: 999;"></el-button>
        <el-button size='mini' @click="toSmallChange" icon="el-icon-zoom-out"
          style="position: absolute;top: 2px ;left: 40px;z-index: 999;"></el-button>
        <img id="img" :src="src" alt="" @mousedown.prevent="dropImage" :style="{transform:'scale('+multiples+')'}">
      </div>
    </template>
    <script>
      export default {
        props: ['src'],
        data() {
          return {
            multiples: 1,
            odiv: null,
          }
        },
        mounted() {
          this.dropImage()
        },
        watch: {
          src(newValue, oldValue) {
            this.multiples = 1
            if (this.odiv !== null) {
              this.odiv.style.left = '0px';
              this.odiv.style.top = '0px';
            }
          },
        },
        methods: {
          toBIgChange() {
            if (this.multiples >= 2) {
              return;
            }
            this.multiples += 0.25;
          },
          // 缩小
          toSmallChange() {
            if (this.multiples <= 1) {
              return;
            }
            this.multiples -= 0.25;
          },
          // 拖拽
          dropImage(e) {
            if (e === null) {
              return
            }
            this.odiv = e.target;        //获取目标元素
            //算出鼠标相对元素的位置
            let disX = e.clientX - this.odiv.offsetLeft;
            let disY = e.clientY - this.odiv.offsetTop;
            document.onmousemove = (e) => {       //鼠标按下并移动的事件
              //用鼠标的位置减去鼠标相对元素的位置,得到元素的位置
              let left = e.clientX - disX;
              let top = e.clientY - disY;
    
              //绑定元素位置到positionX和positionY上面
              this.positionX = top;
              this.positionY = left;
    
              //移动当前元素
              this.odiv.style.left = left + 'px';
              this.odiv.style.top = top + 'px';
            };
            document.onmouseup = (e) => {
              document.onmousemove = null;
              document.onmouseup = null;
            };
          },
        }
      }
    </script>
    <style scoped>
      img {
         100%;
        position: relative;
      }
    </style>
    

    在这里插入图片描述

    【版权声明】本博文著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处!
    【重要说明】本文为本菜鸟的学习记录,论点和观点仅代表个人不代表此技术的真理,目的是学习和可能成为向别人分享的经验,因此有错误会虚心接受改正,但不代表此时博文无误!
    【博客园地址】JayveeWong: http://www.cnblogs.com/wjw1014
    【CSDN地址】JayveeWong: https://blog.csdn.net/weixin_42776111
    【Gitee地址】Jayvee:https://gitee.com/wjw1014
    【GitHub地址】Jayvee:https://github.com/wjw1014
  • 相关阅读:
    洛谷 P2713:「罗马游戏」
    洛谷 P4014:「分配问题」
    「洛谷P1433」吃奶酪
    信号的频谱分析,加噪降噪处理
    javascript学习笔记
    IDA学习笔记
    inline内联函数
    api hook学习笔记
    java反射学习笔记
    android基于MBR的bootkit病毒学习笔记
  • 原文地址:https://www.cnblogs.com/wjw1014/p/14590899.html
Copyright © 2020-2023  润新知