Vue实现图片与文字混输效果


Posted in Javascript onDecember 04, 2019

本文转自:https://juejin.im/post/5de26d39e51d455da17be1e3

用多了 JQuery ,习惯了使用JQuery的API操作 DOM ,几乎忘记了原生JS对DOM操作,今天在项目中遇到了文字和图片混输的情况,第一个想到的办法是用 textarea 实现,结果发现实现不了图片输入,然后想着找个富文本编辑器的插件实现,深思熟虑之后,我的需求好像也没那么复杂,不至于引用个插件,看了 掘金 的发布沸点功能,然后就模仿了其作法,于是就有了这篇文章的分享。先给大家展示下最后实现的效果:yum:

Vue实现图片与文字混输效果 

实现思路

  • 利用 div 的 contenteditable 属性,让div可编辑
  • 绑定 ref 属性,用于操作输入框元素
  • 图片点击时,获取图片地址,使用require转换图片地址
  • 创建img标签,赋值转换好的图片地址
  • 从 refs 对象中获取到输入框元素,赋值创建好的img标签

实现过程

声明div可编辑,监听回车键事件,关闭拼写检查,绑定ref方便获取当前元素

<div class="input-panel" ref="msgInputContainer" @keydown.enter.exact="sendMessage($event)"
  contenteditable="true" spellcheck="false"></div>

表情输入框绑定对应的事件

<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,item.info)"
   @mouseleave="emojiConversion($event,'leave',item.src,item.hover,item.info)"
   @click="emojiConversion($event,'click',item.src,item.hover,item.info)">
</div>

实现表情框图片点击事件

emojiConversion: function (event, status, path, hoverPath, info) {
 if (status === "over") {
  event.target.src = require(`../assets/img/emoji/${hoverPath}`);
 } else if (status === "click") {
  console.log(hoverPath);
  // 表情输入
  const imgSrc = require(`../assets/img/emoji/${hoverPath}`);
  const imgTag = document.createElement("img");
  imgTag.src = imgSrc;
  imgTag.alt = info;
  this.$refs.msgInputContainer.appendChild(imgTag);
 } else {
  event.target.src = require(`../assets/img/emoji/${path}`);
 }
}

总结

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

Javascript 相关文章推荐
js监听表单value的修改同步问题,跨浏览器支持
Dec 31 Javascript
jQuery Select(单选) 模拟插件 V1.3.62 改进版
Jul 17 Javascript
jquery图片轮播插件仿支付宝2013版全屏图片幻灯片
Apr 03 Javascript
javascript动态判断html元素并执行不同的操作
Jun 16 Javascript
jQuery使用$.ajax进行即时验证的方法
Dec 08 Javascript
jQuery基础知识点总结(必看)
May 31 Javascript
JavaScript浮点数及运算精度调整详解
Oct 21 Javascript
微信小程序 空白页重定向解决办法
Jun 27 Javascript
浅谈react前后端同构渲染
Sep 20 Javascript
微信小程序 下拉刷新及上拉加载原理解析
Nov 06 Javascript
在Echarts图中给坐标轴加一个标识线markLine
Jul 20 Javascript
JavaScript中常用的3种弹出提示框(alert、confirm、prompt)
Nov 10 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
JS实现的雪花飘落特效示例
Dec 03 #Javascript
vue中实现高德定位功能
Dec 03 #Javascript
You might like
php session的锁和并发
2016/01/22 PHP
ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
2016/11/12 PHP
PHP strripos函数用法总结
2019/02/11 PHP
汉化英文版的Dreamweaver CS5并自动提示jquery
2010/11/25 Javascript
JavaScript中使用正则匹配多条,且获取每条中的分组数据
2010/11/30 Javascript
nodejs教程之异步I/O
2014/11/21 NodeJs
AngularJS学习笔记之ng-options指令
2015/06/16 Javascript
js微信分享API
2020/10/11 Javascript
浅谈angular懒加载的一些坑
2016/08/20 Javascript
js时间戳和c#时间戳互转方法(推荐)
2017/02/15 Javascript
vue.js实现含搜索的多种复选框(附源码)
2017/03/23 Javascript
JavaScript实现无刷新上传预览图片功能
2017/08/02 Javascript
Node.js爬取豆瓣数据实例分析
2018/03/05 Javascript
Javascript 实现 Excel 导入生成图表功能
2018/10/22 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
ES6知识点整理之函数数组参数的默认值及其解构应用示例
2019/04/17 Javascript
VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析
2019/12/02 Javascript
Python随手笔记之标准类型内建函数
2015/12/02 Python
Python的requests网络编程包使用教程
2016/07/11 Python
好的Python培训机构应该具备哪些条件
2018/05/23 Python
Python使用logging模块实现打印log到指定文件的方法
2018/09/05 Python
python 多线程中子线程和主线程相互通信方法
2018/11/09 Python
Python英文文本分词(无空格)模块wordninja的使用实例
2019/02/20 Python
python调用摄像头拍摄数据集
2019/06/01 Python
python numpy 反转 reverse示例
2019/12/04 Python
Python实现FLV视频拼接功能
2020/01/21 Python
解决使用python print打印函数返回值多一个None的问题
2020/04/09 Python
详解Python设计模式之策略模式
2020/06/15 Python
python 生成器需注意的小问题
2020/09/29 Python
解决python的空格和tab混淆而报错的问题
2021/02/26 Python
华纳兄弟工作室的官方授权商店:WB Shop
2018/11/30 全球购物
.NET常见笔试题集
2012/12/01 面试题
家具促销活动方案
2014/02/16 职场文书
初中生评语大全
2014/04/24 职场文书
利用Python将list列表写入文件并读取的方法汇总
2022/03/25 Python
从零开始在Centos7上部署SpringBoot项目
2022/04/07 Servers