当前位置: 首页 > news >正文

通付盾 建设公司网站杭州软件开发

通付盾 建设公司网站,杭州软件开发,大连建设网联合收费,wordpress网页图片加载文章目录 一、准备工作(在 Vue3 中使用 SVG)二、封装 SVG三、封装图标选择器四、Demo 效果预览: 一、准备工作(在 Vue3 中使用 SVG) 本文参考:https://blog.csdn.net/houtengyang/article/details/1290431…

文章目录

      • 一、准备工作(在 Vue3 中使用 SVG)
      • 二、封装 SVG
      • 三、封装图标选择器
      • 四、Demo

效果预览:
在这里插入图片描述

一、准备工作(在 Vue3 中使用 SVG)

本文参考:https://blog.csdn.net/houtengyang/article/details/129043100

  1. 安装插件

    npm i vite-plugin-svg-icons
    
  2. 配置插件

    1. 修改 vite.config.js

      import {resolve} from 'path'
      import {createSvgIconsPlugin} from 'vite-plugin-svg-icons';export default defineConfig({plugins: [vue(),createSvgIconsPlugin({iconDirs: [resolve(process.cwd(), 'public')], // svg 文件存放位置symbolId: 'icon-[name]', // 指定symbolId格式}),],
      })
      

      注意:我的 svg 存放路径是根目录下的 ./public,多数情况下放在 ./src/assets

    2. 修改 main.js,增加一行代码。

      import 'virtual:svg-icons-register'
      
  3. 使用示例

        <svg aria-hidden="true" style="width: 14px; height: 14px"><use :href="`#icon-${menu.icon}`" /></svg>
    

二、封装 SVG

将上述使用示例封装为组件。

  1. ./src/components 下创建 Icon.vue

    <script setup>
    const props = defineProps({prefix: {type: String, default: 'icon'},name: {type: String, required: true},color: {type: String},size: {type: String, default: '1em'}
    });const symbolId = computed(() => `#${props.prefix}-${props.name}`);
    </script><template><svg aria-hidden="true" class="svg-icon" :style="'vertical-align:middle;width:' + size + ';height:' + size"><use :href="symbolId" :fill="color"/></svg>
    </template><style scoped>
    .svg-icon {overflow: hidden;fill: currentColor;
    }
    </style>
    

    svg 样式里添加了 vertical-align:middle

  2. 使用示例

    <Icon :name="vite"></Icon>
    

三、封装图标选择器

  1. ./src/components 下创建 IconSelect.vue

    <script setup>
    import Icon from "@/components/Icon.vue";const props = defineProps({modelValue: {type: String, default: ''},
    });const value = ref(props.modelValue)
    const icons = [];
    const modules = import.meta.glob('../../public/**/*.svg');
    for (const path in modules) {const name = path.split('public/')[1].split('.svg')[0];icons.push(name);
    }const emits = defineEmits(['update:modelValue']);
    const change = (name) => {emits('update:modelValue', name)
    }
    </script><template><el-select v-model="value" @change="change" filterable clearable placeholder="Select Icon"><el-option v-for="item in icons" :key="item" :label="item" :value="item"><span style="float: left"><Icon :name="item" size="30px"></Icon></span><span style="float: right;color: var(--el-text-color-secondary);font-size: 13px;">{{ item }}</span></el-option></el-select><Icon :name="value" size="32px" style="padding-left: 10px"></Icon>
    </template>
    

    import.meta.glob('../../public/**/*.svg') 用于获取 ./public 路径下各个层级的 .svg 文件。

  2. 使用示例(在表单中使用):

    <el-form-item label="Icon"><IconSelect v-model="obj.icon"></IconSelect>
    </el-form-item>
    

在这里插入图片描述

四、Demo

<script setup>
import IconSelect from "@/components/IconSelect.vue";
import Icon from "@/components/Icon.vue";const symbol = ref('')
</script><template>{{ symbol }}<Icon :name="symbol" size="32px" style="padding-left: 10px"></Icon><br/><IconSelect v-model="symbol"/>
</template>

在这里插入图片描述

http://www.15wanjia.com/news/179972.html

相关文章:

  • 林州市网站建设宝塔ssl wordpress
  • 山东青?u68元建网站idc网站备案
  • 我想创个网站企业微信一年的费用要多少
  • 学生网站建设的心得做平面设计常用的网站
  • 湘潭商城网站建设定制seo企业推广案例
  • 儿童可以做的游戏视频网站销售型网站设计
  • 微信内部劵网站怎么做建设第三方公众号平台网站教程
  • 外贸网站建设推广公司价格大学生网站建设与网页设计报告
  • 鞍山做网站优化wordpress做直播网站吗
  • 国内php开发的电商网站有哪些美术馆网站建设方案书
  • 营销网站建设规划个人博客怎么注册
  • 西安哪个公司网站建设好网站推广妙招
  • 邢台做网站的公司有那个asp做网站缺点
  • 作业做哪些类型的网站网站费用明细
  • 凤冈建设局网站外贸公司用什么建网站
  • 手机网站字体自适应句容市建设工程管理处网站
  • 云电脑注册网站首页北京专业网站建设大全
  • 做网站代码的含义网站建设在哪里办公
  • 怎么样自己做网站淄博网站建设网站推广优化
  • 打开网站文件夹权限设置江苏网站开发
  • 我做的网站打开慢怎么处理网络技术服务
  • 华汇建设集团有限公司网站网站查询域名
  • 网站运营工作网页设计与制作论文5000字
  • 邢台市做网站电话济南传承网站建设李聪
  • 网站分为几级页面泰州专业做网站
  • 做电子书网站 赚钱去掉域名后的wordpress
  • 餐饮连锁企业网站建设方案上海做企业网站的公司
  • 软文写作平台发稿乌海网站seo
  • 旅行社网站营销建设php网站建设是什么意思
  • 深圳招聘网站推荐湖州做网站公司