vue 下拉框展示 svg 圖標(biāo)

WechatIMG1899.jpg
<template>
  <div class="app-container">
    <div class="icons">
      <div
        v-for="(item, index) in icons"
        :key="index"
        class="svgItem"
        @click="svgClick(item)"
      >
        <svg-icon
          class="icon"
          :icon-class="item"
        />
        <p style="font-size:10px;">{{ item }}</p>

      </div>
    </div>
  </div>
</template>

<script>
export default {
  name: 'SvgIconAll',
  props: {
    svgName: {
      type: String,
      default: null
    }
  },
  computed: {
    icons() {
      try {
        const data = require.context('@/icons/svg', false, /\.svg$/).keys()
        for (const i in data) {
          data[i] = data[i].replace(/\.\//g, '').replace(/\.svg/g, '')
        }
        return data
      } catch (e) {
        return []
      }
    }
  },
  methods: {
    svgClick(val) {
      this.svgName = val
      this.$emit('svgNameClick', this.svgName)
    }
  }
}
</script>

<style lang="less">
.app-container{
  width: 450px;
  height: 300px;
  padding: 0;
  margin:0;
  overflow: auto;
  .icons{
    width: 450;
    overflow: auto;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-wrap: wrap;
    .svgItem{
      width: 100px;
      height: 80px;
      margin-left:10px;
      display: flex;
      float: left;
      justify-content: center;
      align-items: center;
      flex-direction: column;
      .icon{
        width: 20px;
        height: 20px;
      }
    }
  }
}

</style>

// 其他頁面引入使用
import SvgIconAll from '@/components/svg'

<SvgIconAll @svgNameClick="getSvgName" />

components: {
    SvgIconAll
},
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容