搜索
首页web前端js教程使用 StayedCSS 在 Next.js 中应用 CSS

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 库

Apply CSS in Next.js with StayedCSS 矢量dxy / 呆CSS

✨ 用于 Next.js App Router 的轻量级 CSS 库,支持服务器和客户端组件。

Apply CSS in Next.js with StayedCSS

Apply CSS in Next.js with StayedCSS

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
进入全屏模式 退出全屏模式
在 GitHub 上查看

为了解决这些问题,我创建了 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中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
在JavaScript中替换字符串字符在JavaScript中替换字符串字符Mar 11, 2025 am 12:07 AM

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

自定义Google搜索API设置教程自定义Google搜索API设置教程Mar 04, 2025 am 01:06 AM

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

构建您自己的Ajax Web应用程序构建您自己的Ajax Web应用程序Mar 09, 2025 am 12:11 AM

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

示例颜色json文件示例颜色json文件Mar 03, 2025 am 12:35 AM

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

8令人惊叹的jQuery页面布局插件8令人惊叹的jQuery页面布局插件Mar 06, 2025 am 12:48 AM

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

什么是这个&#x27;在JavaScript?什么是这个&#x27;在JavaScript?Mar 04, 2025 am 01:15 AM

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

通过来源查看器提高您的jQuery知识通过来源查看器提高您的jQuery知识Mar 05, 2025 am 12:54 AM

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

10张移动秘籍用于移动开发10张移动秘籍用于移动开发Mar 05, 2025 am 12:43 AM

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

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器