antdesignpro⼆级菜单_浅谈AntDesignPro菜单⾃定义icon Ant Design Pro 官⽅⽂档说明 在菜单中使⽤⾃定义的 icon
由于 umi 的限制,在 fig.js 是不能直接只是⽤组件的,Pro 中暂时⽀持 使⽤ ant.design本⾝的 icon type,和传⼊⼀个 img 的 url。只需要直接在 icon 属性上配置即可,如果是个 url,Pro 会⾃动处理为⼀个 img 标签。
如果这样还不能满⾜需求,可以⾃定义 getIcon ⽅法。
如果你想使⽤ iconfont 的图标,你可以使⽤ant.desgin的⾃定义图标.
1. getIcon⽅法
/* eslint no-useless-escape:0 */
const reg = /(((^https?:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(?::\d+)?|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+) ((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)$/;
export function isUrl(path) {
st(path);
}
import { isUrl } from '../utils/utils';
const getIcon = icon => {
if (typeof icon === 'string') {
if (isUrl(icon)) {
return } />;
}
if (icon.startsWith('icon-')) {
return ;
}
return ;
}
return icon;
};
这个getIcon 来⾃于 AntD Pro 源代码 getIcon 很全⾯,既可以⽤ Icon(使⽤AntD 提供的icon),⼜可以⽤ IconFont(使⽤
www.iconfont仓库的icon),还可以⽤静态资源⽂件( 转换成 icon);
实际项⽬中很多时候是需要替换成公司设计师设计的icon,因此我将他做了个简单的转换
const MenuIcon = ({imgStyle, imgSrc}) => (
component={() => (
style={{width: '1em', height: '1em', ...imgStyle}}
src={imgSrc}
alt="icon"
)}
/>
);
// example
// imgStyle 是由于UI切图 尺⼨经常不够准确 img位置需要微调
const menuData = [
{
name: '⾸页',
icon: ,
path: 'home',
},
]
注意:img width height 设置为 1em ,让它⾃适应parent组件的⼤⼩,实现菜单打开/关闭时,图⽚的缩放,如果给具体数值则没有缩放效果
2. 使⽤ant.desgin的⾃定义图标(使⽤ svg).
利⽤ Icon 组件封装⼀个可复⽤的⾃定义图标。可以通过 component 属性传⼊⼀个组件来渲染最终的图标,以满⾜特定的需求。
import { Icon } from 'antd';
const HeartSvg = () => (
);
const PandaSvg = () => (
d="M99.096 315.634s-82.58-64.032-82.58-132.13c0-66.064 33.032-165.162 148.646-148.646 83.37 11.91 99.096 165.162 99.096 165.162l-165.162 115.614zM924.906 315.634s82.58-64.032 82.58-132.13c0-66.064-33.032-
165.162-148.646-148.646-83.37 11.91-99.096 165.162-99.096 165.162l165.162 115.614z"
fill="#6B676E"
p-id="1143"
/>
d="M1024 561.548c0 264.526-229.23 429.42-512.002 429.42S0 826.076 0 561.548 283.96 66.064 512.002 66.064 1024 297.022 1024 561.548z"
fill="#FFEBD2"
p-id="1144"
/>
d="M330.324 842.126c0 82.096 81.34 148.646 181.678 148.646s181.678-66.55 181.678-148.646H330.324z"
fill="#E9D7C3"
p-id="1145"
d="M644.13 611.098C594.582 528.516 561.55 512 512.002 512c-49.548 0-82.58 16.516-132.13 99.096-42.488 70.814-78.73 211.264-49.548 247.742 66.064 82.58 165.162 33.032 181.678 33.032 16.516 0 115.614 49.548 181.678-33.032 29.18-36.476-7.064-176.93-49.55-247.74z"
fill="#FFFFFF"
p-id="1146"
/>
d="M611.098 495.484c0-45.608 36.974-82.58 82.58-82.58 49.548 0 198.194 99.098 198.194 165.162s-79.934 144.904-148.646 99.096c-49.548-33.032-132.128-148.646-132.128-181.678zM412.904 495.484c0-45.608-36.974-82.58-82.58-82.58-49.548 0-198.194 99.098-198.194 165.162s79.934 144.904 148.646 99.096c49.548-33.032 132.128-148.646 132.128-181.678z"
fill="#6B676E"
p-id="1147"
/>
d="M512.002 726.622c-30.06 0-115.614 5.668-115.614 33.032 0 49.638 105.484 85.24 115.614 82.58 10.128 2.66 115.614-32.944 115.614-82.58-0.002-27.366-85.556-33.032-115.614-33.032z"
fill="#464655"
p-id="1148"
/>
d="M330.324 495.484m-33.032 0a33.032 33.032 0 1 0 66.064 0 33.032 33.032 0 1 0-66.064 0Z"icon图标库
fill="#464655"
p-id="1149"
/>
d="M693.678 495.484m-33.032 0a33.032 33.032 0 1 0 66.064 0 33.032 33.032 0 1 0-66.064 0Z"
fill="#464655"
p-id="1150"
/>
);
const HeartIcon = props => ;
const PandaIcon = props => ;
mountNode,
);
补充知识:Ant Design Pro Of Vue 项⽬中路由菜单icon 修改或新增
在 config / fig.js 中修改,直接从 ant-design-vue-icon取,只要 icon 组件的 type 值即可。
如:
以上这篇Ant Design Pro 菜单⾃定义 icon就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持脚本之家。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论