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 相关文章推荐
JS获取URL中参数值(QueryString)的4种方法分享
Apr 12 Javascript
java和javascript获取word文档的书签位置对比
Jun 19 Javascript
jQuery焦点图轮播插件KinSlideshow用法分析
Jun 08 Javascript
Bootstrap基本组件学习笔记之导航(10)
Dec 07 Javascript
js实现用户输入的小写字母自动转大写字母的方法
Jan 21 Javascript
jquery仿苹果的时间/日期选择效果
Mar 08 Javascript
Vue.js常用指令的使用小结
Jun 23 Javascript
JS实现搜索关键词的智能提示功能
Jul 07 Javascript
Angular将填入表单的数据渲染到表格的方法
Sep 22 Javascript
基于jquery实现五星好评
Nov 18 jQuery
Vue 表情包输入组件的实现代码
Jan 21 Javascript
Angular7创建项目、组件、服务以及服务的使用
Feb 19 Javascript
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面试题(对属性或方法的访问控制)
2012/09/13 PHP
PHP定时任务获取微信access_token的方法
2016/10/10 PHP
详解Yii2.0使用AR联表查询实例
2017/06/16 PHP
Yii 2中的load()和save()示例详解
2017/08/03 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
Aster vs Newbee BO5 第三场2.19
2021/03/10 DOTA
实现点击列表弹出列表索引的两种方式
2013/03/08 Javascript
javascript中对Attr(dom中属性)的操作示例讲解
2013/12/02 Javascript
jquery中$.post()方法的简单实例
2014/02/04 Javascript
Javascript排序算法之计数排序的实例
2014/04/05 Javascript
JavaScript数组常用方法
2015/03/02 Javascript
JavaScript动态添加列的方法
2015/03/25 Javascript
js+css简单实现网页换肤效果
2015/12/29 Javascript
AngularJS基础 ng-model 指令详解及示例代码
2016/08/02 Javascript
Vue.Js中的$watch()方法总结
2017/03/23 Javascript
Angular中的$watch方法详解
2017/09/18 Javascript
微信小程序实现给嵌套template模板传递数据的方式总结
2017/12/18 Javascript
Vue filter介绍及详细使用
2018/04/04 Javascript
基于Vue+element-ui 的Table二次封装的实现
2018/07/20 Javascript
nodejs aes 加解密实例
2018/10/10 NodeJs
Vue入门学习笔记【基本概念、对象、过滤器、指令等】
2019/04/13 Javascript
Swift 3.0在集合类数据结构上的一些新变化总结
2016/07/11 Python
python3爬虫之设计签名小程序
2018/06/19 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
2020/01/18 Python
django 获取字段最大值,最新的记录操作
2020/08/09 Python
Kate Spade美国官网:纽约新兴时尚品牌,以包包闻名于世
2017/11/09 全球购物
美国著名手表网站:Timepiece
2017/11/15 全球购物
英国家电购物网站:Sonic Direct
2019/03/26 全球购物
Coccinelle官网:意大利的著名皮具品牌
2019/05/15 全球购物
Jdbc数据访问技术面试题
2012/03/30 面试题
园林技术个人的自我评价
2014/01/08 职场文书
奶茶店创业计划书
2014/08/14 职场文书
致百米运动员广播稿5篇
2014/10/13 职场文书
党员民主生活会材料
2014/12/15 职场文书
后备干部推荐材料
2014/12/24 职场文书
中考百日冲刺决心书
2015/09/22 职场文书