Библиотека @ant-design/icons представляет собой официальный набор иконок для экосистемы Ant Design и используется совместно с компонентами интерфейса в React-приложениях. Она предоставляет удобный способ подключения, рендеринга и кастомизации SVG-иконок.
В основе библиотеки лежит принцип SVG-иконок как React-компонентов. Каждая иконка импортируется как отдельный компонент и может использоваться непосредственно в JSX. Такой подход обеспечивает:
Иконки реализованы как векторные SVG-элементы, что позволяет масштабировать их без потери качества и изменять параметры отображения через свойства React.
Библиотека устанавливается отдельно от основной библиотеки компонентов Ant Design.
Установка через npm:
npm install @ant-design/icons
Установка через yarn:
yarn add @ant-design/icons
После установки иконки становятся доступны для импорта в компонентах React.
Каждая иконка в библиотеке является React-компонентом, который оборачивает SVG-графику.
Пример импорта и использования:
import { SmileOutlined } from '@ant-design/icons';
function App() {
return (
<div>
<SmileOutlined />
</div>
);
}
При рендеринге компонент создаёт SVG-разметку внутри DOM.
Структура сгенерированного HTML приблизительно выглядит так:
<span role="img" class="anticon anticon-smile">
<svg viewBox="0 0 1024 1024">
...
</svg>
</span>
Внешний элемент <span> используется для
единообразной стилизации и управления поведением иконок.
Библиотека содержит несколько сотен иконок, разделённых по стилям отображения.
Основные типы:
Контурные иконки с минималистичным дизайном.
Пример:
import { HomeOutlined } from '@ant-design/icons';
Использование:
<HomeOutlined />
Заполненные иконки с более плотной графикой.
import { HomeFilled } from '@ant-design/icons';
Использование:
<HomeFilled />
Иконки с двухцветной палитрой.
import { HeartTwoTone } from '@ant-design/icons';
Использование:
<HeartTwoTone />
TwoTone-иконки позволяют задавать собственные цвета.
Иконки активно применяются в стандартных компонентах интерфейса.
import { Button } from 'antd';
import { SearchOutlined } from '@ant-design/icons';
<Button icon={<SearchOutlined />}>
Поиск
</Button>
Иконка передаётся через свойство icon.
import { Input } from 'antd';
import { UserOutlined } from '@ant-design/icons';
<Input prefix={<UserOutlined />} placeholder="Имя пользователя" />
Иконка отображается перед текстовым полем.
import { Menu } from 'antd';
import { MailOutlined } from '@ant-design/icons';
<Menu>
<Menu.Item icon={<MailOutlined />}>
Сообщения
</Menu.Item>
</Menu>
Иконки используются как визуальные маркеры элементов меню.
Размер иконки определяется через CSS или inline-стили.
Пример изменения размера:
<SmileOutlined style={{ fontSize: '24px' }} />
Или через класс:
.large-icon {
font-size: 32px;
}
<SmileOutlined className="large-icon" />
Иконка масштабируется пропорционально благодаря SVG-формату.
Цвет управляется свойством color.
<SmileOutlined style={{ color: 'red' }} />
Также возможно использовать CSS:
.icon-blue {
color: blue;
}
<SmileOutlined className="icon-blue" />
SVG внутри иконки наследует цвет от CSS-свойства
color.
TwoTone-иконки имеют основной и вторичный цвет.
Пример:
<HeartTwoTone twoToneColor="#eb2f96" />
Можно задать цвета глобально:
import { setTwoToneColor } from '@ant-design/icons';
setTwoToneColor('#1890ff');
После этого все TwoTone-иконки будут использовать указанный цвет.
Библиотека позволяет вращать иконки с помощью свойства
rotate.
<LoadingOutlined rotate={90} />
Также доступны CSS-анимации.
Пример вращения через CSS:
.spin {
animation: spin 1s linear infinite;
}
@keyframes spin {
100% {
transform: rotate(360deg);
}
}
<LoadingOutlined className="spin" />
Так реализуются индикаторы загрузки.
Поскольку иконка является React-компонентом, она поддерживает обработчики событий.
Пример:
<DeleteOutlined onCl ick={() => console.log('Удаление')} />
Также возможно использование hover-эффектов:
.icon-hover:hover {
color: red;
cursor: pointer;
}
Библиотека позволяет использовать собственные SVG-иконки.
Для этого применяется компонент Icon.
Импорт:
import Icon from '@ant-design/icons';
Пример создания пользовательской иконки:
const MySvg = () => (
<svg viewBox="0 0 1024 1024">
<path d="..." />
</svg>
);
Использование:
<Icon component={MySvg} />
Это позволяет интегрировать любые SVG-иконки в систему Ant Design.
SVG можно импортировать напрямую.
import Icon from '@ant-design/icons';
import { ReactComponent as Logo } from './logo.svg';
<Icon component={Logo} />
Такой подход часто применяется при создании брендированных интерфейсов.
Библиотека оптимизирована для современных сборщиков.
При импорте:
import { SmileOutlined } from '@ant-design/icons';
в сборку попадает только конкретная иконка, а не вся библиотека.
Это достигается благодаря:
Не рекомендуется использовать массовый импорт:
import * as Icons from '@ant-design/icons';
Такой подход увеличивает размер бандла.
В некоторых случаях используется динамический импорт.
Пример:
const IconComponent = React.lazy(() =>
import('@ant-design/icons/SmileOutlined')
);
Это позволяет загружать иконки только при необходимости.
Иконки Ant Design поддерживают базовые механизмы доступности.
HTML-структура включает атрибут:
role="img"
Если иконка используется как кнопка, рекомендуется добавить
aria-label.
Пример:
<DeleteOutlined aria-label="Удалить элемент" />
Это улучшает работу экранных дикторов.
Иконки могут использоваться внутри текста.
<p>
<InfoCircleOutlined /> Дополнительная информация
</p>
Благодаря inline-поведению SVG-элементов иконки корректно выравниваются по текстовой линии.
При масштабных интерфейсах рекомендуется:
Пример оптимизации:
const IconMemo = React.memo(() => <SmileOutlined />);
Это уменьшает количество перерисовок.
Внутренняя структура библиотеки включает несколько ключевых частей:
Основной рендеринг происходит через компонент IconBase,
который отвечает за:
Иконки автоматически адаптируются к теме приложения.
Цвет иконок наследуется от:
Например, при использовании тёмной темы иконки автоматически отображаются с корректной контрастностью.
Иногда кнопка содержит только иконку.
<Button shape="circle" icon={<SearchOutlined />} />
Такие кнопки широко применяются в:
Некоторые иконки используются особенно часто в интерфейсах:
| Иконка | Назначение |
|---|---|
| SearchOutlined | поиск |
| UserOutlined | пользователь |
| SettingOutlined | настройки |
| DeleteOutlined | удаление |
| EditOutlined | редактирование |
| PlusOutlined | добавление |
| MinusOutlined | удаление элемента |
| LoadingOutlined | индикатор загрузки |
Эти иконки формируют основу большинства пользовательских интерфейсов.
Пример панели действий:
import {
EditOutlined,
DeleteOutlined,
EyeOutlined
} from '@ant-design/icons';
function Actions() {
return (
<div>
<EyeOutlined />
<EditOutlined />
<DeleteOutlined />
</div>
);
}
Такая группа иконок часто используется в таблицах для операций с элементами.
В версии Ant Design 4 произошёл переход с icon-font на SVG-иконки.
Преимущества нового подхода:
При необходимости можно объединить:
Все они могут быть приведены к единому виду через компонент
Icon.
Это позволяет сохранять единый визуальный стиль интерфейса.