DevGang
Авторизоваться

Создание слайдера с использованием Next.js и CSS

Привет, читатели блога dev-gang! В этой статье мы рассмотрим процесс создания стильного слайдера популярных продуктов с использованием React, Next.js и CSS. Слайдер позволит пользователям прокручивать коллекцию популярных продуктов с помощью левой и правой кнопок навигации.

Для начала давайте настроим структуру проекта и основные компоненты.

Шаг 1: Настройка проекта

Сначала убедитесь, что на вашем компьютере установлен Node.js. Если нет, вы можете скачать его с официального сайта Node.js.

Создайте новое следующее приложение с помощью этой команды:

npx create-next-app@latest

Шаг 2. Создание слайдера популярных продуктов

Теперь давайте создадим необходимые компоненты и стили для создания слайдера популярных продуктов.

Создайте новый каталог с именем «компоненты» в каталоге вашего проекта.

Внутри каталога компонентов создайте файл с именем TrendingSlider.js и добавьте следующий код:

"use client"; // for nextjs 13.4 user
import Link from "next/link";
import React from "react";
import { AiOutlineArrowRight, AiOutlineArrowLeft } from "react-icons/ai";
import "./TrendingSlider.css";

const TrendingSlider = () => {
  const filteredItems = [
    {
      id: 1,
      img: "https://images.pexels.com/photos/90946/pexels-photo-90946.jpeg?auto=compress&cs=tinysrgb&w=600",
      description: "camera",
      price: 200,
    },
    {
      id: 2,
      img: "https://images.pexels.com/photos/404280/pexels-photo-404280.jpeg?auto=compress&cs=tinysrgb&w=600",
      description: "Phone",
      price: 100,
    },
    {
      id: 3,
      img: "https://images.pexels.com/photos/12753820/pexels-photo-12753820.jpeg?auto=compress&cs=tinysrgb&w=600",
      description: "Laptop",
      price: 500,
    },
    {
      id: 4,
      img: "https://images.pexels.com/photos/1649771/pexels-photo-1649771.jpeg?auto=compress&cs=tinysrgb&w=600",
      description: "Headephone",
      price: 40,
    },
    {
      id: 5,
      img: "https://images.pexels.com/photos/163117/keyboard-white-computer-keyboard-desktop-163117.jpeg?auto=compress&cs=tinysrgb&w=600",
      description: "Keyboard",
      price: 140,
    },
    {
      id: 6,
      img: "https://images.pexels.com/photos/2115256/pexels-photo-2115256.jpeg?auto=compress&cs=tinysrgb&w=600",
      description: "Gaming Mouse",
      price: 140,
    },
  ];

  const slideLeft = () => {
    let slider = document.getElementById("slider");
    slider.scrollLeft = slider.scrollLeft - 235;
  };

  const slideRight = () => {
    let slider = document.getElementById("slider");
    slider.scrollLeft = slider.scrollLeft + 235;
  };
  return (
    <>
      <div className="trending">
        <div className="container">
          <div className="title-btns">
            <h3></h3>
            <div className="btns">
              <button title="scroll left" onClick={slideLeft}>
                <AiOutlineArrowLeft />
              </button>
              <button title="scroll right" onClick={slideRight}>
                <AiOutlineArrowRight />
              </button>
            </div>
          </div>
          <div className="row-container" id="slider">
            {filteredItems.map((item) => (
              <div key={item.id} className="row-item">
                <Link href={`/`} className="link">
                  <div className="item-header">
                    <img src={item.img} alt="product" />
                  </div>
                  <div className="item-description">
                    <p>{item.description}</p>
                    <p className="item-price">{item.price}$</p>
                  </div>
                </Link>
              </div>
            ))}
          </div>
        </div>
      </div>
    </>
  );
};
export default TrendingSlider;

Теперь создайте файл с именем TrendingSlider.css в том же каталоге компонентов и добавьте следующий код CSS:

@import url("https://fonts.googleapis.com/css2?family=Blinker:wght@200;400;600;700&display=swap");

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  scroll-behavior: smooth;
}

body {
  font-family: "Blinker", sans-serif;
  position: relative;
}

html {
  font-size: 62.5%;
}

/* global */
.container {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 19px;
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.row-item {
  outline: 2px solid rgba(0, 0, 0, 0.205);
  cursor: pointer;
  transition: all 0.15s ease-in;
}

.row-item:hover {
  outline: 2px solid rgba(0, 0, 0, 0.6);
}

.trending {
  height: 100vh;
}

.item-header img {
  width: 21rem;
}

.item-description {
  font-size: 1.7rem;
  padding: 1rem;
}

.trending h3 {
  font-size: 2.6rem;
  font-weight: 600;
  margin-bottom: 4.2rem !important;
}

.row-container {
  display: flex;
  gap: 2.2rem;
  overflow-x: scroll;
  overflow-y: hidden;
  white-space: nowrap;
  scroll-behavior: smooth;
  position: relative;
  padding: 1rem 0.6rem;
}

/* Hide scrollbar for Chrome, Safari and Opera */
.row-container::-webkit-scrollbar {
  display: none;

  /* Hide scrollbar for IE, Edge and Firefox */
  -ms-overflow-style: none;
  scrollbar-width: none;
}

.title-btns {
  display: flex;
  justify-content: space-between;
}

.btns button {
  color: white;
  background-color: #373737;
  padding: 1rem;
  font-size: 1.5rem;
  border: none;
  height: 4rem;
  width: 4rem;
  cursor: pointer;
  transition: all 0.1s ease-in;
}

.btns {
  display: flex;
  gap: 0.4rem;
}

.btns button:hover {
  background-color: black;
}
.item-price {
  font-weight: 600;
  font-size: 2.2rem;
  margin-top: 1.4rem;
}
.link {
  text-decoration: none;
  color: black;
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

Шаг 3. Интеграция компонента TrendingSlider

Создайте новый файл с именем page.js в каталоге вашего проекта и добавьте следующий код:

import React from "react";
import TrendingSlider from "../components/TrendingSlider";

const Home = () => {
  return (
    <div>
      <TrendingSlider />
    </div>
  );
};

export default Home;

Шаг 4. Запуск приложения

Запустите следующую команду в своем терминале, чтобы запустить сервер разработки:

npm run dev

Посетите http://localhost:3000 в своем веб-браузере, чтобы увидеть слайдер популярных продуктов в действии!

Заключение

В этой статье мы узнали, как создать модный слайдер продуктов с помощью React, Next.js и CSS. Мы создали адаптивный слайдер, который позволяет пользователям перемещаться по продуктам с помощью кнопок навигации. Этот тип компонента пользовательского интерфейса может улучшить взаимодействие с пользователем на вашем веб-сайте и сделать его более интерактивным. Вы можете дополнительно настроить стили и добавить больше функций в соответствии с требованиями вашего проекта.

Источник:

#CSS #React #NestJS
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу