index.vue 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <template>
  2. <div class="icons-container">
  3. <aside>
  4. <a href="https://panjiachen.github.io/vue-element-admin-site/guide/advanced/icon.html" target="_blank">Add and use</a>
  5. </aside>
  6. <el-tabs type="border-card">
  7. <el-tab-pane label="Icons">
  8. <div class="grid">
  9. <div v-for="item of svgIcons" :key="item" @click="handleClipboard(generateIconCode(item),$event)">
  10. <el-tooltip placement="top">
  11. <div slot="content">
  12. {{ generateIconCode(item) }}
  13. </div>
  14. <div class="icon-item">
  15. <svg-icon :icon-class="item" class-name="disabled" />
  16. <span>{{ item }}</span>
  17. </div>
  18. </el-tooltip>
  19. </div>
  20. </div>
  21. </el-tab-pane>
  22. <el-tab-pane label="Element-UI Icons">
  23. <div class="grid">
  24. <div v-for="item of elementIcons" :key="item" @click="handleClipboard(generateElementIconCode(item),$event)">
  25. <el-tooltip placement="top">
  26. <div slot="content">
  27. {{ generateElementIconCode(item) }}
  28. </div>
  29. <div class="icon-item">
  30. <i :class="'el-icon-' + item" />
  31. <span>{{ item }}</span>
  32. </div>
  33. </el-tooltip>
  34. </div>
  35. </div>
  36. </el-tab-pane>
  37. </el-tabs>
  38. </div>
  39. </template>
  40. <script>
  41. import clipboard from '@/utils/clipboard'
  42. import svgIcons from './svg-icons'
  43. import elementIcons from './element-icons'
  44. export default {
  45. name: 'Application',
  46. data() {
  47. return {
  48. svgIcons,
  49. elementIcons
  50. }
  51. },
  52. methods: {
  53. generateIconCode(symbol) {
  54. return `<svg-icon icon-class="${symbol}" />`
  55. },
  56. generateElementIconCode(symbol) {
  57. return `<i class="el-icon-${symbol}" />`
  58. },
  59. handleClipboard(text, event) {
  60. clipboard(text, event)
  61. }
  62. }
  63. }
  64. </script>
  65. <style lang="scss" scoped>
  66. .icons-container {
  67. margin: 10px 20px 0;
  68. overflow: hidden;
  69. .grid {
  70. position: relative;
  71. display: grid;
  72. grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
  73. }
  74. .icon-item {
  75. margin: 20px;
  76. height: 85px;
  77. text-align: center;
  78. width: 100px;
  79. float: left;
  80. font-size: 30px;
  81. color: #24292e;
  82. cursor: pointer;
  83. }
  84. span {
  85. display: block;
  86. font-size: 16px;
  87. margin-top: 10px;
  88. }
  89. .disabled {
  90. pointer-events: none;
  91. }
  92. }
  93. </style>