js实现图片滚轮、按钮缩放大小,图片旋转,图片拖拽

html代码

<div class="upload-img-box" ref="moveWrap">
<div class="show-box" ref="rotate" @mousedown="moveImg" @mousewheel.prevent="rollImg($event,)">
<img :src="singleList.fileImgUrl" class="uploadimg" ref="img" :style="{transform:'scale('+multiples/100+') rotate('+rotate +'deg)'}"/>
</div>
<div class="img-plus" @click="toBIgChange()"><span class="tip">放大</span></div>
<div class="img-minus" @click="toSmallChange()"><span class="tip">缩小</span></div>
<div class="img-rotate" @click="toRotate()"><span class="tip">旋转</span></div>
</div>

script代码

  data() {
        return {
          rotate: 0, //旋转角度
          multiples:0, //缩放大小
        }
  },
  methods: {
    // 图片旋转
        toRotate(){           
                this.ratate+= 90;
                if (this.ratate >= 360) {
                    this.ratate= 0
                }     
        },
// 滚轮缩放
        rollImg($event,val){
            // $event.wheelDelta统一为±120,其中正数表示为向上滚动,负数表示向下滚动
            if($event.wheelDelta == 120){
                this.toBIgChange()
            }else{
                this.toSmallChange()
            }
        },
toBIgChange() {
                if (this.multiples>= 300) {
                    return;
                }
                if(this.multiples+ 10 > 300){
                    this.multiples = 300
                }else{
                    this.multiples+=10
                }
          
        },
        // 缩小
        toSmallChange() {
                if(this.multiples<10) return;
                if(val - 10 < 10){
                    this.multiples = 10
                }else{
                    this.multiples-=10
                }
           
        },  
//图片拖拽
moveImg(e) {
            e.preventDefault()
            // 获取元素
            let imgWrap = this.$refs.moveWrap
            let img = this.$refs.img
            let x = e.pageX - img.offsetLeft //pageX 鼠标点击位置相对于网页左上角的水平偏移量 pageY 鼠标点击位置相对于网页左上角的垂直平偏移量
            let y = e.pageY  - img.offsetTop //offsetTop相对于其最近的非static父元素的上偏移量
            // 添加鼠标移动事件
            imgWrap.addEventListener('mousemove', move)
            function move (e) {
                img.style.left = e.pageX - x + 'px'
                img.style.top = e.pageY  - y + 'px'
            }
            // 添加鼠标抬起事件,鼠标抬起,将事件移除
            img.addEventListener('mouseup', () => {
                imgWrap.removeEventListener('mousemove', move)
            })
            imgWrap.addEventListener('mouseup', () => {
                imgWrap.removeEventListener('mousemove', move)
            })
            // 鼠标离开父级元素,把事件移除
            imgWrap.addEventListener('mouseout', () => {
                imgWrap.removeEventListener('mousemove', move)
            })
        },
  }
}```
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容