Faces.vue 1003 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <template>
  2. <view>
  3. <view class="faces">
  4. <view class="face" v-for="(item, index) in faceList" :key="index">
  5. <image class="image" :src="faceMap.get(item)" :alt="item" :title="item" @tap="insertFace(item)" />
  6. </view>
  7. </view>
  8. <div class="clear"></div>
  9. </view>
  10. </template>
  11. <script setup lang="ts">
  12. import FaceUtils from "@/utils/FaceUtils";
  13. import {ref} from "vue";
  14. const faceList = ref(FaceUtils.alt);
  15. const faceMap = ref(FaceUtils.faces());
  16. const emit = defineEmits(["insertFace"]);
  17. const insertFace = (item: string) => {
  18. emit("insertFace", item);
  19. };
  20. </script>
  21. <style lang="scss" scoped>
  22. .faces {
  23. width: 100%;
  24. list-style: none;
  25. background-color: #ffffff;
  26. border: 1px solid #f0f5ff;
  27. display: grid;
  28. grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
  29. &>.face {
  30. display: flex;
  31. padding: 4px;
  32. float: left;
  33. cursor: pointer;
  34. height: 37px;
  35. width: 37px;
  36. justify-content: center;
  37. .image {
  38. width: 100%;
  39. height: 100%;
  40. }
  41. }
  42. }
  43. </style>