Компонент Card в библиотеке Element Plus представляет собой контейнер для структурирования информации в виде карточки. Он обеспечивает визуальное разделение контента, позволяя создавать аккуратные блоки с заголовками, изображениями, действиями и дополнительными элементами. Card используется для отображения информации в панелях, витринах, профилях и любых местах, где требуется визуально отделённый контент.
Карточка состоит из следующих ключевых частей:
Простейший пример использования:
<template>
<el-card>
<div>Основное содержимое карточки</div>
</el-card>
</template>
В этом примере создаётся простая карточка без заголовка и дополнительных элементов.
Для добавления заголовка используется prop
header или слот header. Использование
слота позволяет полностью кастомизировать верхнюю часть карточки,
включая иконки, кнопки или стилизованный текст.
<el-card>
<template #header>
<span>Заголовок карточки</span>
<el-button type="primary" size="small">Действие</el-button>
</template>
<div>Содержимое карточки</div>
</el-card>
Особенности:
#header позволяет вставлять сложные компоненты, включая
кнопки и иконки.header.Содержимое карточки помещается внутрь
<el-card>. Это может быть текст,
изображения, списки, таблицы или любые компоненты Vue. Для создания
визуального разделения внутри тела карточки можно использовать
внутренние элементы с отступами или границами.
<el-card>
<div class="card-content">
<p>Описание элемента</p>
<el-tag type="success">Активный</el-tag>
</div>
</el-card>
Card поддерживает кастомизацию внешнего вида с помощью props
shadow и body-style.
always, hover,
never.Пример:
<el-card shadow="hover" :body-style="{ padding: '20px', backgroundColor: '#f9f9f9' }">
<div>Карточка с кастомным стилем</div>
</el-card>
Для визуально насыщенных карточек часто требуется отображать
изображения. Можно использовать слот header или отдельный
блок внутри body для картинки.
<el-card shadow="hover">
<template #header>
<img src="https://via.placeholder.com/300x100" alt="Превью" style="width:100%; border-radius:4px 4px 0 0;">
</template>
<div>
<h3>Заголовок с изображением</h3>
<p>Описание и дополнительная информация</p>
</div>
</el-card>
Слот footer позволяет добавлять кнопки или ссылки,
создавая интерактивные карточки.
<el-card>
<div>Содержимое карточки</div>
<template #footer>
<el-button type="primary" size="small">Принять</el-button>
<el-button size="small">Отмена</el-button>
</template>
</el-card>
Рекомендации по использованию footer:
size="small")
для компактного интерфейса.Карточки часто располагаются в сетках, что делает интерфейс гибким и
аккуратным. Для этого можно использовать el-row и
el-col.
<el-row :gutter="20">
<el-col :span="8">
<el-card shadow="hover">
<div>Карточка 1</div>
</el-card>
</el-col>
<el-col :span="8">
<el-card shadow="hover">
<div>Карточка 2</div>
</el-card>
</el-col>
<el-col :span="8">
<el-card shadow="hover">
<div>Карточка 3</div>
</el-card>
</el-col>
</el-row>
Особенности:
gutter задаёт расстояние между колонками.Card предоставляет гибкие возможности кастомизации через классы и стили:
.el-card – основной контейнер карточки..el-card__header – верхняя часть, заголовок..el-card__body – тело карточки..el-card__footer – нижняя часть, действия.Пример добавления границы и радиуса через CSS:
.custom-card {
border: 1px solid #e0e0e0;
border-radius: 8px;
overflow: hidden;
}
<el-card class="custom-card">
<div>Карточка с кастомной рамкой</div>
</el-card>
Карточки идеально подходят для отображения данных, получаемых с сервера. Для этого можно использовать v-for:
<el-row :gutter="20">
<el-col v-for="item in items" :key="item.id" :span="6">
<el-card shadow="hover">
<h4>{{ item.title }}</h4>
<p>{{ item.description }}</p>
</el-card>
</el-col>
</el-row>
Преимущества:
Карточка в Element Plus является универсальным и мощным инструментом для построения визуально организованных интерфейсов с гибкой кастомизацией и динамическим содержимым.