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 ajax的success回调函数中实现按钮置灰倒计时
Nov 19 Javascript
多引号嵌套的变量命名的问题
May 09 Javascript
jquery mobile开发常见问题分析
Jan 21 Javascript
省市区三级联动jquery实现代码
Apr 15 Javascript
微信小程序 wxapp内容组件 progress详细介绍
Oct 31 Javascript
支持移动端原生js轮播图
Feb 16 Javascript
JavaScript模拟文件拖选框样式v1.0的实例
Aug 04 Javascript
微信小程序实现鼠标拖动效果示例
Dec 01 Javascript
ng-alain表单使用方式详解
Jul 10 Javascript
利用Vue实现一个markdown编辑器实例代码
May 19 Javascript
Vue动态生成表格的行和列
Jul 18 Javascript
jquery实现鼠标悬浮弹出气泡提示框
Dec 23 jQuery
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新手上路(三)
2006/10/09 PHP
解析在PHP中使用全局变量的几种方法
2013/06/24 PHP
yii框架使用分页的方法分析
2019/07/25 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
jQuery(1.3.2) 7行代码搞定跟随屏幕滚动的层
2009/05/21 Javascript
javascript 面向对象编程 万物皆对象
2009/09/17 Javascript
基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
2010/12/11 Javascript
Javascript中自动切换焦点实现代码
2012/12/15 Javascript
基于jquery插件实现常见的幻灯片效果
2013/11/01 Javascript
jQuery.extend()、jQuery.fn.extend()扩展方法示例详解
2014/05/08 Javascript
js添加select下默认的option的value和text的方法
2014/10/19 Javascript
jQuery封装的tab选项卡插件分享
2015/06/16 Javascript
JS基础随笔(菜鸟必看篇)
2016/07/13 Javascript
angular ng-repeat数组中的数组实例
2017/02/18 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(1)
2017/02/20 Javascript
php简单数据库操作类的封装
2017/06/08 Javascript
layui实现数据表格隐藏列的示例
2019/10/25 Javascript
JS快速实现简单计算器
2020/04/08 Javascript
浅谈鸿蒙 JavaScript GUI 技术栈
2020/09/17 Javascript
动态创建类实例代码
2009/10/07 Python
使用Python的Zato发送AMQP消息的教程
2015/04/16 Python
python实现查找两个字符串中相同字符并输出的方法
2015/07/11 Python
python实现协同过滤推荐算法完整代码示例
2017/12/15 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
2020/03/05 Python
pytorch 中的重要模块化接口nn.Module的使用
2020/04/02 Python
python实现在内存中读写str和二进制数据代码
2020/04/24 Python
通俗讲解python 装饰器
2020/09/07 Python
数据库专业英语
2012/11/30 面试题
优纳科技软件测试面试题
2012/05/15 面试题
2014中学教师节广播稿
2014/09/10 职场文书
公务员学习习总书记“三严三实”思想汇报
2014/09/19 职场文书
机关班子查摆问题及整改措施
2014/10/28 职场文书
可怜妈妈观后感
2015/06/09 职场文书
golang 语言中错误处理机制
2021/08/30 Golang
利用JuiceFS使MySQL 备份验证性能提升 10 倍
2022/03/17 MySQL
js 实现Material UI点击涟漪效果示例
2022/09/23 Javascript