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

Создание нескольких тем в Tailwind CSS и Next.js

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

Шаг 1: Настройка вашего проекта Next.js:

Для начала откройте терминал и введите следующую команду, чтобы создать новый проект Next.js, используя последнюю версию:

npx create-next-app@latest

После завершения генерации проекта перейдите в только что созданный каталог проекта, выполнив:

cd my-app

Шаг 2: Создание нескольких вариантов темы:

В исходном каталоге вашего проекта перейдите в папку стилей, откройте файл global.css и настройте базовую конфигурацию Tailwind CSS:

@tailwind base;
@tailwind components;
@tailwind utilities;

/* Your base theme settings */
@layer base {
  html {
  --color-primary: #4285f4;
  --color-secondary: #34a853;
  --color-buttons: #fbbc05;
  --color-typography: #ea4335;
  }
}

Создайте папку с именем themes внутри каталога стилей.

Внутри папки тем создайте отдельные файлы CSS для каждого варианта темы: theme1.css, theme2.css и theme3.css.

Настройте цветовую палитру, типографику и другие атрибуты дизайна каждого варианта темы в соответствующих файлах CSS.

src/styles/themes/theme1.css

html[data-theme="theme1"] {
--color-primary: #f98866;
--color-secondary: #80bd9e;
--color-buttons: #89da59;
--color-typography: #ff320e;
}


src/styles/themes/theme2.css
html[data-theme="theme2"] {
--color-primary: #f4cc70;
--color-secondary: #6ab187;
--color-buttons: #de7a22;
--color-typography: #20948b;
}

src/styles/themes/theme3.css

html[data-theme="theme3"] {
--color-primary: #f1f1f2;
--color-secondary: #a1d6e2;
--color-buttons: #bcbabe;
--color-typography: #1995ad;
}

В файле global.css ниже настроек базовой темы вы можете начать импортировать варианты своей темы.

@tailwind base;
@tailwind components;
@tailwind utilities;

@layer base {
html {
--color-primary: #4285f4;
--color-secondary: #34a853;
--color-buttons: #fbbc05;
--color-typography: #ea4335;
}
@import "themes/theme1.css";
@import "themes/theme2.css";
@import "themes/theme3.css";
}

Шаг 3: настройка конфигурации попутного ветра

Откройте файл tailwind.config.js и настройте его для расширения цветов темы с помощью пользовательских свойств CSS, определенных в файле global.css.

Tailwind.config.ts

module.exports = {
    content: [
      './src/pages/**/*.{js,ts,jsx,tsx,mdx}',
      './src/components/**/*.{js,ts,jsx,tsx,mdx}',
      './src/app/**/*.{js,ts,jsx,tsx,mdx}',
    ],
    theme: {
      extend: {
        colors: {
          primary: 'var(--color-primary)',
          secondary: 'var(--color-secondary)',
          buttons: 'var(--color-buttons)',
          typography: 'var(--color-typography)',
        },
      },
    },
    plugins: [],
  };

Эта конфигурация указывает Tailwind CSS использовать пользовательские свойства (переменные) CSS, определенные в файле global.css, для расширенных цветов темы.

Добавляя этот файл tailwind.config.js, вы гарантируете, что ваши стили Tailwind совпадают с определенными вами пользовательскими цветами темы. Эта настройка поможет вам поддерживать согласованность во всем приложении, легко переключаясь между различными темами.

Шаг 4: Динамическое переключение тем

Внутри каталога вашего проекта создайте папку с именем utils, если она не существует, а затем создайте в ней файл с именем helper.ts.

В файле helper.ts определите функцию с именем changeTheme, которая принимает строку темы в качестве аргумента и применяет ее как атрибут данных к элементу HTML:

src/utils/helper.ts

export const changeTheme = (theme: string) => {
  document.querySelector("html")?.setAttribute("data-theme", theme);
};

В вашем файле src/pages/index.tsx (или другом соответствующем компоненте) импортируйте функцию changeTheme.

Внутри вашего компонента создайте кнопки, которые при нажатии вызывают функцию changeTheme с соответствующим названием темы:

src/pages/index.tsx

import { changeTheme } from "@/utils/helper";

export default function Home() {
  return (
   <div className='h-screen grid place-items-center bg-primary'>
    <div>
      <button className='py-2 px-8 bg-buttons text-typography m-2' onClick={() => changeTheme("")}>Default</button>
      <button className='py-2 px-8 bg-buttons text-typography m-2' onClick={() => changeTheme("theme1")}>theme 1</button>
      <button className='py-2 px-8 bg-buttons text-typography m-2' onClick={() => changeTheme("theme2")}>theme 2</button>
      <button className='py-2 px-8 bg-buttons text-typography m-2' onClick={() => changeTheme("theme3")}>theme 3</button>
    </div>
   </div>
  )
}

Реализуя этот код, вы создаете механизм динамического переключения тем, который позволяет пользователям переключаться между разными темами, нажимая соответствующие кнопки. Функция changeTheme устанавливает атрибут data-theme в HTML-элементе, который затем используется вашими пользовательскими вариантами темы в файлах global.css и tailwind.config.js для применения правильного стиля.

Заключение:

Из этого руководства вы узнали, как создавать несколько тем в проектах Tailwind CSS и Next.js и переключаться между ними. Начиная с настройки приложения Next.js с использованием последней версии, вы настраиваете темы, используя переменные CSS в файле global.css. Расширив тему Tailwind в файле конфигурации, вы обеспечили согласованность.

Реализовано динамическое переключение тем через функцию changeTheme в helper.ts. Интеграция кнопок переключения тем в ваши компоненты, как показано в примере index.tsx, позволяет пользователям мгновенно изменять внешний вид приложения.

Освоение этого навыка позволяет вам удовлетворять разнообразные предпочтения пользователей, улучшая взаимодействие с пользователем и демонстрируя адаптируемость вашего приложения. Благодаря возможности предлагать различные темы одним нажатием кнопки вы готовы создавать привлекательные и ориентированные на пользователя веб-приложения.

Поздравляем с освоением искусства создания нескольких тем с помощью Tailwind CSS и Next.js. Наслаждайтесь созданием увлекательных пользовательских интерфейсов и предоставлением исключительных возможностей!

Источник:

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