Продолжая нашу серию статей о создании приложения для электронной коммерции с использованием ReactJS, мы сейчас заполним код из последнего поста. Вот наш небольшой список дел на сегодня:
- Добавьте две ссылки: одну в корзину и вторую для входа;
- Добавьте боковую панель, чтобы она работала как меню.
Давайте начнем создавать заголовок, чтобы вставить наши ссылки и боковую панель. Мы будем использовать код ASCII для гамбургер-меню, которое находится ☰ в нашем заголовке, оно будет выглядеть так:
<div className="grid-container"> <header className="header"> <div className="brand"> <button> ☰ </button> <Link to="/" className="header-links">Site Name</Link> </div> <div className="header-links"> <Link to="/cart">Cart</Link> <Link to="/signin">Sign In</Link> </div> </header>
Идеальный! Это наш заголовок с нужными нам ссылками и кнопкой, чтобы скрыть и показать нашу боковую панель.
Теперь давайте перейдем к созданию боковой панели и заполнению ее ссылками на нужные нам категории. Пока не беспокойтесь об использовании тега ‹a›, мы изменим его позже.
<aside className="sidebar"> <h3>Categories</h3> <button className="sidebar-close-btn">x</button> <ul> <li> <a href="">Category 1</a> </li> <li> <a href="">Category 2</a> </li> <li> <a href="">Category 3</a> </li> <li> <a href="">Category 4</a> </li> <li> <a href="">Category 5</a> </li> <li> <a href="">Category 6</a> </li> <li> <a href="">Category 7</a> </li> <li> <a href="">Category 8</a> </li> </ul> </aside>
Итак, это наше боковое меню. Мы хотим создать функцию, которая будет скрывать и показывать боковую панель, когда пользователь нажимает на нее, для этого просто используйте OnClick={}внутри кнопки прямо под кнопкой >‹div className="brand"›и в ‹button className="sidebar-close-btn"›x‹/button›.
Код нам нужен вот такой:
const openMenu = () => { document.querySelector(“.sidebar”).classList.add(“open”); } const closeMenu = () => { document.querySelector(“.sidebar”).classList.remove(“open”); } <header className=”header”> <div className=”brand”> <button onClick={openMenu}> ☰ </button> <Link to=”/” className=”header-links”>Farm To Fork</Link> </div> <div className=”header-links”> <a href=”cart”>Cart</a> <a href=”signin”>Sign In</a> </div> </header>
Теперь мы должны добавить это в наш код и заставить его работать с событиями кликов.
function App() => { const openMenu = () => { document.querySelector(“.sidebar”).classList.add(“open”); } const closeMenu = () => { document.querySelector(“.sidebar”).classList.remove(“open”); } /** Code above **/ <button onClick={openMenu}> ☰ </button> /** Code below **/ <aside className="sidebar"> <h3>Categories</h3> <button className="sidebar-close-btn" onClick={closeMenu}>x</button>
Большой! Наша боковая панель завершена и имеет правильное событие щелчка, которое будет обрабатывать функцию, чтобы скрыть и показать ее. будет так:
.brand button { font-size: 3rem; padding: 0.5rem; background: none; border: none; color: insert your color here; cursor: pointer; } .sidebar { position: fixed; transition: all 0.5s ease; transform: translateX(-30rem); width: 30rem; background: insert your color here; height: 100%; } .sidebar h3 { color: insert your color here; } .sidebar ul li { list-style: none; text-align: left; padding-top: 0.5rem; } .sidebar ul li a { color: insert your color here; text-decoration: none; } .sidebar ul li a:hover { color: insert your color here; text-decoration: none; } .sidebar.open { transform: translateX(0); } .sidebar-close-btn { border-radius: 50%; border: none; background: insert your color here; color: insert your color here; width: 3rem; height: 3rem; padding: 0.5rem; font-size: 2rem; padding-top: 0; cursor: pointer; position: absolute; right: 0.5rem; top: 1.5rem; }
Это стили для вашей навигационной панели, выбирайте цвета по своему усмотрению. Теперь перейдите в файл styles.css, чтобы задать стиль главной странице.
.grid-container { display: grid; grid-template-areas: "header" "main" "footer"; grid-template-columns: 1fr; grid-template-rows: 5rem 1fr 5rem; height: 100%; } .header { grid-area: header; display: flex; justify-content: space-between; align-items: center; background: insert your color here; color: insert your color here; padding: 1.3rem; } .brand a { color: insert your color here; font-size: 2.5rem; font-weight: bold; text-decoration: none; } .header-links:hover { color: insert your color here; transition: all 0.5s ease; } .header-links a { color: insert your color here; text-decoration: none; padding-right: 1rem; } .header-links a:hover { color: insert your color here; transition: all 0.5s ease; }
Мы выполнили наши цели на сегодня! В следующий раз, когда нам нужно заполнить область основного контента некоторыми продуктами, это будет включать изображение, бренд, цену и название.