Vue实现base64编码图片间的切换功能


Posted in Javascript onDecember 04, 2019

前言

昨天在项目开发中遇到了一个需要展示多张图片到一个容器中的需求,每张图片在鼠标移入时都要更换图片路径,展示一个新的图片,由于每张图片大小都在2~6kb之间,webpack中配置了图片在10kb以内自动转换base64,所有就有了本篇文章的分享。先给大家展示下最后要实现的效果

Vue实现base64编码图片间的切换功能

实现思路

  • 给每个元素添加@mouserover事件和@mouseleave事件
  • 绑定函数,传用于识别当前参数的标识
  • 根据所传参数判断当前状态下应该显示什么图片

解析渲染

实现过程

从json文件中读取图片信息集合,循环渲染json文件中的图片,传当前元素和当前图片的一些信息过去

<div class="row-panel">
  <div class="item-panel" v-for="item in this.emojiList" :key="item.info">
    <img :src="require(`../assets/img/emoji/${item.src}`)" :alt="item.info" @mouseover="emojiConversion($event,'over',item.src,item.hover)" @mouseleave="emojiConversion($event,'leave',item.src,item.hover)">
  </div>
</div>

引入json文件,并在data()中声明

import emoji from '../assets/json/emoji';

data() {
      return {
        emojiList:emoji,
        toolbarList:toolbar
      }
    }

实现鼠标移入移除替换图片的函数

// 表情框鼠标悬浮显示动态表情
  emojiConversion:function (event,status,path,hoverPath) {
    if(status==="over"){
      event.target.src = require(`../assets/img/emoji/${hoverPath}`);
    }else{
      event.target.src = require(`../assets/img/emoji/${path}`);
    }
  }

emoji.json
[
 {
  "name": "pout",
  "src": "1fix@2x.png",
  "info": "撇嘴",
  "hover": "1@2x.gif"
 },
 {
  "name": "porn",
  "src": "2fix@2x.png",
  "info": "色",
  "hover": "2@2x.gif"
 },
 {
  "name": "smile",
  "src": "14fix@2x.png",
  "info": "微笑",
  "hover": "14@2x.gif"
 },
 {
  "name": "smile",
  "src": "178fix@2x.png",
  "info": "滑稽",
  "hover": "178@2x.gif"
 }
]

踩坑过程

错误的使用require

// 这样直接在data中写文件路径没问题,可以正常渲染
emojiSrc:{
    "funny":require("../assets/img/emoji/178fix@2x.png"),
    "funnyNormal":require("../assets/img/emoji/178fix@2x.png"),
    "funnyHover":require("../assets/img/emoji/178@2x.gif"),
    "smile":require("../assets/img/emoji/14fix@2x.png"),
    "smileNormal":require("../assets/img/emoji/14fix@2x.png"),
    "smileHover":require("../assets/img/emoji/14@2x.gif"),
    "pout":require("../assets/img/emoji/1fix@2x.png"),
    "poutNormal":require("../assets/img/emoji/1fix@2x.png"),
    "poutHover":require("../assets/img/emoji/1@2x.gif"),
    "porn":require("../assets/img/emoji/2fix@2x.png"),
    "pornNormal":require("../assets/img/emoji/2fix@2x.png"),
    "pornHover":require("../assets/img/emoji/2@2x.gif"),
  }

渲染结果:

Vue实现base64编码图片间的切换功能

但是如果在json文件中写文件的路径,渲染结果(无法识别文件路径):

Vue实现base64编码图片间的切换功能

解决方案:使用模板字符串,json文件只写文件名,文件路径写在当前组件

require的正确使用方式

require(`../assets/img/emoji/${hoverPath}`);

总结

以上所述是小编给大家介绍的Vue实现base64编码图片间的切换功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
javascript中如何处理引号编码&amp;#034;
Aug 15 Javascript
使用原生JS实现弹出层特效
Dec 22 Javascript
JavaScript监听文本框回车事件并过滤文本框空格的方法
Apr 16 Javascript
JS实现仿QQ聊天窗口抖动特效
May 10 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
Dec 01 Javascript
JS针对浏览器窗口关闭事件的监听方法集锦
Jun 24 Javascript
javaScript日期工具类DateUtils详解
Dec 08 Javascript
如何制作一个Node命令行图像识别工具
Dec 12 Javascript
Vue 表情包输入组件的实现代码
Jan 21 Javascript
使用element-ui table expand展开行实现手风琴效果
Mar 15 Javascript
详解vue 不同环境配置不同的打包命令
Apr 07 Javascript
解决vue的router组件component在import时不能使用变量问题
Jul 26 Javascript
Vue实现点击当前元素以外的地方隐藏当前元素(实现思路)
Dec 04 #Javascript
Vue实现图片与文字混输效果
Dec 04 #Javascript
环形加载进度条封装(Vue插件版和原生js版)
Dec 04 #Javascript
element-ui 远程搜索组件el-select在项目中组件化的实现代码
Dec 04 #Javascript
在vue和element-ui的table中实现分页复选功能
Dec 04 #Javascript
vue项目中极验验证的使用代码示例
Dec 03 #Javascript
jQuery轮播图功能制作方法详解
Dec 03 #jQuery
You might like
使用php+xslt在windows平台上
2006/10/09 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
2014/06/26 PHP
php+jQuery.uploadify实现文件上传教程
2014/12/26 PHP
PHP中文乱码解决方案
2015/03/05 PHP
symfony2.4的twig中date用法分析
2016/03/18 PHP
轻松实现php文件上传功能
2017/02/17 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
2018/04/12 PHP
showModalDialog 和 showModelessDialog
2007/01/22 Javascript
FireFox下XML对象转化成字符串的解决方法
2011/12/09 Javascript
JavaScript操作XML 使用百度RSS作为新闻源示例
2012/02/17 Javascript
统计jQuery中各字符串出现次数的工具
2012/05/03 Javascript
给事件响应函数传参数的四种方式小结
2013/12/05 Javascript
JavaScript实现网页截图功能
2014/10/16 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
2015/02/04 Javascript
JS判断是否长按某一键的方法
2016/03/02 Javascript
Node.js服务器环境下使用Mock.js拦截AJAX请求的教程
2016/05/23 Javascript
Vue组件tree实现树形菜单
2017/04/13 Javascript
socket.io与pm2(cluster)集群搭配的解决方案
2017/06/02 Javascript
nodejs基于WS模块实现WebSocket聊天功能的方法
2018/01/12 NodeJs
vue+elementUi 实现密码显示/隐藏+小图标变化功能
2020/01/18 Javascript
Python的__builtin__模块中的一些要点知识
2015/05/02 Python
利用Python抓取行政区划码的方法
2016/11/28 Python
python 换位密码算法的实例详解
2017/07/19 Python
Python语言的变量认识及操作方法
2018/02/11 Python
Python网页正文转换语音文件的操作方法
2018/12/09 Python
使用Python实现将多表分批次从数据库导出到Excel
2020/05/15 Python
keras中epoch,batch,loss,val_loss用法说明
2020/07/02 Python
求职信需要的五点内容
2014/02/01 职场文书
计算机应届毕业生自荐信范文
2014/02/23 职场文书
2014年教师政治学习材料
2014/06/02 职场文书
装修施工安全责任书
2014/07/24 职场文书
2015年银行客户经理工作总结
2015/04/01 职场文书
Python控制台输出俄罗斯方块移动和旋转功能
2021/04/18 Python
python实现简单聊天功能
2021/07/07 Python
Window server中安装Redis的超详细教程
2021/11/17 Redis
vue postcss-px2rem 自适应布局
2022/05/15 Vue.js