emoji.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555
  1. <!-- qq表情 -->
  2. <template>
  3. <div class="common_chat_emoji-wrapper common_chat_emoji-wrapper-global" style="position: relative;z-index: 99999">
  4. <a href="javascript:void(0)" @click="toggleFaceHidden">
  5. <slot name="icon">
  6. <i class="iconfont fa fa-smile-o float-left"></i>
  7. </slot>
  8. </a>
  9. <div class="list-wrapper" v-show="!faceHidden">
  10. <div class="list-inner" @click="selectFace">
  11. <a v-for="(item, index) in qqemojiList" :key="index" class="item qqemoji" :text="[item]" :class="'qqemoji'+index"></a>
  12. </div>
  13. </div>
  14. <input type="text" id="imLog_qqemoji_txt" @blur="hideFaceWrapper" style="width:0px;height:0px;border: 0px;outline: 0;" />
  15. </div>
  16. </template>
  17. <script>
  18. export default {
  19. data() {
  20. return {
  21. qqemojiList: ['微笑', '撇嘴', '色', '发呆', '得意', '流泪', '害羞', '闭嘴', '睡', '大哭', '尴尬', '发怒', '调皮', '呲牙', '惊讶', '难过', '酷', '冷汗', '抓狂', '吐', '偷笑', '愉快', '白眼', '傲慢', '饥饿', '困', '惊恐', '流汗', '憨笑', '悠闲', '奋斗', '咒骂', '疑问', '嘘', '晕', '疯了', '衰', '骷髅', '敲打', '再见', '擦汗', '抠鼻', '鼓掌', '糗大了', '坏笑', '左哼哼', '右哼哼', '哈欠', '鄙视', '委屈', '快哭了', '阴险', '亲亲', '吓', '可怜', '菜刀', '西瓜', '啤酒', '篮球', '乒乓', '咖啡', '饭', '猪头', '玫瑰', '凋谢', '嘴唇', '爱心', '心碎', '蛋糕', '闪电', '炸弹', '刀', '足球', '瓢虫', '便便', '月亮', '太阳', '礼物', '拥抱', '强', '弱', '握手', '胜利', '抱拳', '勾引', '拳头', '差劲', '爱你', 'NO', 'OK', '爱情', '飞吻', '跳跳', '发抖', '怄火', '转圈', '磕头', '回头', '跳绳', '投降', '激动', '乱舞', '献吻', '左太极', '右太极'],
  22. faceHidden: true
  23. };
  24. },
  25. methods: {
  26. /**
  27. * 切换表情界面的显示
  28. */
  29. toggleFaceHidden: function() {
  30. this.$data.faceHidden = !this.$data.faceHidden;
  31. if (!this.$data.faceHidden) {
  32. document.getElementById('imLog_qqemoji_txt').focus();
  33. }
  34. },
  35. /**
  36. * 关闭表情窗口
  37. */
  38. hideFaceWrapper: function() {
  39. var self = this;
  40. // 选中face也会隐藏表情窗口,这时判断是否已经隐藏了
  41. setTimeout(function() {
  42. if (!self.$data.faceHidden) {
  43. self.$data.faceHidden = true;
  44. }
  45. }, 200);
  46. },
  47. /**
  48. * 选中face
  49. */
  50. selectFace: function(e) {
  51. var faceName = e.target.getAttribute('text');
  52. if (!faceName) {
  53. return;
  54. }
  55. var imgStr = this.getImgByFaceName(faceName);
  56. this.$emit('select', {
  57. faceName: faceName,
  58. imgStr: imgStr
  59. }); // 事件上传
  60. // 关闭窗口
  61. this.$data.faceHidden = true;
  62. },
  63. /**
  64. * 根据face名称返回一个img图片
  65. * @param {String} faceName face名称
  66. */
  67. getImgByFaceName: function(faceName) {
  68. var imgStr = '<img class="qqemoji small qqemoji@faceIndex" text="@faceName" src="/static/image/im_emoji_spacer.gif"/>';
  69. var faceIndex = 0;
  70. for (var i = 0; i < this.$data.qqemojiList.length; i++) {
  71. if (this.$data.qqemojiList[i] == faceName) {
  72. faceIndex = i;
  73. break;
  74. }
  75. }
  76. imgStr = imgStr.replace(/@faceIndex/g, faceIndex).replace(/@faceName/g, faceName);
  77. return imgStr;
  78. }
  79. },
  80. mounted() {}
  81. };
  82. </script>
  83. <style lang="less">
  84. .common_chat_emoji-wrapper.iconfont {
  85. color: #aaa;
  86. font-size: 20px;
  87. }
  88. .list-wrapper {
  89. height: 210px;
  90. width: 440px;
  91. background-color: #fff;
  92. border: 1px solid #e6e6e6;
  93. padding: 10px;
  94. position: absolute;
  95. top: -240px;
  96. left: 1px;
  97. }
  98. .list-inner {
  99. width: 100%;
  100. height: 100%;
  101. overflow: hidden;
  102. }
  103. .item {
  104. float: left;
  105. border-bottom: 1px solid #e6e6e6;
  106. border-right: 1px solid #e6e6e6;
  107. cursor: pointer;
  108. }
  109. .common_chat_emoji-wrapper-global .qqemoji {
  110. width: 28px;
  111. height: 28px;
  112. font-size: 0;
  113. text-indent: -999em;
  114. /*background: url('../../assets/qqEmoji.png') 0 0 no-repeat;*/
  115. }
  116. .qqemoji.small {
  117. vertical-align: middle;
  118. height: 24px !important;
  119. width: 24px;
  120. transform: scale(0.82);
  121. margin-top: -5px;
  122. margin-left: -3px;
  123. }
  124. .qqemoji.qqemoji0 {
  125. background-position: 0 0;
  126. }
  127. .qqemoji.qqemoji1 {
  128. background-position: -29px 0;
  129. }
  130. .qqemoji.qqemoji2 {
  131. background-position: -58px 0;
  132. }
  133. .qqemoji.qqemoji3 {
  134. background-position: -87px 0;
  135. }
  136. .qqemoji.qqemoji4 {
  137. background-position: -116px 0;
  138. }
  139. .qqemoji.qqemoji5 {
  140. background-position: -145px 0;
  141. }
  142. .qqemoji.qqemoji6 {
  143. background-position: -174px 0;
  144. }
  145. .qqemoji.qqemoji7 {
  146. background-position: -203px 0;
  147. }
  148. .qqemoji.qqemoji8 {
  149. background-position: -232px 0;
  150. }
  151. .qqemoji.qqemoji9 {
  152. background-position: -261px 0;
  153. }
  154. .qqemoji.qqemoji10 {
  155. background-position: -290px 0;
  156. }
  157. .qqemoji.qqemoji11 {
  158. background-position: -319px 0;
  159. }
  160. .qqemoji.qqemoji12 {
  161. background-position: -348px 0;
  162. }
  163. .qqemoji.qqemoji13 {
  164. background-position: -377px 0;
  165. }
  166. .qqemoji.qqemoji14 {
  167. background-position: -406px 0;
  168. }
  169. .qqemoji.qqemoji15 {
  170. background-position: 0 -29px;
  171. }
  172. .qqemoji.qqemoji16 {
  173. background-position: -29px -29px;
  174. }
  175. .qqemoji.qqemoji17 {
  176. background-position: -58px -29px;
  177. }
  178. .qqemoji.qqemoji18 {
  179. background-position: -87px -29px;
  180. }
  181. .qqemoji.qqemoji19 {
  182. background-position: -116px -29px;
  183. }
  184. .qqemoji.qqemoji20 {
  185. background-position: -145px -29px;
  186. }
  187. .qqemoji.qqemoji21 {
  188. background-position: -174px -29px;
  189. }
  190. .qqemoji.qqemoji22 {
  191. background-position: -203px -29px;
  192. }
  193. .qqemoji.qqemoji23 {
  194. background-position: -232px -29px;
  195. }
  196. .qqemoji.qqemoji24 {
  197. background-position: -261px -29px;
  198. }
  199. .qqemoji.qqemoji25 {
  200. background-position: -290px -29px;
  201. }
  202. .qqemoji.qqemoji26 {
  203. background-position: -319px -29px;
  204. }
  205. .qqemoji.qqemoji27 {
  206. background-position: -348px -29px;
  207. }
  208. .qqemoji.qqemoji28 {
  209. background-position: -377px -29px;
  210. }
  211. .qqemoji.qqemoji29 {
  212. background-position: -406px -29px;
  213. }
  214. .qqemoji.qqemoji30 {
  215. background-position: 0 -58px;
  216. }
  217. .qqemoji.qqemoji31 {
  218. background-position: -29px -58px;
  219. }
  220. .qqemoji.qqemoji32 {
  221. background-position: -58px -58px;
  222. }
  223. .qqemoji.qqemoji33 {
  224. background-position: -87px -58px;
  225. }
  226. .qqemoji.qqemoji34 {
  227. background-position: -116px -58px;
  228. }
  229. .qqemoji.qqemoji35 {
  230. background-position: -145px -58px;
  231. }
  232. .qqemoji.qqemoji36 {
  233. background-position: -174px -58px;
  234. }
  235. .qqemoji.qqemoji37 {
  236. background-position: -203px -58px;
  237. }
  238. .qqemoji.qqemoji38 {
  239. background-position: -232px -58px;
  240. }
  241. .qqemoji.qqemoji39 {
  242. background-position: -261px -58px;
  243. }
  244. .qqemoji.qqemoji40 {
  245. background-position: -290px -58px;
  246. }
  247. .qqemoji.qqemoji41 {
  248. background-position: -319px -58px;
  249. }
  250. .qqemoji.qqemoji42 {
  251. background-position: -348px -58px;
  252. }
  253. .qqemoji.qqemoji43 {
  254. background-position: -377px -58px;
  255. }
  256. .qqemoji.qqemoji44 {
  257. background-position: -406px -58px;
  258. }
  259. .qqemoji.qqemoji45 {
  260. background-position: 0 -87px;
  261. }
  262. .qqemoji.qqemoji46 {
  263. background-position: -29px -87px;
  264. }
  265. .qqemoji.qqemoji47 {
  266. background-position: -58px -87px;
  267. }
  268. .qqemoji.qqemoji48 {
  269. background-position: -87px -87px;
  270. }
  271. .qqemoji.qqemoji49 {
  272. background-position: -116px -87px;
  273. }
  274. .qqemoji.qqemoji50 {
  275. background-position: -145px -87px;
  276. }
  277. .qqemoji.qqemoji51 {
  278. background-position: -174px -87px;
  279. }
  280. .qqemoji.qqemoji52 {
  281. background-position: -203px -87px;
  282. }
  283. .qqemoji.qqemoji53 {
  284. background-position: -232px -87px;
  285. }
  286. .qqemoji.qqemoji54 {
  287. background-position: -261px -87px;
  288. }
  289. .qqemoji.qqemoji55 {
  290. background-position: -290px -87px;
  291. }
  292. .qqemoji.qqemoji56 {
  293. background-position: -319px -87px;
  294. }
  295. .qqemoji.qqemoji57 {
  296. background-position: -348px -87px;
  297. }
  298. .qqemoji.qqemoji58 {
  299. background-position: -377px -87px;
  300. }
  301. .qqemoji.qqemoji59 {
  302. background-position: -406px -87px;
  303. }
  304. .qqemoji.qqemoji60 {
  305. background-position: 0 -116px;
  306. }
  307. .qqemoji.qqemoji61 {
  308. background-position: -29px -116px;
  309. }
  310. .qqemoji.qqemoji62 {
  311. background-position: -58px -116px;
  312. }
  313. .qqemoji.qqemoji63 {
  314. background-position: -87px -116px;
  315. }
  316. .qqemoji.qqemoji64 {
  317. background-position: -116px -116px;
  318. }
  319. .qqemoji.qqemoji65 {
  320. background-position: -145px -116px;
  321. }
  322. .qqemoji.qqemoji66 {
  323. background-position: -174px -116px;
  324. }
  325. .qqemoji.qqemoji67 {
  326. background-position: -203px -116px;
  327. }
  328. .qqemoji.qqemoji68 {
  329. background-position: -232px -116px;
  330. }
  331. .qqemoji.qqemoji69 {
  332. background-position: -261px -116px;
  333. }
  334. .qqemoji.qqemoji70 {
  335. background-position: -290px -116px;
  336. }
  337. .qqemoji.qqemoji71 {
  338. background-position: -319px -116px;
  339. }
  340. .qqemoji.qqemoji72 {
  341. background-position: -348px -116px;
  342. }
  343. .qqemoji.qqemoji73 {
  344. background-position: -377px -116px;
  345. }
  346. .qqemoji.qqemoji74 {
  347. background-position: -406px -116px;
  348. }
  349. .qqemoji.qqemoji75 {
  350. background-position: 0 -145px;
  351. }
  352. .qqemoji.qqemoji76 {
  353. background-position: -29px -145px;
  354. }
  355. .qqemoji.qqemoji77 {
  356. background-position: -58px -145px;
  357. }
  358. .qqemoji.qqemoji78 {
  359. background-position: -87px -145px;
  360. }
  361. .qqemoji.qqemoji79 {
  362. background-position: -116px -145px;
  363. }
  364. .qqemoji.qqemoji80 {
  365. background-position: -145px -145px;
  366. }
  367. .qqemoji.qqemoji81 {
  368. background-position: -174px -145px;
  369. }
  370. .qqemoji.qqemoji82 {
  371. background-position: -203px -145px;
  372. }
  373. .qqemoji.qqemoji83 {
  374. background-position: -232px -145px;
  375. }
  376. .qqemoji.qqemoji84 {
  377. background-position: -261px -145px;
  378. }
  379. .qqemoji.qqemoji85 {
  380. background-position: -290px -145px;
  381. }
  382. .qqemoji.qqemoji86 {
  383. background-position: -319px -145px;
  384. }
  385. .qqemoji.qqemoji87 {
  386. background-position: -348px -145px;
  387. }
  388. .qqemoji.qqemoji88 {
  389. background-position: -377px -145px;
  390. }
  391. .qqemoji.qqemoji89 {
  392. background-position: -406px -145px;
  393. }
  394. .qqemoji.qqemoji90 {
  395. background-position: 0 -174px;
  396. }
  397. .qqemoji.qqemoji91 {
  398. background-position: -29px -174px;
  399. }
  400. .qqemoji.qqemoji92 {
  401. background-position: -58px -174px;
  402. }
  403. .qqemoji.qqemoji93 {
  404. background-position: -87px -174px;
  405. }
  406. .qqemoji.qqemoji94 {
  407. background-position: -116px -174px;
  408. }
  409. .qqemoji.qqemoji95 {
  410. background-position: -145px -174px;
  411. }
  412. .qqemoji.qqemoji96 {
  413. background-position: -174px -174px;
  414. }
  415. .qqemoji.qqemoji97 {
  416. background-position: -203px -174px;
  417. }
  418. .qqemoji.qqemoji98 {
  419. background-position: -232px -174px;
  420. }
  421. .qqemoji.qqemoji99 {
  422. background-position: -261px -174px;
  423. }
  424. .qqemoji.qqemoji100 {
  425. background-position: -290px -174px;
  426. }
  427. .qqemoji.qqemoji101 {
  428. background-position: -319px -174px;
  429. }
  430. .qqemoji.qqemoji102 {
  431. background-position: -348px -174px;
  432. }
  433. .qqemoji.qqemoji103 {
  434. background-position: -377px -174px;
  435. }
  436. .qqemoji.qqemoji104 {
  437. background-position: -406px -174px;
  438. }
  439. </style>