Next.js14 CSS样式设置和Tailwind的使用

全局样式

项目的app文件夹内有个globals.css,我们可以在这个全局样式文件里,重置CSS规则,或者存放全站的一些公共样式。

可以将globals.css引入到任何需要的组件中,但通常最好将其添加到顶级组件中,顶级文件就是我们的根布局/app/layout.tsx)。这样我们整个项目都能使用到设置的全局样式。在globals.css随意写个样式

//globals.css
省略...
.base-bg{
  background-color: #0070F1;
  height: 100px;
  padding: 40px;
}

app/layout.tsx

// app/layout.tsx
import './globals.css'
export default function RootLayout({
  children,
}: {
  children: React.ReactNode;
}
{
  return (
    <html lang="en">
      <body>{children}</body>
    </html>

  );
}

app/users/page.tsx里面使用

//app/users/page.tsx
export default function UsersPage({
    return (
        <div className="base-bg">
            <h2>Hello User1</h2>
        </div>

    )
}
Next.js14 CSS样式设置和Tailwind的使用
image.png

Tailwind

Next.js 现在默认附带Tailwind CSS配置,当你使用create-next-app开始一个新项目时,Next.js会询问你是否想要使用Tailwind。如果你选择是,Next.js将自动在你的应用程序中安装必要的包并配置Tailwind。

什么是Tailwind呢?它是一个css框架,能让你快速的引入需要的样式,加快开发速度。

在 Tailwind 中,您可以通过添加类名称来设置元素的样式。例如,添加类”text-red-500″将使文本变成<h2>红色:

//app/users/page.tsx
<h2 className="text-red-500">Hello User1</h2>
Next.js14 CSS样式设置和Tailwind的使用
image.png

虽然CSS样式在全局共享,但每个类都单独应用于每一个元素。这意味着如果你添加或删除一个元素,你不必担心维护单独的样式表、样式冲突,或者随着应用程序的扩展,你的CSS包的大小会增长。

例如我们给app/page.tsx背景色加上蓝色

//app/page.tsx
export default function Home() {
  return (
    <main className="flex min-h-screen bg-blue-500  p-24">
     <h1>一起学习Next.js</h1>
    </main>
  )
}

比如你要画个三角形:

  <div className="h-0 w-0 border-b-[30px] border-l-[20px] border-r-[20px] border-b-black border-l-transparent border-r-transparent" />

CSS模块

CSS 模块允许你通过自动创建唯一的类名来将 CSS 范围限定为组件,因此也不必担心样式冲突。在app/users下创建一个名为users.module.css的文件,并添加一下css:

//app/users/users.module.css
.shape {
   height: 0;
   width: 0;
   border-bottom: 30px solid red;
   border-left: 20px solid transparent;
   border-right: 20px solid transparent;
}

app/users/page.tsx中使用

//app/users/page.tsx
import styles from './users.module.css'
export default function UsersPage({
   return (
       <div className="base-bg">
           <h2 className="text-red-500">Hello User1</h2>
           <div className={styles.shape}></div>
       </div>

   )
}

如果不想用Tailwind,那就用CSS模块。当然也可以两者都用的。

使用clsx库切换类名

在某些情况下,可能需要根据状态或其他条件有条件地设置元素的样式。

clsx是一个可以让您轻松切换类名的库。

首先要安装一下这个库:

 npm install --save clsx
  • 假设您要创建一个InvoiceStatus接受status. 状态可以是’pending‘或’paid‘。
  • 如果是’paid‘,您希望颜色为绿色。如果是’pending‘,您希望颜色为灰色。

可以用来clsx有条件地应用这些类,如下所示:

import clsx from 'clsx';
 
export default function InvoiceStatus({ status }: { status: string }{
  return (
    <span
      className={clsx(
        'inline-flex items-center rounded-full px-2 py-1 text-sm',
        {
          'bg-gray-100 text-gray-500': status === 'pending',
          'bg-green-500 text-white': status === 'paid',
        },
      )}
    >

    // ...
)}

参考next.js14文档:https://nextjs.org/


原文始发于微信公众号(大前端编程教学):Next.js14 CSS样式设置和Tailwind的使用

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/224424.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!