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 相关文章推荐
jQuery右键菜单contextMenu使用实例
Sep 28 Javascript
Extjs4.0 ComboBox如何实现三级联动
May 11 Javascript
脚本div实现拖放功能(两种)
Feb 13 Javascript
浅谈JS中的常用选择器及属性、方法的调用
Jul 28 Javascript
浅谈react-router HashRouter和BrowserRouter的使用
Dec 29 Javascript
js中时间格式化的几种方法
Jul 22 Javascript
使用layui 渲染table数据表格的实例代码
Aug 19 Javascript
详解vue数组遍历方法forEach和map的原理解析和实际应用
Nov 15 Javascript
详解为生产环境编译Angular2应用的方法
Dec 10 Javascript
mockjs+vue页面直接展示数据的方法
Dec 19 Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
Jun 04 Javascript
vue微信分享插件使用方法详解
Feb 18 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
纯真IP数据库的应用 IP地址转化成十进制
2009/06/14 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
2014/06/05 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
2014/10/30 PHP
PHP文件读取功能的应用实例
2015/05/08 PHP
PHP的mysqli_thread_id()函数讲解
2019/01/24 PHP
PHP设计模式之PHP迭代器模式讲解
2019/03/22 PHP
PHP使用观察者模式处理异常信息的方法详解
2019/09/24 PHP
js跳转页面方法总结
2014/01/29 Javascript
JavaScript进阶练习及简单实例分析
2016/06/03 Javascript
JavaScript必知必会(三) String .的方法来自何方
2016/06/08 Javascript
TypeScript学习之强制类型的转换
2016/12/27 Javascript
总结JavaScript在IE9之前版本中内存泄露问题
2018/04/28 Javascript
JavaScript作用域链实例详解
2019/01/21 Javascript
详解Vue源码学习之双向绑定
2019/04/10 Javascript
使用kbone解决Vue项目同时支持小程序问题
2019/11/08 Javascript
[02:09]EHOME夺得首届辉夜杯冠军—现场颁奖仪式
2015/12/28 DOTA
Python中对象迭代与反迭代的技巧总结
2016/09/17 Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
2017/01/20 Python
Python中Numpy包的安装与使用方法简明教程
2018/07/03 Python
python中update的基本使用方法详解
2019/07/17 Python
浅谈Python中函数的定义及其调用方法
2019/07/19 Python
PyCharm GUI界面开发和exe文件生成的实现
2020/03/04 Python
python实点云分割k-means(sklearn)详解
2020/05/28 Python
Python实现Canny及Hough算法代码实例解析
2020/08/06 Python
浅析python中的del用法
2020/09/02 Python
python 实现的IP 存活扫描脚本
2020/12/10 Python
美国最大的在线寄售和旧货店:Swap.com
2018/08/27 全球购物
LODI女鞋在线商店:阿利坎特的鞋类品牌
2019/02/15 全球购物
本科毕业生求职自荐信
2014/02/03 职场文书
保险公司年会主持词
2014/03/22 职场文书
《长城和运河》教学反思
2014/04/14 职场文书
安全教育演讲稿
2014/05/09 职场文书
党员对照检查剖析材料
2014/10/13 职场文书
2015学生会文艺部工作总结
2015/04/03 职场文书
浅谈Python类的单继承相关知识
2021/05/12 Python
Python爬虫中urllib3与urllib的区别是什么
2021/07/21 Python