首页 > 其他分享 >antdv 添加自定义svg图标

antdv 添加自定义svg图标

时间:2022-09-28 12:32:38浏览次数:55  
标签:antdv 14 自定义 svg 35.5 var path Icon

1 引入

import Icon from '@ant-design/icons-vue'

2 调用添加icon的方法

Icon.add

使用方式 :

<a-icon type="svg1"/>

因为是添加到ant-design的,升级antdv出现异常时要查阅源码进行调整


import Icon from '@ant-design/icons-vue'
// var normalViewBox = '0 0 1024 1024';
// var newViewBox = '-10 0 453 512';
// var fill = 'fill';
// var outline = 'outline';
// var twotone = 'twotone';
// 引入svg 用了 vue-svg-loader
var svg1 = require('./svg1.svg')
function getSvgData(svg) {
var _objectWithoutProperties = a => a
var _objectSpread = a => a
var bb = eval('(' + svg.render.toString() + ')')
return bb({}, { data: {}, _c: (tag, props, children) => { return { tag, props, children } } })
}
var svg = {
svg1
}

function getNode(viewBox) {
var paths = [];
for (var _i = 1; _i < arguments.length; _i++) {
paths[_i - 1] = arguments[_i];
}
return {
tag: 'svg',
attrs: { viewBox: viewBox, focusable: false },
children: paths.map(function (path) {
if (Array.isArray(path)) {
return {
tag: 'path',
attrs: {
fill: path[0],
d: path[1]
}
};
}
return {
tag: 'path',
attrs: {
d: path
}
};
})
};
}
function getIcon(name, theme, icon) {
return {
name: name,
theme: theme,
icon: icon
};
}
function addIcon(svg) {
for (var x in svg) {
var data = getSvgData(svg[x])
var viewBox = data.props.attrs.viewBox
var d = data.children[0].props.attrs.d;
['fill', 'outline', 'twotone'].forEach((f) => {
Icon.add(
getIcon(x, f,
getNode(viewBox, d)
)
)
})
}
}
addIcon(svg)

// export const mmmFill = getIcon('mmm', fill,
// getNode(newViewBox, `M0 480v-352l128 -128h224q13 0 22.5 9t9.5 23v64h-32v-64h-192v96q0 14 -9.5 23t-23.5 9h-95v320h320v-64h32v64q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23zM306 298l32 -4q2 8 4.5 13t9.5 10q2 1 3 2l2 1q2 0 3 2v-52q-21 -7 -35 -18.5t-14 -36.5q0 -40 41 -49h2l4 -1h2v-13h18v13q5 0 6 1q21 3 31 14t13 28l-31 4q-3 -10 -13 -17l-6 -3v48l6 2q22 7 35.5 17t13.5 35q0 22 -11 35.5t-38 19.5h-2l-4 1v21h-18v-20h-2l-4 -1h-2q-39 -9 -46 -52zM352 231l8 4v-43q-6 1 -8 3q-5 3 -8 6.5t-3 11.5q0 5 1.5 9t9.5 9zM380 323q1 0 1.5 -0.5t2.5 -0.5q8 -2 13 -7q6 -8 6 -16t-3 -12.5t-16 -9.5l-6 -2v49z`)
// )

// export const mmmOutline = getIcon('mmm', outline,
// getNode(newViewBox, "M0 480v-352l128 -128h224q13 0 22.5 9t9.5 23v64h-32v-64h-192v96q0 14 -9.5 23t-23.5 9h-95v320h320v-64h32v64q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23zM306 298l32 -4q2 8 4.5 13t9.5 10q2 1 3 2l2 1q2 0 3 2v-52q-21 -7 -35 -18.5t-14 -36.5q0 -40 41 -49h2l4 -1h2v-13h18v13q5 0 6 1q21 3 31 14t13 28l-31 4q-3 -10 -13 -17l-6 -3v48l6 2q22 7 35.5 17t13.5 35q0 22 -11 35.5t-38 19.5h-2l-4 1v21h-18v-20h-2l-4 -1h-2q-39 -9 -46 -52zM352 231l8 4v-43q-6 1 -8 3q-5 3 -8 6.5t-3 11.5q0 5 1.5 9t9.5 9zM380 323q1 0 1.5 -0.5t2.5 -0.5q8 -2 13 -7q6 -8 6 -16t-3 -12.5t-16 -9.5l-6 -2v49z")
// )

// export const mmmTwotone = getIcon('mmm', twotone,
// getNode(newViewBox, 'M0 480v-352l128 -128h224q13 0 22.5 9t9.5 23v64h-32v-64h-192v96q0 14 -9.5 23t-23.5 9h-95v320h320v-64h32v64q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23zM306 298l32 -4q2 8 4.5 13t9.5 10q2 1 3 2l2 1q2 0 3 2v-52q-21 -7 -35 -18.5t-14 -36.5q0 -40 41 -49h2l4 -1h2v-13h18v13q5 0 6 1q21 3 31 14t13 28l-31 4q-3 -10 -13 -17l-6 -3v48l6 2q22 7 35.5 17t13.5 35q0 22 -11 35.5t-38 19.5h-2l-4 1v21h-18v-20h-2l-4 -1h-2q-39 -9 -46 -52zM352 231l8 4v-43q-6 1 -8 3q-5 3 -8 6.5t-3 11.5q0 5 1.5 9t9.5 9zM380 323q1 0 1.5 -0.5t2.5 -0.5q8 -2 13 -7q6 -8 6 -16t-3 -12.5t-16 -9.5l-6 -2v49z')
// )

// Icon.add(mmmFill)
// Icon.add(mmmOutline)
// Icon.add(mmmTwotone)

标签:antdv,14,自定义,svg,35.5,var,path,Icon
From: https://blog.51cto.com/rzl01/5719162

相关文章

  • WPF 自定义可拖动标题栏
    要注意,拖拽的地方,需要加背景色,否则DrageMove 将无效MainWindows.xaml<Windowx:Class="Report.MainWindow"xmlns="http://schemas.microsoft.com......
  • elelment中el-cascader怎样自定义显示的lable 与value
    1、后端返回的数据类型  2、页面代码  3、重点在于 :props="{value:'id',label:'className',children:'childNode'}"  ......
  • VueJs 自定义过滤器使用总结
    在这个教程中,我们将会通过几个例子,了解和学习VueJs的过滤器。我们参考了一些比较完善的过滤器,比如orderBy和filterBy。而且我们可以链式调用过滤器,一个接一个过滤。因此,我......
  • Echarts自定义提示框案例
    官方文档:#tooltip.formatter两种方法,如trigger:'axis'的情况下,均在tooltip节点下添加如下:1.模板字符串formatter:'<spanstyle="font-size:10px">{b}</span><div......
  • java异常--自定义异常
    java异常--自定义异常步骤:创建自定义异常类。在方法中通过throw关键字抛出异常对象。处理异常try-catch捕获并处理,否则在方法声明处通过throws关键字指明抛出给......
  • django rest-framework 自定义异常捕获类
    djangorest-framework自定义异常捕获类环境:django3.2python3先创建文件exceptions.py(文件名称可以自定义)1、重写exception_handler,自定义异常类#-*-coding:ut......
  • 创建自定义UserInfo表
    models.py中fromdjango.contrib.auth.modelsimportAbstractUserfromdjango_pandas.managersimportDataFrameManager#Createyourmodelshere.classUserIn......
  • vue3+ts项目自定义input组件
    官网讲解v-model的原理<inputv-model="searchText"/>//等同于<input:value="searchText"@input="searchText=$event.target.value"/>//当用在组件上时,v-mode......
  • 注解-自定义注解-元注解和解析注解
    注解-自定义注解-元注解元注解:就是用于描述注解的注解@Target:描述注解能够作用的位置@Retention:苗猪注解被保留的阶段@Documented:描述注解是......
  • 注解-自定义注解-格式&本质和属性定义
    注解-自定义注解-格式&本质格式:元注解:   public@interface 注解名称{}本质:注解本质上就是一个接口,接口默认继承Annotation接口publicinterfaceM......