vue动态绑定图标的完整步骤

 更新时间:2021年05月23日 15:31:28   作者:我的龙呢  
动态绑定是我们日常开发中经常遇到的一个需求,下面这篇文章主要给大家介绍了关于vue动态绑定图标的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

0 图标和图片的不同

图标时字符,图片时二进制流。即图片加载会比图标慢,且加载图标最好不要用img标签,我们可以把图标当成组件用import的方法引入进来,然后当成标签引入。

1 安装svg

1.使用管理员身份运行cmd窗口,切换到项目目录下执行。

npm add svg

2 从图标库下载图标

1.阿里图标库

https://www.iconfont.cn/

2.下载svg

3.在compone目录下建立一个icons,在icons下建立一个svg目录,专门用来放图标。

3 查看插件的使用方法

  • vue所有的插件都在node_modules中
  • 根据下载时的插件名来找到插件e-cli-plugin-svg的README

4 展示图标

1 定义动态组件MyIcon.vue

1.其中myicon是从父组件传过来的属性

2.computed是用来根据myicon.name(图标的名字)来动态生成图标地址的。原因是在export default{}外引入组件时,我们接收到的props属性是传递不到export default{}外面的,所以采用computed来协助生成icon组件。

3.:style是动态绑定样式,此处绑定了宽,高。并在props中设置了默认值,如果父组件不传递宽高信息的话,就是使用默认值。

4.:fill是绑定填充属性样式的,也在props中设置了默认值。

<template>
	<div>
		<component
			:is="icon"
			:style="{width : myicon.width , hight : myicon.hight}"
			:fill="myicon.fill"
		></component>
		
	</div>
</template>

<script>
	
	export default{
		props:{
			myicon:{
				name:{
					type:String
				},
				
				width:{
					type:String,
					default:'40px'
				},
				hight:{
					type:String,
					default:'40px'
				},
				fill:{
					type:String,
					default:'#000000'
				}
			}
			
			

		},
			
		computed:{
			icon(){
				return () => import('@/components/icons/svg/'+ this.myicon.name +'.svg?inline')
			}
			
		}			
	}
</script>

<style>	

</style>

2 在main,js中全局引入并定义组件MyIcon.vue

import mysvg from '@/components/MyIcon.vue'
Vue.component('my-icon',mysvg)

3 调用my-icon作为父组件

1.把要传递的属性定义在myicon:{}中,其中name是必填项,它是图标的名字,不带后缀。

<template>
	
					<my-icon
						:name = "scope.row.icon"
						:width = "50px"
						:hight = "50px"
						:fill =  "#ff00ff">
					</my-icon>
					
</template>

<script>
	
	
	
	export default {

		data() {				
			return {		
				
				myicon:{					
					name: "position",
					width: "60px",
					hight: "60px",
					fill : "#ff00ff"					
				},

				

			}
		},
	}
</script>

<style scoped lang="less">	
</style>

总结

到此这篇关于vue动态绑定图标的文章就介绍到这了,更多相关vue动态绑定图标内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue下滚动到页面底部无限加载数据的示例代码

    Vue下滚动到页面底部无限加载数据的示例代码

    本篇文章主要介绍了Vue下滚动到页面底部无限加载数据的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Vue动态组件和keep-alive组件实例详解

    Vue动态组件和keep-alive组件实例详解

    动态组件指的是动态切换组件的显示与隐藏,下面这篇文章主要给大家介绍了关于Vue动态组件和keep-alive组件的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • vue图片上传本地预览组件使用详解

    vue图片上传本地预览组件使用详解

    这篇文章主要为大家详细介绍了vue图片上传本地预览组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • Vue使用Three.js加载glTF模型的方法详解

    Vue使用Three.js加载glTF模型的方法详解

    这篇文章主要给大家介绍了关于Vue使用Three.js加载glTF模型的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Vue具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-06-06
  • Vue组件化开发之通用型弹出框的实现

    Vue组件化开发之通用型弹出框的实现

    这篇文章主要介绍了Vue组件化开发之通用型弹出框的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • vuex分模块后,实现获取state的值

    vuex分模块后,实现获取state的值

    这篇文章主要介绍了vuex分模块后,实现获取state的值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • vue cli使用融云实现聊天功能的实例代码

    vue cli使用融云实现聊天功能的实例代码

    最近小编接了一个新项目,项目需求要实现一个聊天功能,今天小编通过实例代码给大家介绍vue cli使用融云实现聊天功能的方法,感兴趣的朋友跟随小编一起看看吧
    2019-04-04
  • vue实现echarts中的仪表盘

    vue实现echarts中的仪表盘

    这篇文章主要为大家详细介绍了vue实现echarts中的仪表盘,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Vue echarts@4.x中国地图及AMap相关API使用详解

    Vue echarts@4.x中国地图及AMap相关API使用详解

    这篇文章主要为大家介绍了Vue使用echarts@4.x中国地图及AMap相关API使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • 详解vue axios用post提交的数据格式

    详解vue axios用post提交的数据格式

    这篇文章主要介绍了详解vue axios用post提交的数据格式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08

最新评论