common_chat_emoji.vue 12 KB

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