Компонент Dropdown используется для создания
выпадающих меню с возможностью выбора элементов. В основе работы лежит
комбинация el-dropdown как контейнера и
el-dropdown-menu с
el-dropdown-item для списка опций.
Простейший пример:
<template>
<el-dropdown>
<span class="el-dropdown-link">
Меню<i class="el-icon-arrow-down el-icon--right"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>Опция 1</el-dropdown-item>
<el-dropdown-item>Опция 2</el-dropdown-item>
<el-dropdown-item>Опция 3</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
Ключевые моменты:
el-dropdown – контейнер, на который
навешиваются события клика и отображения.el-dropdown-menu – список выпадающих
элементов.el-dropdown-item – отдельный пункт
меню. Можно добавлять disabled для неактивных
элементов.Dropdown поддерживает несколько событий:
command – срабатывает при выборе пункта меню,
возвращает значение атрибута command элемента.visible-change – срабатывает при открытии/закрытии
меню, передает булево значение.Пример использования события command:
<el-dropdown @command="handleCommand">
<span class="el-dropdown-link">
Выберите действие<i class="el-icon-arrow-down el-icon--right"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="edit">Редактировать</el-dropdown-item>
<el-dropdown-item command="delete">Удалить</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<script>
export default {
methods: {
handleCommand(command) {
if (command === 'edit') {
console.log('Редактирование');
} else if (command === 'delete') {
console.log('Удаление');
}
}
}
}
</script>
По умолчанию меню открывается вниз. Можно управлять направлением
через атрибут placement:
bottom-start – вниз, слеваbottom-end – вниз, справаtop-start – вверх, слеваtop-end – вверх, справаПример:
<el-dropdown placement="top-end">
<span class="el-dropdown-link">
Другое меню<i class="el-icon-arrow-down el-icon--right"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>Вверх вправо</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
Для удобства интерфейса можно использовать
el-dropdown-item с атрибутом
divided для визуального разделителя, а также
el-dropdown-item с кастомной разметкой для
заголовков.
<el-dropdown>
<span class="el-dropdown-link">
Меню с разделителями<i class="el-icon-arrow-down el-icon--right"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>Опция 1</el-dropdown-item>
<el-dropdown-item divided>Опция 2</el-dropdown-item>
<el-dropdown-item disabled>Неактивная опция</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
Для сложных меню применяется группировка через
el-dropdown-item-group. Это позволяет
логически объединять пункты меню и облегчает визуальное восприятие.
<el-dropdown>
<span class="el-dropdown-link">
Группированное меню<i class="el-icon-arrow-down el-icon--right"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item-group>
<el-dropdown-item command="1">Группа 1 – Опция 1</el-dropdown-item>
<el-dropdown-item command="2">Группа 1 – Опция 2</el-dropdown-item>
</el-dropdown-item-group>
<el-dropdown-item-group>
<el-dropdown-item command="3">Группа 2 – Опция 1</el-dropdown-item>
<el-dropdown-item command="4">Группа 2 – Опция 2</el-dropdown-item>
</el-dropdown-item-group>
</el-dropdown-menu>
</el-dropdown>
Dropdown удобно комбинировать с массивами данных для динамической генерации пунктов:
<el-dropdown @command="selectItem">
<span class="el-dropdown-link">
Динамическое меню<i class="el-icon-arrow-down el-icon--right"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item
v-for="item in menuItems"
:key="item.id"
:command="item.action"
>
{{ item.name }}
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<script>
export default {
data() {
return {
menuItems: [
{ id: 1, name: 'Пункт A', action: 'a' },
{ id: 2, name: 'Пункт B', action: 'b' },
{ id: 3, name: 'Пункт C', action: 'c' }
]
};
},
methods: {
selectItem(action) {
console.log('Выбрано действие:', action);
}
}
}
</script>
<el-dropdown-button>.trigger="hover".<el-dropdown trigger="hover">
<el-button>
Меню при наведении<i class="el-icon-arrow-down el-icon--right"></i>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>
<i class="el-icon-edit"></i> Редактировать
</el-dropdown-item>
<el-dropdown-item>
<i class="el-icon-delete"></i> Удалить
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
Эти возможности делают Dropdown универсальным инструментом для создания интерактивных меню, поддерживающих как простые списки, так и сложные динамические интерфейсы.