我构建了一个零依赖的 CSS 库,内置 9 种主题——原因如下

发布: (2026年4月1日 GMT+8 22:38)
7 分钟阅读
原文: Dev.to

Source: Dev.to

我今年在构建第十个着陆页。

相同的流程:打开一个新项目,复制上一个项目的按钮样式,粘贴卡片 CSS,微调颜色,与 Bootstrap 那些固执的默认设置斗争,或者花 40 分钟配置 Tailwind 只为得到一个居中的 hero 区块。

某个时刻,我问自己:

为什么我没有一个可以直接放入任何项目并立即开始构建的单文件?

这个问题演变成了六个月的工作。结果是 njX UI —— 一个专为着陆页打造的纯‑CSS 组件库。

现有选项的问题

我不想再构建另一个库。我真的尝试过使用已有的:

优点缺点
Bootstrap非常适合仪表盘和管理后台。较大(约 200 KB),风格固定,除非进行大量自定义,否则所有站点看起来都一样。
Tailwind CSS极其灵活,我真的很喜欢。需要构建步骤、PostCSS、配置文件,而且你最终会在 HTML 中编写 CSS——对快速着陆页来说负担较重。
shadcn/ui、Radix 等功能强大的组件集合。需要 React(或其他框架)。并非总是可行的选项。

我真正想要的

  • 一个 <link> 标签,完成。
  • 开箱即用、外观良好的预构建组件。
  • 多种主题,可通过单一属性切换。
  • 纯 HTML —— 无需框架、无构建步骤、无需 npm。

于是我自己做了。

什么是 njX UI?

njX UI 是一个 约 40 KB 压缩 的 CSS 组件库,拥有 25+ 个组件9 种内置配色主题

在页面中引入

使用组件

Get Started
Learn More

就是这样。无需配置、无需构建步骤、样式不需要 JavaScript。

9 种主题,一个属性

库中的每一种颜色都是一个 CSS 自定义属性(custom‑property)标记。切换主题实际上只需要更改一个 HTML 属性:

可用主题: darklightredbluegreencyanyellowpinkpurple

所有组件——按钮、卡片、表单、通知等——都会自动更新。

实时演示: 点击顶部栏的颜色点即可查看全部 9 种主题。

包含内容

25+ 组件

类别组件
布局Sections, Hero, Grid, Container
UIButtons (50+ variants), Cards, Badges, Tags
表单Input, Select, Checkbox, Radio, Switch
反馈Notifications, Toast, Modals, Popups
导航Tabs, Sidebar/Drawer (6 variants)
数据Tables, Skeleton loaders
特效15+ CSS animations, 40+ hover effects
渐变50+ gradient classes (bg, text, border, animated)

内置实用工具

  • 12 种字体预设的排版比例。
  • 间距系统。
  • 所有语义状态的颜色标记(primaryaccentsuccesserrorwarning)。
  • 开箱即用的暗/亮模式。

实际使用:5 分钟内完成英雄区


  

  
    
      New · v1.0.7

      
        Build landing pages

        10x faster
      

      
        Zero dependencies. One link tag. 25+ components, 9 themes,
        full CSS variable control.
      

      
        Get Started
        View Docs →
      
    
  

更改 <html> 上的 data-theme 属性即可立即重新着色整个页面。

可选主题切换器(≈10 行原生 JavaScript)

function setTheme(theme) {
  document.documentElement.setAttribute('data-theme', theme);
  localStorage.setItem('njx-theme', theme);
}

// Restore saved theme on page load
const saved = localStorage.getItem('njx-theme');
if (saved) document.documentElement.setAttribute('data-theme', saved);

无库、无框架、无需构建步骤——仅十行纯 JavaScript。

按钮 — 因为每个项目都需要按钮

按钮集合是最完整的板块之一:50+ 变体,范围从 btn-xsbtn-2xl,实心 / 轮廓 / 幽灵 / 渐变 / 发光 / 动画 / 图标 / 组合 / 加载状态。所有这些都只需一个类即可控制。

动画与悬停效果

40+ 悬停效果和 15+ CSS 动画 — 全部为单类实用工具,无需 JavaScript:


lifts on hover
glows on hover
3D tilt on hover

floating animation
pulsing animation
shimmer animation

如何安装

通过 CDN(无需安装)

只需添加 <link> 标签,即可开始使用这些类。

njX UI – 让您以 10× 更快速度构建登陆页面的“即插即用”CSS库。

通过 npm

npm install njx-ui

当前状态与下一步

该库已更新至 v1.0.7,并持续活跃开发。

已稳定

  • 所有 25+ 组件
  • 完整的 9 主题系统
  • 带有 6 种变体的 Sidebar/Drawer 以及完整的 JS API
  • 动画和悬停工具

即将推出

  • 暗/亮模式切换组件(已在文档中)
  • 更多布局原语
  • 带搜索功能的更佳文档

为什么开源

  • 我被迫保持代码整洁并有文档
  • 其他开发者可以捕捉我遗漏的错误
  • 如果它能帮助某人第十一次省去重新编写同一个按钮的工作,那就值得

链接

🚀 Live demo:
GitHub:
📦 npm:

  • 📖 Docs: 完整的组件参考位于上面的在线演示链接

非常期待听到你的想法——尤其是如果你在项目中尝试过的话。你希望接下来添加哪个组件?

0 浏览
Back to Blog

相关文章

阅读更多 »

10个酷炫的CodePen演示 (2026年3月)

2026 F1 车手自定义选择,使用外观:base-select。Chris Bolson 打造了我见过的最令人印象深刻的自定义选择之一。它甚至看起来不像……