Vue表情输入组件 微信face表情组件


Posted in Javascript onFebruary 11, 2019

VUE表情包输入组件,先来张成品图看看。

Vue表情输入组件 微信face表情组件

年底了没事干,把以前做过的项目中的组件拿出来再复习一下, 先说说思路吧。

注意:

1. 项目是用vue-cli3.0搭建起来的项目, 参考cli3.0官网地址

2.样式是用scss需要安装依赖: npm install node-sass sass-loader -D

思路: 页面内容总体分为三块区域(内容区,表情区,输入区),引入JSON文件表情库渲染到页面,给每个表情绑定点击事件并传递下标,将用户点击过的表情存放到一个数组中,赋值给input标签的value中让其显示先输入框内,然后给 确定 按钮绑定点击事件,用户点击确定按钮将input中的value值赋值给内容区(内容去也要创建一个数组)让其渲染到你要的位置上,这样就完成了表情的渲染和发送。

html区域

<template>
 <div class="home">
 <!-- 页面内容区域 -->
 <div :class="faceShow ? 'contentBox contFaceShow' : 'contentBox'">
  <ul>
  <li v-for="(item,index) in content" :key="index">
   <span>{{item}}</span>
  </li>
  </ul>
 </div>
 <!-- 输入框区域 -->
 <div :class="faceShow ?'box boxFaceShow' : 'box'" ref="heightFace">
  <input type="text" v-model="textConent" class="inputContent">
  <button class="referBut" @click="referContent">提交</button>
  <button class="faceBut" @click="faceContent">表情</button>
 </div>
 <!-- 表情区域 -->
 <div class="browBox" v-if="faceShow">
  <ul>
  <li v-for="(item,index) in faceList" :key="index" @click="getBrow(index)">{{item}}</li>
  </ul>
 </div>
 </div>
</template>

JS区域

// 导入JSON格式的表情库
const appData = require("@/assets/emojis.json");
export default {
 name: "home",
 data() {
 return {
  textConent: "",
  faceList: [],
  faceShow: false,
  getBrowString: "",
  content: []
 };
 },
 methods: {
 // 表情
 faceContent() {
  this.faceShow = !this.faceShow;
  if (this.faceShow == true) {
  for (let i in appData) {
   this.faceList.push(appData[i].char);
  }
  } else {
  this.faceList = [];
  }
 },
 // 获取用户点击之后的标签 ,存放到输入框内
 getBrow(index) {
  for (let i in this.faceList) {
  if (index == i) {
   this.getBrowString = this.faceList[index];
   this.textConent += this.getBrowString;
  }
  }
 },
 // 将input的内容渲染到页面上
 referContent() {
  if (this.textConent == "") return alert("请输入内容");
  // 存入
  this.content.push(this.textConent);
  // 清空input数据
  this.textConent = "";
  // 关闭表情列表
  this.faceShow = false;
 }
 },
};

css区域

<style lang="scss" scoped>
body,
html,
head,
.home {
 width: 100%;
 height: 100%;
 padding: 0px;
 position: relative;
 margin: 0px;
}
.home {
 width: 100%;
 height: 100%;
 .contentBox {
 width: 100%;
 display: flex;
 flex-direction: column;
 justify-content: flex-end;
 text-align: right;
 position: absolute;
 bottom: 60px;
 li {
  list-style: none;
  padding: 4px 10px;
  margin-bottom: 20px;
  span {
  background: #e6e6e6;
  border-radius: 5px;
  padding: 5px;
  }
 }
 }
 .contFaceShow {
 position: absolute;
 bottom: 240px;
 }
 .box {
 width: 100%;
 height: 40px;
 margin: auto;
 position: absolute;
 bottom: 0px;
 .inputContent {
  position: absolute;
  bottom: 0%;
  left: 0%;
  width: 74%;
  height: 100%;
  border: 1px solid #ccc;
 }
 .referBut {
  position: absolute;
  bottom: 0%;
  right: 2%;
  height: 100%;
  width: 10%;
  border-radius: 5px;
  background: #aaaaff;
  color: #fff;
 }
 .faceBut {
  position: absolute;
  bottom: 0;
  right: 13%;
  height: 100%;
  width: 10%;
  border-radius: 5px;
  background: #aaaaff;
  color: #fff;
 }
 }
 .boxFaceShow {
 position: absolute;
 bottom: 200px !important;
 }
 .browBox {
 width: 100%;
 height: 200px;
 background: #e6e6e6;
 position: absolute;
 bottom: 0px;
 overflow: scroll;
 ul {
  display: flex;
  flex-wrap: wrap;
  padding: 10px;
  li {
  width: 14%;
  font-size: 26px;
  list-style: none;
  text-align: center;
  }
 }
 }
}
</style>


<style lang="scss">
body,
html,
head {
 width: 100%;
 height: 100%;
 position: relative;
}
#app {
 height: 100%;
}
* {
 padding: 0px;
 margin: 0px;
}
</style>

代码在我的github上:github地址

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
document.getElementBy(&quot;id&quot;)与$(&quot;#id&quot;)有什么区别
Sep 22 Javascript
JS、DOM和JQuery之间的关系示例分析
Apr 09 Javascript
jQuery 实现侧边浮动导航菜单效果
Dec 26 Javascript
快速学习jQuery插件 Cookie插件使用方法
Dec 01 Javascript
jQuery手动点击实现图片轮播特效
Apr 20 Javascript
JavaScript统计字符串中每个字符出现次数完整实例
Jan 28 Javascript
详解使用create-react-app快速构建React开发环境
May 16 Javascript
npm 更改默认全局路径以及国内镜像的方法
May 16 Javascript
解决mui框架中switch开关通过js控制开或者关状态时小圆点不动的问题
Sep 03 Javascript
js blob类型url的视频下载问题的解决
Nov 29 Javascript
JavaScript写个贪吃蛇小游戏(超详细)
Mar 17 Javascript
vue 使用class创建和清除水印的示例代码
Dec 25 Vue.js
js屏蔽退格键(backspace或者叫后退键与F5)
Feb 10 #Javascript
Vue动画事件详解及过渡动画实例
Feb 09 #Javascript
JavaScript ES6常用基础知识总结
Feb 09 #Javascript
Vue组件的使用及个人理解与介绍
Feb 09 #Javascript
Vue自定义指令写法与个人理解
Feb 09 #Javascript
Vue指令指令大全
Feb 09 #Javascript
vue基于两个计算属性实现选中和全选功能示例
Feb 08 #Javascript
You might like
PHP文件上传实例详解!!!
2007/01/02 PHP
php实现网站插件机制的方法
2009/11/10 PHP
PHP获取指定日期是星期几的实现方法
2016/11/30 PHP
PHP基于Redis消息队列实现发布微博的方法
2017/05/03 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
PHP实现对图片的反色处理功能【测试可用】
2018/02/01 PHP
JQuery 动态扩展对象之另类视角
2010/05/25 Javascript
Javascript中判断变量是数组还是对象(array还是object)
2013/08/14 Javascript
动态创建按钮的JavaScript代码
2016/01/29 Javascript
jQuery插件uploadify实现ajax效果的图片上传
2016/06/18 Javascript
jQuery Easyui datagrid行内实现【添加】、【编辑】、【上移】、【下移】
2016/12/19 Javascript
Bootstrap常用组件学习(整理)
2017/03/24 Javascript
Vue项目中设置背景图片方法
2018/02/21 Javascript
Vue实现动态创建和删除数据的方法
2018/03/17 Javascript
Vue 页面切换效果之 BubbleTransition(推荐)
2018/04/08 Javascript
浅析Vue.js 中的条件渲染指令
2018/11/19 Javascript
微信小程序 image组件遇到的问题
2019/05/28 Javascript
微信小程序如何实现在线客服功能
2019/10/16 Javascript
vue 解决uglifyjs-webpack-plugin打包出现报错的问题
2020/08/04 Javascript
vue中路由跳转不计入history的操作
2020/09/21 Javascript
[14:25]教你分分钟做大人:主宰(HEROS)
2014/12/08 DOTA
Python中functools模块函数解析
2017/03/12 Python
python嵌套字典比较值与取值的实现示例
2017/11/03 Python
python向已存在的excel中新增表,不覆盖原数据的实例
2018/05/02 Python
python 修改本地网络配置的方法
2019/08/14 Python
python tkinter canvas使用实例
2019/11/04 Python
基于python实现语音录入识别代码实例
2020/01/17 Python
Python 读取有公式cell的结果内容实例方法
2020/02/17 Python
Python远程方法调用实现过程解析
2020/07/28 Python
html5的localstorage详解
2017/05/09 HTML / CSS
日语翻译个人求职的自我评价
2013/10/14 职场文书
主题酒店策划书
2014/01/28 职场文书
幼儿园运动会加油词
2014/02/14 职场文书
小学优秀班干部事迹材料
2014/05/25 职场文书
幼儿学前班评语
2014/12/29 职场文书
SQL Server数据库的三种创建方法汇总
2023/05/08 MySQL