В библиотеке Ant Design иконки реализуются через
отдельный пакет @ant-design/icons, который предоставляет
набор готовых SVG-компонентов для использования в интерфейсах.
Использование иконок интегрировано с компонентами библиотеки и позволяет
гибко настраивать их отображение, размеры и стили.
Для начала работы с иконками необходимо установить пакет:
npm install @ant-design/icons
Импортировать отдельные иконки рекомендуется поименованно, чтобы уменьшить размер итогового бандла:
import { HomeOutlined, UserOutlined, SettingFilled } from '@ant-design/icons';
Каждая иконка представляет собой React-компонент, что обеспечивает удобство управления через пропсы.
Иконки могут быть использованы в различных компонентах Ant Design,
таких как Button, Input, Menu,
Tabs и других.
Пример использования в кнопке:
import { Button } from 'antd';
import { DownloadOutlined } from '@ant-design/icons';
<Button type="primary" icon={<DownloadOutlined />}>
Скачать
</Button>
Ключевые моменты:
icon принимает React-элемент иконки.type, size и другими
стандартными пропсами Button.<DownloadOutlined />.Иконки Ant Design поддерживают стандартные HTML-атрибуты
style и className, что позволяет управлять
цветом, размером и другими CSS-свойствами:
<UserOutlined style={{ fontSize: '24px', color: '#1890ff' }} />
Важно:
fontSize управляет размером иконки.color.Ant Design предоставляет три основных типа иконок:
Примеры:
import { SmileOutlined, SmileFilled, SmileTwoTone } from '@ant-design/icons';
<SmileOutlined />
<SmileFilled />
<SmileTwoTone twoToneColor="#eb2f96" />
Для TwoTone можно задавать основной цвет через
twoToneColor.
Иконки можно использовать динамически, передавая имя иконки в
переменную и создавая элемент через
React.createElement:
import * as Icons from '@ant-design/icons';
const iconName = 'HomeOutlined';
const IconComponent = Icons[iconName];
<IconComponent style={{ fontSize: 20, color: 'green' }} />
Это полезно, когда иконка определяется на основе данных или конфигурации.
Иконки часто используются в Menu для улучшения
визуальной структуры:
import { Menu } from 'antd';
import { MailOutlined, AppstoreOutlined } from '@ant-design/icons';
<Menu mode="horizontal">
<Menu.Item key="mail" icon={<MailOutlined />}>
Почта
</Menu.Item>
<Menu.Item key="app" icon={<AppstoreOutlined />}>
Приложения
</Menu.Item>
</Menu>
Особенности:
icon поддерживается компонентом
Menu.Item.SubMenu для создания вложенной
структуры.Для корректного отображения иконок на мобильных устройствах
рекомендуется использовать относительные единицы (em,
rem) вместо пикселей. Также поддерживается адаптивное
изменение размеров через проп style в зависимости от
состояния компонента.
Ant Design позволяет задавать глобальные настройки через
ConfigProvider:
import { ConfigProvider } from 'antd';
import { SmileOutlined } from '@ant-design/icons';
<ConfigProvider
theme={{
token: {
colorPrimary: '#1DA57A',
fontSizeIcon: 20
}
}}
>
<SmileOutlined />
</ConfigProvider>
Такой подход удобен для унификации всех иконок в приложении.
Если стандартного набора недостаточно, можно создавать собственные SVG-иконки:
import { createFromIconfontCN } from '@ant-design/icons';
const IconFont = createFromIconfontCN({
scriptUrl: '//at.alicdn.com/t/font_1234567_abcd.js',
});
<IconFont type="icon-custom" style={{ fontSize: 24 }} />
Преимущества:
*.React.lazy и Suspense.Эти принципы и техники позволяют максимально эффективно использовать систему иконок в Ant Design, обеспечивая удобство интерфейса, высокую производительность и визуальную согласованность приложения.