Next.js App Router 中的样式问题
自从 Next.js App Router 推出以来,开发人员已经接受了一种分离服务器和客户端组件的范例。虽然高效,但它带来了新的挑战。
挑战一:支持服务器端和客户端环境
Next.js 经常使用 React 样式库,因为它基于 React。但是,其中许多库都针对 CSR(客户端渲染)进行了优化,而 App Router 默认为 SSR(服务器端渲染)。这种不匹配可能会导致 SSR 和 CSR 之间的样式不一致。
挑战 2:无风格内容的闪现 (FOUC)
深色模式是改善用户体验的常见功能,但 SSR 通常在浅色模式下渲染 HTML。客户端稍后应用深色模式,导致屏幕闪烁,影响用户体验。
我自己在开发过程中也面临过这些挑战。尽管 Next.js 具有强大的优势,但样式问题仍然存在。以下是我如何应对他们的。
StayedCSS:Next.js 应用程序路由器的 CSS 库
矢量dxy
/
呆CSS
✨ 用于 Next.js App Router 的轻量级 CSS 库,支持服务器和客户端组件。
StayedCSS:Next.js App Router 的 CSS 库
简介
StayedCSS - 测试版
StayedCSS 是一个专为 Next.js App Router 设计的静态 CSS 库,为服务器和客户端组件提供全面支持。它具有类似于基本 CSS 的简单语法,可实现高效的样式设置,旨在成为 Next.js App Router 的下一代 CSS 库。
目前处于测试版本,StayedCSS 在优化和稳定性方面正在快速改进。它将继续发展,为您的项目提供更好的造型体验。
主要特点
- 服务器和客户端组件支持:将样式无缝应用到 Next.js App Router 环境中的服务器和客户端组件。
- 各种样式选项:支持各种 CSS 样式,例如 :hover、::after 和 ~ p。
- 媒体查询:简化响应式设计实现。
- 深色模式:提供无闪烁的深色模式过渡。
开始使用
安装
npm install stayedcss <span># or</span> yarn…
为了解决这些问题,我创建了 StayedCSS。该库支持服务器和客户端环境,提供无闪烁暗模式并与 Next.js App Router 无缝兼容。
我希望 StayedCSS 帮助其他开发者解决这些挑战,我很高兴与社区分享!
1. 将样式应用到服务器组件
npm install stayedcss <span># or</span> yarn
使用 st 函数定义样式,该函数生成静态 CSS 文件和唯一的类名。每个样式对象都链接到一个 componentId,确保轻松区分。服务器组件现在可以利用类似 CSS-in-JS 的语法,同时受益于针对 SSR 优化的静态 CSS。
2. 将样式应用到客户端组件
import { st } from "stayedcss"; const styles = st({ componentId: "components/example", container: { backgroundColor: "white", padding: "20px", }, }); export default function Example() { return ( <div classname="{styles.container}"> <h1 id="Hello-StayedCSS">Hello, StayedCSS!</h1> </div> ); }
对于客户端组件,使用 stClient 函数来定义样式。与服务器组件类似,它根据 componentId 生成静态 CSS 文件和唯一的类名称。服务器和客户端组件共享相同的简单样式方法。
3.深色模式不闪烁
'use client' import { stClient } from "stayedcss/client"; export default function ExampleClient() { return ( <div classname="{style.container}"> <div classname="{style.title}">title</div> </div> ); } const style = stClient({ componentId: "components/example-client", container: { marginBottom: 60, }, title:{ fontSize: 27, }, });
StayedCSS 通过使用 cookies 应用深色模式,解决了 SSR 中的 FOUC 问题,没有延迟或闪烁。使用匹配的 componentId 定义浅色和深色模式样式以实现平滑过渡。
4.简单方法的响应式页面
import { st, stDark } from "stayedcss"; export default function DarkModeExample() { return ( <div classname="{style.container}"> <h1 id="Hello-world">Hello world!</h1> </div> ); } const style = st({ componentId: "component/darkmode-example", container: { backgroundColor: "white", }, }); stDark({ componentId: "component/darkmode-example", container: { backgroundColor: "black", }, });
StayedCSS 通过移动设备、平板电脑和桌面等关键字轻松进行媒体查询。直接在样式对象中声明响应式样式,以实现跨屏幕尺寸的简洁和自适应设计。
5. 使用高级 CSS 进一步发展
const style = st({ componentId: "components/docs/media-query", container: { display: "flex", justifyContent: "center", padding: "20px", backgroundColor: "lightgray", }, "@mobile": { container: { backgroundColor: "pink", padding: "10px", }, }, "@tablet": { container: { backgroundColor: "lightblue", padding: "15px", }, }, "@desktop": { container: { backgroundColor: "lightgreen", width: "50%", }, }, });
支持的功能包括伪类 :hover、伪元素 ::before 和组合器 ~。编写熟悉的 CSS 语法,StayedCSS 将其优化为静态文件,从而实现跨服务器和客户端组件的高性能样式。
有关详细示例,请访问文档页面。
StayedCSS 旨在简化 Next.js App Router 环境中的样式。从服务器-客户端兼容性到高级 CSS 功能,它旨在提供更好的样式体验。今天就尝试一下并分享您的想法 - 我很想听听您的反馈! ?
以上是使用 StayedCSS 在 Next.js 中应用 CSS的详细内容。更多信息请关注PHP中文网其他相关文章!

JavaScript字符串替换方法详解及常见问题解答 本文将探讨两种在JavaScript中替换字符串字符的方法:在JavaScript代码内部替换和在网页HTML内部替换。 在JavaScript代码内部替换字符串 最直接的方法是使用replace()方法: str = str.replace("find","replace"); 该方法仅替换第一个匹配项。要替换所有匹配项,需使用正则表达式并添加全局标志g: str = str.replace(/fi

本教程向您展示了如何将自定义的Google搜索API集成到您的博客或网站中,提供了比标准WordPress主题搜索功能更精致的搜索体验。 令人惊讶的是简单!您将能够将搜索限制为Y

因此,在这里,您准备好了解所有称为Ajax的东西。但是,到底是什么? AJAX一词是指用于创建动态,交互式Web内容的一系列宽松的技术。 Ajax一词,最初由Jesse J创造

本文系列在2017年中期进行了最新信息和新示例。 在此JSON示例中,我们将研究如何使用JSON格式将简单值存储在文件中。 使用键值对符号,我们可以存储任何类型的

利用轻松的网页布局:8个基本插件 jQuery大大简化了网页布局。 本文重点介绍了简化该过程的八个功能强大的JQuery插件,对于手动网站创建特别有用

核心要点 JavaScript 中的 this 通常指代“拥有”该方法的对象,但具体取决于函数的调用方式。 没有当前对象时,this 指代全局对象。在 Web 浏览器中,它由 window 表示。 调用函数时,this 保持全局对象;但调用对象构造函数或其任何方法时,this 指代对象的实例。 可以使用 call()、apply() 和 bind() 等方法更改 this 的上下文。这些方法使用给定的 this 值和参数调用函数。 JavaScript 是一门优秀的编程语言。几年前,这句话可

jQuery是一个很棒的JavaScript框架。但是,与任何图书馆一样,有时有必要在引擎盖下发现发生了什么。也许是因为您正在追踪一个错误,或者只是对jQuery如何实现特定UI感到好奇

该帖子编写了有用的作弊表,参考指南,快速食谱以及用于Android,BlackBerry和iPhone应用程序开发的代码片段。 没有开发人员应该没有他们! 触摸手势参考指南(PDF) Desig的宝贵资源


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

Dreamweaver Mac版
视觉化网页开发工具

记事本++7.3.1
好用且免费的代码编辑器

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器