vue怎么实现图片缩放
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇"vue怎么实现图片缩放"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"vue怎么
千家信息网最后更新 2026年11月02日vue怎么实现图片缩放
这篇"vue怎么实现图片缩放"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"vue怎么实现图片缩放"文章吧。
实现效果如下
这几天做了个没做过的组件,以此记录下,需要的效果是在一个dom内,缩放拖拽图片。
封装的子组件imgbox.Vue。父组件中使用,需要在父组件中准备一个盒子用来装图片,在这个盒子中可以缩放拽拽图片。
父组件如下
父组件html部分
父组件的css部分
.box1{ width: 300px; height: 300px; border: 1px solid #000; /deep/ .dragImg{//深度css,由于vue中的style标签的scoped属性不能直接给子组件样式,需要使用deep在父组件中给子组件中的dom给样式 width: 420px;//子组件中的图片大小 height: 280px; } /deep/ .btnbox{//深度css,由于vue中的style标签的scoped属性不能直接给子组件样式,需要使用deep在父组件中给子组件中的dom给样式 width: 70px;//子组件中按钮盒子的大小 height: 20px; top: 20px;//子组件盒子的位置 left: 20px; .operChange{//按钮的大小 width: 20px; height: 20px; } } }父组件应用子组件
import imgbox from './imgbox' //拖拽,放大缩小图片 子组件components:{ imgbox },配置数据
data1:{ name:"data1",//标识数据 imgsrc:require('@/assets/timg.jpg'),//图片路径 imgname:"img01",//图片对应的名字 用该属性和下面的图片数组属性对照,用于子组件获取索引,给默认高亮 scale:1,//默认缩放1 }方法
enlargeImg:function(val){//放大图片 this[val.name].scale = this[val.name].scale + 0.1 },narrowImg:function(val){//缩小图片 if(this[val.name].scale >= 0.1){ this[val.name].scale = this[val.name].scale - 0.1 } }子组件imgbox.vue如下
子组件html部分
子组件接受父组件传递参数,自定义指令
export default { components:{}, props:['config'], data(){ return { imgsrc:"",//图片的路径 } }, directives:{//注册指令 drag:function(el){ let dragBox = el; //获取当前元素 dragBox.onmousedown = e => { e.preventDefault(); //算出鼠标相对元素的位置 let disX = e.clientX - dragBox.offsetLeft; let disY = e.clientY - dragBox.offsetTop; _document.onmousemove = e => { //用鼠标的位置减去鼠标相对元素的位置,得到元素的位置 e.preventDefault(); let left = e.clientX - disX; let top = e.clientY - disY; //移动当前元素 dragBox.style.left = left + "px"; dragBox.style.top = top + "px"; }; _document.onmouseup = e => { e.preventDefault(); //鼠标弹起来的时候不再移动 _document.onmousemove = null; //预防鼠标弹起来后还会循环(即预防鼠标放上去的时候还会移动) _document.onmouseup = null; }; } } }, watch:{ config:function(val){ this.imgsrc = val.imgsrc } }, computed:{ scaleFun:function(){ return `transform:scale(${this.config.scale})` } }, created(){}, methods:{ clickEnlarge(){//点击放大 let data = this.config this.$emit('enlarge',data) } ,clickNarrow(){//点击缩小 let data = this.config this.$emit('narrow',data) } },}子组件css
.myDiv{ width: 100%; height: 100%; position: relative; overflow: hidden; img{ width: 100%; height: 100%; position: relative; } .btnbox{ display: flex; position: absolute; top: 20px; left: 20px; width: 70px; height: 20px; justify-content: space-around; z-index: 99; img{ width: 20px; height: 20px; opacity: 0.7; cursor: pointer; display: inline-block; } }}以上就是关于"vue怎么实现图片缩放"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
组件
图片
鼠标
位置
元素
内容
属性
样式
盒子
大小
部分
移动
指令
按钮
效果
数据
文章
时候
标签
深度
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
港股互联网科技股
中资互联网科技
互联网科技革命
互联网科技ppt模板
润盈互联网科技
互联网科技网站
天扬科技互联网广告
金融科技和互联网金融
互联网科技股午盘股票涨跌
恒生科技互联网指数分析
青海省互联网新科技
博兴的互联网电子科技公司
昭通互联网科技选哪家
坤平互联网科技
深圳市罗太互联网科技有限公司
互联网科技创新的路径
爱医互联网络科技
互联网的科技体现在哪里
河南商务圈互联网科技有限公司
武汉亿视互联网科技有限公司
华服互联网科技怎么样
深圳互联网络科技有限公司
居家互联网科技有限公司
中国最先进互联网科技公司
深圳市运趣互联网科技有限公司
昭通互联网科技选哪家
电子商务与互联网科技的关系
互联网科技接地气
北京互联网科技类企业分布
玉溪新华互联网科技怎么选