Next.js第二十五章(CSS方案) 📅 发布时间:2026/7/15 4:31:31 👁️ 浏览次数: Next.js CSS方案在Next.js可以使用多种Css方案包括Tailwind CSS(个人推荐)CSS Modules(创建css模块化类似于Vue的单文件组件)Next.js内置Sass(css预处理器)全局Css(全局的css可以全局使用)Style(内联样式)css-in-js(类似于React的styled-components不推荐)Tailwind CSSTailwind CSS(css原子化)他是一个css框架可以让你快速构建网页他提供了大量的css类你只需要使用这些类就可以快速构建网页。Tailwind CSS安装教程npx create-next-applatest my-project当我们去创建Next.js项目的时候选择customize settings(自定义选项)那么就会出现Tailwind CSS的选项我们选择Yes即可。那么如果我在当时忘记选择Tailwind CSS我该怎么安装呢Next.js Tailwind CSS 安装教程在 Next.js 中安装并使用 Tailwind CSS下面是如何在 Next.js 项目中集成 Tailwind CSS 的详细流程1. 创建你的 Next.js 项目如果还没有项目可以使用 Create Next App 快速初始化npx create-next-applatest my-project --typescript --eslint --appcdmy-project2. 安装 Tailwind CSS 及相关依赖通过 npm 安装tailwindcss、tailwindcss/postcss以及postcss依赖npminstalltailwindcss tailwindcss/postcss postcss3. 配置 PostCSS 插件在项目根目录下创建postcss.config.mjs文件并添加如下内容constconfig{plugins:{tailwindcss/postcss:{},},};exportdefaultconfig;4. 导入 Tailwind CSS在./app/globals.css文件中添加 Tailwind CSS 的导入importtailwindcss;5. 启动开发服务运行开发服务npmrun dev6. 在项目中开始使用 Tailwind现在可以直接在组件或页面中使用 Tailwind CSS 的工具类来进行样式编写。例如exportdefaultfunctionHome(){return(h1 classNametext-3xl font-bold underlineHello world!/h1)}这样即可在项目中使用 Tailwind CSS 原子类来快速开发样式。FAQ这么多类名我记不住怎么办答你不需要特意去记忆tailwindCss的类名都是简称例如backdround-color:red你可以简写为bg-red-500。另外就是官网也提供文档可以查询再其次就是还提供了vscode插件可以自动补全类名。CSS ModulesCSS Modules 是一种 CSS 模块化方案可以让你在组件中使用CSS模块化类似于Vue的单文件组件(scoped)。Next.js已经内置了对CSS Modules的支持你只需要在创建文件的时候新增.module.css后缀即可。例如index.module.css。/** index.module.css */.container{background-color:red;}/** index.tsx */importstylesfrom./index.module.css;exportdefaultfunctionHome(){return(div className{styles.container}h1Home/h1/div)}你会发现他编译出来的类名就会生成一个唯一的hash值这样就可以避免类名冲突。h1classindex-module__ifV0vq__test小满zs Page/h1Next.js内置SassNext.js已经内置了对Sass的支持但是依赖还需要手动安装不过配置项它都内置了只需要安装一下即可。npminstall--save-dev sass另外Next.js还支持配置全局sass变量只需要在next.config.js中配置即可。importtype{NextConfig}fromnextconstconfig:NextConfig{reactCompiler:true,reactStrictMode:false,cacheComponents:false,sassOptions:{additionalData:$color: blue;,// 全局变量}}exportdefaultconfig全局Css全局CSS就是把所有样式应用到全局路由/组件那应该怎么搞呢?在根目录下创建globals.css文件然后添加全局样式。/** app/globals.css */body{background-color:red;}.flex{display:flex;justify-content:center;align-items:center;}在layout.tsx文件中引入globals.css文件。//app/layout.tsximport./globals.cssexportdefaultfunctionRootLayout({children}:{children:React.ReactNode}){return(html langenbody{children}/body/html)}StyleStyle就是内联样式就是直接在组件中使用style属性来定义样式。exportdefaultfunctionHome(){return(div style{{backgroundColor:red}}h1Home/h1/div)}css-in-jscss-in-js就是把css js html混合在一起拨入styled-components不推荐很多人接受不了这种写法。1.安装启用styled-componentsnpminstallstyled-componentsimporttype{NextConfig}fromnextconstconfig:NextConfig{compiler:{styledComponents:true// 启用styled-components}}exportdefaultconfig2.创建style-component注册表使用styled-componentsAPI 创建一个全局注册表组件用于收集渲染过程中生成的所有 CSS 样式规则以及一个返回这些规则的函数。最后使用该useServerInsertedHTML钩子将注册表中收集的样式注入到head根布局的 HTML 标签中。//lib/registry.tsuse clientimportReact,{useState}fromreactimport{useServerInsertedHTML}fromnext/navigationimport{ServerStyleSheet,StyleSheetManager}fromstyled-componentsexportdefaultfunctionStyledComponentsRegistry({children,}:{children:React.ReactNode}){// Only create stylesheet once with lazy initial state// x-ref: https://reactjs.org/docs/hooks-reference.html#lazy-initial-stateconst[styledComponentsStyleSheet]useState(()newServerStyleSheet())useServerInsertedHTML((){conststylesstyledComponentsStyleSheet.getStyleElement()styledComponentsStyleSheet.instance.clearTag()return{styles}/})if(typeofwindow!undefined)return{children}/return(StyleSheetManager sheet{styledComponentsStyleSheet.instance}{children}/StyleSheetManager)}3.注册style-component注册表//app/layout.tsximportStyledComponentsRegistryfrom./lib/registryexportdefaultfunctionRootLayout({children,}:{children:React.ReactNode}){return(htmlbodyStyledComponentsRegistry{children}/StyledComponentsRegistry/body/html)}4.使用styled-componentsuse client;importstyledfromstyled-components;constStyledButtonstyled.buttonbackground-color: red; color: white; padding: 10px 20px; border-radius: 5px;;exportdefaultfunctionHome(){return(StyledButtonClick me/StyledButton)}
指纹浏览器的 “安全密码”:从内核定制到场景落地 在多账号运营、数据采集的场景中,指纹浏览器的核心价值在于通过环境隔离与特征模拟,规避平台风控检测,实现账号的安全运行。其技术架构围绕内核定制、指纹模拟、网络优化三大核心模块展开,各模块协同作用,构建独立的运… 2026/7/11 12:58:35
【收藏级】2026年大模型转行攻略|小白/程序员从零入门,轻松跻身AI热门领域 2026年,大模型技术持续爆发,已深度渗透互联网、金融、医疗等多个行业,相关人才缺口持续扩大,成为程序员转型、小白入行AI的最优赛道之一。本文为2026年全新修订版,结合当前大模型技术趋势和入门痛点,整理了… 2026/7/14 14:51:04
【2026年实操版|建议收藏】小白/程序员大模型学习指南:从零基础到能接单,不走一点弯路 2026年,大模型的普及速度远超预期,它不再是大厂专属的技术壁垒,而是普通人转型、程序员涨薪的“黄金工具”。这两年,我接触过上千名想学家模型的人,发现一个共性问题:绝大多数人不是不够努力,而… 2026/7/8 15:04:08
【电路】电容(三)——耦合与退耦:从“信号桥梁”到“噪声隔离墙” 1. 耦合电容:电路中的信号桥梁我第一次接触耦合电容是在修理老式收音机时。当时发现音频信号从功放传到扬声器时总是断断续续,检查后发现是那个圆柱形的电解电容失效了。这个不起眼的小元件,就是典型的耦合电容。耦合电容的核心使命是让交流信… 2026/7/15 4:28:46
CC1312R7射频与模拟参数深度解析:从手册到实战的设计指南 1. 项目概述:为什么需要深挖射频与模拟参数?在物联网和工业无线传感领域摸爬滚打十几年,我见过太多项目因为前期对芯片“纸上参数”理解不透彻,导致后期在通信距离、功耗和系统稳定性上栽跟头。很多工程师拿到一颗像德州仪器CC131… 2026/7/15 4:28:46
Grok 4.5办公效率革命:4倍token效率实战指南 如果你还在用传统方式处理办公文档,每天在Word、Excel、PPT之间来回切换,那么Grok 4.5的发布可能会彻底改变你的工作流。这不是又一个"AI助手"的常规更新,而是真正意义上的办公效率革命。最近SpaceXAI发布的Grok 4.5在技术圈引起了… 2026/7/15 4:24:44
模型剪枝经典论文精读:Gate Decorator: Global Filter Pruning Method for Accelerating Deep Convolutional Neural N 一、论文基本信息 论文题目:Gate Decorator: Global Filter Pruning Method for Accelerating Deep Convolutional Neural Networks 作者:Zhonghui You、Kun Yan、Jinmian Ye、Meng Ma、Ping Wang 发表信息:NeurIPS 2019 论文链接&#x… 2026/7/15 4:22:41
SAS有序分类数据建模:Binary、Binomial与Beta分布选择指南 1. 项目概述:为什么 ordinal 数据不能直接套用常规统计模型?在 SAS 实战中,我经手过上百个客户的数据分析项目,其中至少三成涉及有序分类数据(ordinal data)——比如患者疼痛评分(1无痛… 2026/7/15 4:22:41
UE5.4集成OSG库:解决“无法解决的外部命令”链接错误全攻略 1. 项目概述:当UE5.4遇上OSG,一场关于“外部命令”的硬仗 最近在折腾一个挺有意思的项目,想把OSG(OpenSceneGraph)这个老牌的三维图形渲染库,集成到最新的UE5.4引擎里。想法很美好,现实却很骨感… 2026/7/15 4:22:41
行星减速机的工作原理是什么?从齿轮运动关系到减速比计算 一、行星齿轮机构的组成 标准行星齿轮机构主要包括: 太阳轮; 行星轮; 内齿圈; 行星架。 太阳轮位于机构中心。 多个行星轮围绕太阳轮均匀布置,行星轮内侧与太阳轮外啮合,外侧与内齿圈内啮合。 行星轮通过轴… 2026/7/15 0:03:00
阅读Java开源框架源码的心得分享! 前几日闲来无事有幸看到了一位博主分享自己阅读开源框架源码的心得,看了之后也引发了我的一些深度思考。我们为什么要看源码?我们该怎么样去看源码? 其中前者那位博主描述的我觉得很全了(如下图所示),就不做… 2026/7/15 0:03:00
【LINUX】驱动 【LINUX驱动】【字符设备】【中断】【Platform】【网课 设备树】【GPIO】【PINCTRL】【INPUT】【IIC】【SPI】【网络驱动】【屏幕驱动】【一 设备树】【二 内核模块编译】【三 基本驱动框架】【四 Platform总线设备驱动框架】【五 驱动子系统】【六 综合】 2026/7/15 0:07:01
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/13 8:31:55
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/14 18:25:04
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/14 5:09:41