news 2026/8/24 8:48:54

5步写出第一个原子化样式:otion安装与快速入门完整教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
5步写出第一个原子化样式:otion安装与快速入门完整教程

5步写出第一个原子化样式:otion安装与快速入门完整教程

【免费下载链接】otionAtomic CSS-in-JS with a featherweight runtime项目地址: https://gitcode.com/gh_mirrors/ot/otion

otion 是一款原子化 CSS-in-JS原子样式库,主打「鹅毛般轻量的运行时(featherweight runtime)」:把每条 CSS 属性拆成独立、可复用的原子规则,按需生成类名并自动注入页面,同时提供 TypeScript 类型安全与自动补全。本教程带你 5 步走完 otion 安装与快速入门,从零写出第一个原子化样式。

otion 是什么:为什么选择原子化 CSS-in-JS 方案

特性说明
🎳 简写属性支持padding: 8自动补全为8px,无需手动写单位
🔐 类型安全CSS 属性即插即检,编辑器自动补全,告别拼写错误
🍱 伪类顺序可靠:hover:focus等规则顺序由优先级分组保障,覆盖行为可预期
🦖 自动前缀内置自动添加-webkit--ms-等厂商前缀,还支持数组回退值
🐾 运行时极小微型运行时(microlibrary),包体积占用可忽略
💫 无框架依赖不绑定 React/Vue,任意前端项目都能直接用

灵感来自 Tailwind CSS 的原子化思想:类名即样式、无副作用、天然去重。相同规则多次调用css()会复用同一条已注入的样式,页面样式表始终保持精简。

第1步:一键安装 otion 原子样式库

在你的项目根目录执行以下任一命令即可:

npm install otion

或者使用 yarn:

yarn add otion

核心 API 全部从otion包导出,实现位于 createInstance.ts(csskeyframessetuphydrate)。默认实例在 index.ts 中完成初始化,导入即用,无需任何配置。

第2步:5行代码写出第一个原子化样式

css()接收一个对象形式的样式规则,返回一串空格分隔的唯一类名,并自动把新规则注入<head>中的样式元素:

import { css } from "otion"; const className = css({ display: "flex", justifyContent: "center", padding: 8, // 自动补全为 8px lineHeight: 1.5, // 无单位属性保持原值 color: "blue" });

把它赋给任意元素的class/className即可生效。原子化的威力在于自动去重:两处都写{ color: "blue" }时,第二次调用会直接复用第一次注入的类名,样式表里永远不会出现重复规则。

第3步:快速上手悬停、媒体查询与高级选择器

交互状态和响应式布局是日常刚需,otion 的对象嵌套语法可以自然表达:

const className = css({ color: "blue", ":hover": { color: "red" }, "@media": { "(min-width: 768px)": { color: "orange" } } });
  • 伪类:以:开头的键(如:hover:focus
  • 媒体查询:以@media包裹,条件作为子键,也可与伪类自由组合
  • 高级选择器:用selectors键写"& > * + *"这类嵌套选择器(&代表父规则),作为严格原子化之外的"逃生舱",建议少用

此外,当自动前缀不够时可用数组回退值,最后一个生效:

css({ justifyContent: ["space-around", "space-evenly"] });

第4步:用 keyframes 写出你的第一个 CSS 动画

keyframes()返回一个"惰性"对象,只有被真正使用时才会把@keyframes规则注入页面:

import { css, keyframes } from "otion"; const spin = keyframes({ from: { transform: "rotate(0deg)" }, to: { transform: "rotate(360deg)" } }); const className = css({ animation: `${spin} infinite 20s linear` });

官方 Create React App 示例 App.tsx 就是一个完整的动画落地场景:旋转的 logo,还贴心地用(prefers-reduced-motion: reduce)媒体查询尊重了用户的减少动效偏好。

第5步:集成到你的框架——React、Next.js 与 Gatsby

otion 与框架无关,但项目自带三套开箱即用的集成示例,可对照参考:

  • Create React App:example-cra/,直接import { css } from "otion"即可
  • Next.js:example-nextjs/,在pages/_app.tsx中于typeof window !== "undefined"分支里调用setup(options)hydrate()完成客户端恢复;SSR 侧则用otion/serverVirtualInjector收集样式并剔除未使用规则
  • Gatsby:gatsby-plugin-otion/ 插件 + example-gatsby/ 示例

服务端渲染完整写法可参考 packages/otion/README.md 的 "Server-side rendering" 一节;自定义前缀函数、CSP nonceiframe多实例等进阶定制同样有文档覆盖。

快速上手速查:5步回顾

  1. npm install otion一键安装
  2. css({ ... })生成原子类名,相同规则自动复用
  3. :hover/@media/selectors覆盖交互与响应式
  4. keyframes()惰性注入 CSS 动画
  5. ✅ 对照框架示例接入 React / Next.js / Gatsby

新手常见问题

Q:otion 的运行时真的有那么小吗?A:是的项目定位就是"featherweight runtime"微型库,不做主题化、不做全局样式等重功能,用更小的包体积换更纯粹的原子化工作流。

Q:它和 Emotion、styled-components 有什么区别?A:otion 走原子化路线——每个属性是独立可复用的原子规则、类名按哈希稳定生成;而传统 CSS-in-JS 多为整段对象生成一个类名。项目名即是对 Emotion 的致敬,API 风格与之相近,可用模块别名平滑迁移。

Q:能写全局样式或主题吗?A:设计上刻意不提供全局样式注入(避免副作用)。全局重置、CSS 自定义属性请用普通 CSS 文件;主题化推荐使用 CSS Custom Properties 或 React Context 等方案。

Q:现在就可以上生产环境吗?A:当前处于0.Y.Z版本阶段(自动测试仍在完善中),但已有功能可安全使用;项目方也建议迁移时留意 otion 与 Emotion 并非 100% 可互换。

准备好动手了吗?打开你手头的 React 项目,npm install otion后 5 行代码就能看见第一个原子化样式——这正是轻量方案最快的上手体验。

【免费下载链接】otionAtomic CSS-in-JS with a featherweight runtime项目地址: https://gitcode.com/gh_mirrors/ot/otion

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 8:47:56

Linux压缩解压实战指南:tar、gzip、zip 完整操作清单

Linux压缩解压实战指南&#xff1a;tar、gzip、zip 完整操作清单 【免费下载链接】linux-tutorial :penguin: Linux教程&#xff0c;主要内容&#xff1a;Linux 命令、Linux 系统运维、软件运维、精选常用Shell脚本 项目地址: https://gitcode.com/GitHub_Trending/lin/linux…

作者头像 李华
网站建设 2026/8/24 8:46:09

Node.js 全栈 API 设计与 GraphQL 实:版本升级最怕忽略什么

Node.js 全栈 API 设计与 GraphQL 实&#xff1a;版本升级最怕忽略什么 在 REST API 时代&#xff0c;升级 API 版本通常很简单粗暴&#xff1a;给 URL 加个前缀&#xff0c;比如从 /api/v1/user 切到 /api/v2/user。但在 GraphQL 的世界里&#xff0c;“不鼓励使用大版本号&am…

作者头像 李华
网站建设 2026/8/24 8:42:06

AgentHazard基准:评估计算机操作型AI智能体安全性的关键挑战与实践

1. 项目缘起&#xff1a;当AI助手开始“自主操作”电脑时&#xff0c;我们如何评估其安全性&#xff1f;最近&#xff0c;一个名为“AgentHazard”的基准测试在AI圈子里引起了不小的讨论。这个名字本身就很有意思——“Agent”指的是那些能够理解指令并操作计算机的智能体&…

作者头像 李华
网站建设 2026/8/24 8:41:28

数学建模竞赛实战:从校赛到国赛的降维策略与团队协作

1. 从“国赛”到“校赛”&#xff1a;一次竞赛思维的降维实战如果你是一名理工科学生&#xff0c;尤其是对数学建模、算法竞赛感兴趣的同学&#xff0c;看到“国赛数学建模”这几个字&#xff0c;心里多半会咯噔一下。它意味着高强度的脑力风暴、三天三夜的极限挑战、以及一个全…

作者头像 李华