index.vue 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <template>
  2. <div class="icons-container">
  3. <el-tabs type="border-card">
  4. <el-tab-pane label="Icons">
  5. <div class="grid">
  6. <div v-for="item of svgIcons" :key="item" @click="handleClick(item)">
  7. <el-tooltip placement="top">
  8. <div slot="content">
  9. {{ item }}
  10. </div>
  11. <div class="icon-item">
  12. <svg-icon :icon-class="item" class-name="disabled" />
  13. <span>{{ item }}</span>
  14. </div>
  15. </el-tooltip>
  16. </div>
  17. </div>
  18. </el-tab-pane>
  19. <el-tab-pane label="Element-UI Icons">
  20. <div class="grid">
  21. <div v-for="item of elementIcons" :key="item" @click="handleClick(`el-icon-${item}`)">
  22. <el-tooltip placement="top">
  23. <div slot="content">
  24. {{ item }}
  25. </div>
  26. <div class="icon-item">
  27. <i :class="'el-icon-' + item" />
  28. <span>{{ item }}</span>
  29. </div>
  30. </el-tooltip>
  31. </div>
  32. </div>
  33. </el-tab-pane>
  34. <el-tab-pane label="更多 Icons">
  35. <div class="grid">
  36. <div v-for="item of myIcons" :key="item" @click="handleClick(`iconfont ${item}`)">
  37. <el-tooltip placement="top">
  38. <div slot="content">
  39. {{ item }}
  40. </div>
  41. <div class="icon-item">
  42. <i :class="'iconfont ' + item" />
  43. <span>{{ item }}</span>
  44. </div>
  45. </el-tooltip>
  46. </div>
  47. </div>
  48. </el-tab-pane>
  49. </el-tabs>
  50. </div>
  51. </template>
  52. <script>
  53. import svgIcons from './svg-icons'
  54. import elementIcons from './element-icons'
  55. import myIcons from './icons'
  56. export default {
  57. name: 'Icons',
  58. data() {
  59. return {
  60. svgIcons,
  61. elementIcons,
  62. myIcons
  63. }
  64. },
  65. methods: {
  66. handleClick(text) {
  67. this.$emit('click', text)
  68. }
  69. }
  70. }
  71. </script>
  72. <style lang="scss" scoped>
  73. .icons-container {
  74. margin: 10px 20px 0;
  75. overflow: hidden;
  76. .el-tab-pane{
  77. max-height: 500px;
  78. overflow-y: auto;
  79. }
  80. .grid {
  81. position: relative;
  82. display: grid;
  83. grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
  84. }
  85. .icon-item {
  86. padding-top: 8px;
  87. margin: 16px;
  88. height: 80px;
  89. text-align: center;
  90. width: 100px;
  91. float: left;
  92. font-size: 28px;
  93. color: #24292e;
  94. cursor: pointer;
  95. &:hover{
  96. background: rgba($color: #000000, $alpha: 0.1);
  97. }
  98. }
  99. span {
  100. display: block;
  101. font-size: 16px;
  102. margin-top: 10px;
  103. }
  104. .disabled {
  105. pointer-events: none;
  106. }
  107. }
  108. </style>