千家信息网

vue怎么实现图片缩放

发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,这篇"vue怎么实现图片缩放"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"vue怎么
千家信息网最后更新 2025年11月12日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安全错误 数据库的锁怎样保障安全 网易魔兽客服人工服务器 西安互联企信软件开发 网络安全审核员的发展路线 甲骨文专有云数据库瞄准吗 方舟手游服务器通行证单机有用吗 万方数据库高级检索药品 小白评测数据库被封 怀化市互联网科技园 计算机网络技术基础第2版卷子 我的世界带模组的服务器号 数据库系统原理王勋 仙凡道下载软件开发 杭州高级软件开发培训班 广州常规rpa软件开发公司 云南衫境网络技术有限公司 中国网络安全研究院雄安分院 网络安全反间谍观后感 网络安全面临哪些威胁的途径 网络技术挑战赛ep1试题 软件开发管理者常犯错怎么办 什么是数据库文件 西安互联企信软件开发 广州哪里集中软件开发 截包的代理服务器 项目如何部署到服务器 金融科技和互联网金融 区别 崩坏三一个号可以有两个服务器吗 网络安全大赛 k 乌克兰电厂事件 网络安全 网络技术考试卷
0