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 相关文章推荐
抽出www.templatemonster.com的鼠标悬停加载大图模板的代码
Jul 11 Javascript
js判断当页面无法回退时关闭网页否则就history.go(-1)
Aug 07 Javascript
使用开源工具制作网页验证码的方法
Oct 17 Javascript
详解jQuery插件开发方式
Nov 22 Javascript
D3.js进阶系列之CSV表格文件的读取详解
Jun 06 Javascript
深入浅出es6模板字符串
Aug 26 Javascript
angularjs实现时间轴效果的示例代码
Nov 29 Javascript
使用FileReader API创建Vue文件阅读器组件
Apr 03 Javascript
详解jQuery中的easyui
Sep 02 jQuery
Vee-validate 父组件获取子组件表单校验结果的实例代码
May 20 Javascript
Vue-router 报错NavigationDuplicated的解决方法
Mar 31 Javascript
JS闭包原理及其使用场景解析
Dec 03 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编程之高级技巧——利用Mysql函数
2006/10/09 PHP
PHP中函数内引用全局变量的方法
2008/10/20 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
做网页的一些技巧
2007/02/01 Javascript
javascript Array.remove() 数组删除
2009/08/06 Javascript
让IE6支持min-width和max-width的方法
2010/06/25 Javascript
jQuery1.9.1针对checkbox的调整方法(prop)
2014/05/01 Javascript
js获取内联样式的方法
2015/01/27 Javascript
SpringMVC restful 注解之@RequestBody进行json与object转换
2015/12/10 Javascript
AngularJS实现Input格式化的方法
2016/11/07 Javascript
nodejs中向HTTP响应传送进程的输出
2017/03/19 NodeJs
微信小程序中的onLoad详解及简单实例
2017/04/05 Javascript
js解决软键盘遮挡输入框的问题分享
2017/12/19 Javascript
Python实现的tab文件操作类分享
2014/11/20 Python
深入解析Python中的WSGI接口
2015/05/11 Python
利用Pyhton中的requests包进行网页访问测试的方法
2018/12/26 Python
用Python配平化学方程式的方法
2019/07/20 Python
numpy.random.shuffle打乱顺序函数的实现
2019/09/10 Python
Python文件读写w+和r+区别解析
2020/03/26 Python
vscode配置anaconda3的方法步骤
2020/08/08 Python
详解CSS3开启硬件加速的使用和坑
2017/08/21 HTML / CSS
销售所有的狗狗产品:Dog.com
2016/10/13 全球购物
JSF面试题:如何管量web层中的Bean,用什么标签。如何通过jsp页面与Bean绑定在一起进行处理?
2012/10/05 面试题
JavaScript实现前端网页版倒计时
2021/03/24 Javascript
优秀幼教自荐信
2014/02/03 职场文书
商超业务员岗位职责
2014/03/12 职场文书
写求职信要注意什么问题
2014/04/12 职场文书
《果园机器人》教学反思
2014/04/13 职场文书
2014旅游局领导班子四风问题对照检查材料思想汇报
2014/09/19 职场文书
离职证明范本(5篇)
2014/09/19 职场文书
四川省传达学习贯彻党的群众路线教育实践活动总结大会精神新闻稿
2014/10/26 职场文书
2015年基建工作总结范文
2015/05/23 职场文书
遇事可以测出您的见识与格局
2019/09/16 职场文书
八年级作文之友情
2019/11/25 职场文书
在ubuntu下安装go开发环境的全过程
2022/08/05 Golang