Я не могу заставить тему daisyui распространяться в приложении next.js

Я пытаюсь использовать тему из «Daisyui», которая представляет собой библиотеку компонентов CSS на основе попутного ветра https://daisyui.com/. У меня есть приложение next.js, где точкой входа является pages/_app.tsx. Глядя на примеры и читая документацию веб-сайта, похоже, что тема передается от самого высокого компонента ко всем внутренним компонентам.

Вы добавляете daisyui в файл tailwind.config.js, вот так:

Я сделал свой файл tailwind.config.js таким:

/** @type {import('tailwindcss').Config} */
module.exports = {
    //...
    content: ['./pages/**/*.{js,ts,jsx,tsx}'],
    plugins: [require("daisyui")],
    daisyui: {
      themes: true
    }
  }

true означает, что включены все темы.

Я добавил тему «synthwave» в компонент самого высокого уровня приложения next.js, который представляет собой тег div, обернутый вокруг Component:

import '../styles/globals.css'
import type { AppProps } from 'next/app'

function MyApp({ Component, pageProps }: AppProps) {
  return (
    <div theme-data = "synthwave">
  <Component {...pageProps} />
  </div>
  )
}

export default MyApp

Я также сделал файл postcss.config.js

module.exports = {
    plugins: ['tailwindcss', 'autoprefixer'],
  };

И я импортировал

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

в верхней части globals.css.

Это не удается, потому что полученная веб-страница просто белая.

Но что странно, так это то, что я меняю daisyui: { themes: true } в tailwind.config.js на daisyui: { themes: ["synthwave"] }. Веб-страница правильно оформлена синтвейвом daisyui:

Я предполагаю, что это работает только потому, что переопределяет ВСЕ стили на каждой странице, а я этого не хочу. Я хочу иметь возможность объявлять разные темы на любой странице, если захочу. Итак, как мне правильно установить тему для всего приложения, чтобы я мог переопределить ее на отдельных страницах, если захочу?

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
2
0
290
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Эта ссылка очень полезна https://nextjs.org/docs/advanced-features/custom-document. Вы можете создать файл с именем _document.js, который может обновлять теги и , используемые для отображения страницы. Как говорится в ссылке, я создал файл с именем _document.js в pages, который выглядит так:
страницы/_document.js:

import { Html, Head, Main, NextScript } from 'next/document'

export default function Document() {
  return (
    <Html data-theme = "synthwave">
      <Head />
      <body>
        <Main />
        <NextScript />
      </body>
    </Html>
  )
}

Обратите внимание на этот фрагмент кода <Html data-theme = "synthwave">. Он правильно установил index.tsx на тему daisyuisynthwave.

Другие вопросы по теме