Element Plus предоставляет разработчикам гибкие инструменты для создания адаптивных интерфейсов, способных корректно отображаться на мобильных устройствах с разными разрешениями экрана. Основой мобильной оптимизации является отзывчивый дизайн, который обеспечивает корректное масштабирование и перестройку компонентов без потери функциональности.
В Element Plus используется система сетки
(<el-row> и <el-col>),
аналогичная Flexbox, с поддержкой breakpoint-ов:
<el-row :gutter="20">
<el-col :xs="24" :sm="12" :md="8">
<div class="box">Контент 1</div>
</el-col>
<el-col :xs="24" :sm="12" :md="8">
<div class="box">Контент 2</div>
</el-col>
<el-col :xs="24" :sm="24" :md="8">
<div class="box">Контент 3</div>
</el-col>
</el-row>
xs, sm, md, lg,
xl — указывают ширину колонки для разных размеров
экрана.:gutter — задаёт расстояние между колонками.Ключевой момент: корректная настройка колонок под каждый breakpoint позволяет автоматически перестраивать интерфейс для смартфонов и планшетов.
Некоторые компоненты Element Plus имеют встроенную поддержку адаптивности:
<el-menu>: для мобильных
устройств рекомендуется использовать режим collapse или
horizontal с переключением через кнопку-гамбургер.<el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal" :collapse="isMobile">
<el-menu-item index="1">Главная</el-menu-item>
<el-menu-item index="2">О нас</el-menu-item>
</el-menu>
<el-dialog>: поддерживает
динамическое изменение размера через width="80%", что
обеспечивает корректное отображение на маленьких экранах.
<el-table>: для мобильных
рекомендуется включать горизонтальный скролл с помощью CSS:
.el-table {
overflow-x: auto;
}
Для управления поведением компонентов в зависимости от устройства удобно использовать реактивные переменные с отслеживанием ширины окна:
import { ref, onMounted, onBeforeUnmount } from 'vue';
const isMobile = ref(false);
const updateWidth = () => {
isMobile.value = window.innerWidth <= 768;
}
onMounted(() => {
window.addEventListener('resize', updateWidth);
updateWidth();
});
onBeforeUnmount(() => {
window.removeEventListener('resize', updateWidth);
});
isMobile можно использовать для условного рендеринга
мобильных версий компонентов, например переключение меню или уменьшение
количества колонок в сетке.
Element Plus поставляется с набором утилит, которые упрощают мобильную адаптацию:
is-hidden-xs,
is-hidden-sm, is-hidden-md,
is-hidden-lgis-block,
is-inline-block, is-inline-flexПример условного скрытия элемента на мобильных устройствах:
<div class="is-hidden-xs">
Этот блок виден только на экранах ≥ 576px
</div>
Для плавной работы интерфейса на слабых устройствах важно учитывать:
<el-table> или <el-carousel>
только при необходимости через defineAsyncComponent.Element Plus корректно обрабатывает тач-события для таких компонентов, как:
<el-carousel> — поддерживает
свайпы для смены слайдов.<el-slider> — позволяет
управлять ползунком пальцем.Для кастомных компонентов можно подключать Vue-обёртки для
touchstart, touchmove, touchend,
чтобы реализовать адаптивные жесты.
Для мобильных устройств важно использовать относительные единицы
(rem, %) вместо фиксированных
(px) для размеров шрифтов, кнопок и полей ввода. Это
позволяет интерфейсу автоматически масштабироваться на экранах разной
плотности пикселей.
Пример адаптивного стиля кнопки:
.el-button {
font-size: 1rem;
padding: 0.5rem 1rem;
}
collapse, width="%",
overflow-x).Эти методы в совокупности обеспечивают корректное отображение интерфейсов Element Plus на всех мобильных устройствах и планшетах.