В сфере веб-разработки решающее значение имеет создание интуитивно понятных и интерактивных пользовательских интерфейсов. Одним из популярных шаблонов пользовательского интерфейса, который помогает добиться этого, является ящик, также известный как меню вне холста. С появлением систем безголового пользовательского интерфейса, таких как Headless UI от React и Headless UI от Vue.js, реализация ящиков стала еще проще и универсальнее. В этой статье мы рассмотрим различные методы создания ящиков с использованием этих платформ, а также приведем примеры кода и разговорные пояснения.
- Headless UI Drawer React:
Библиотека React Headless UI предоставляет набор доступных и настраиваемых компонентов, включая универсальный компонент Drawer. Давайте углубимся в создание базового ящика с помощью React:
import { useState } from 'react';
import { Transition } from '@headlessui/react';
function DrawerExample() {
const [isOpen, setIsOpen] = useState(false);
return (
<div>
<button onClick={() => setIsOpen(!isOpen)}>Toggle Drawer</button>
<Transition
show={isOpen}
enter="transition ease-out duration-200"
enterFrom="opacity-0"
enterTo="opacity-100"
leave="transition ease-in duration-150"
leaveFrom="opacity-100"
leaveTo="opacity-0"
>
{(ref) => (
<div ref={ref} className="fixed inset-0">
{/* Drawer content */}
</div>
)}
</Transition>
</div>
);
}
- Headless UI Drawer Vue.js:
Аналогично, Headless UI Vue.js предлагает мощный компонент drawer, который позволяет создавать динамические и интерактивные интерфейсы. Вот пример создания ящика в Vue.js:
<template>
<div>
<button @click="isOpen = !isOpen">Toggle Drawer</button>
<transition name="fade">
<div v-if="isOpen" class="fixed inset-0">
<!-- Drawer content -->
</div>
</transition>
</div>
</template>
<script>
export default {
data() {
return {
isOpen: false,
};
},
};
</script>
- Пользовательский подход CSS.
Если вы предпочитаете более практичный подход, вы можете создать ящик с нуля, используя собственный CSS и JavaScript. Вот упрощенный пример:
<button onclick="toggleDrawer()">Toggle Drawer</button>
<div id="drawer" class="drawer">
<!-- Drawer content -->
</div>
<script>
function toggleDrawer() {
const drawer = document.getElementById('drawer');
drawer.classList.toggle('drawer-open');
}
</script>
<style>
.drawer {
position: fixed;
top: 0;
left: -300px;
width: 300px;
height: 100vh;
background-color: #f1f1f1;
transition: left 0.3s ease-in-out;
}
.drawer-open {
left: 0;
}
</style>
В этой статье мы рассмотрели три различных метода реализации ящиков в ваших веб-приложениях. Мы рассмотрели использование Headless UI React, Headless UI Vue.js и собственный подход CSS. В зависимости от ваших предпочтений и требований проекта вы можете выбрать метод, который наилучшим образом соответствует вашим потребностям. Ящики предоставляют удобный способ отображения дополнительного контента и улучшения пользовательского опыта. Так что вперед и раскройте возможности автономных UI-панелей в своем следующем проекте веб-разработки!