Skip to main content

安装

最后更新:

使用 Tailwind CSS v4、UnoCSS 安装仅 CSS 的 Frutjam UI 库,或者根本不安装构建步骤。 65+ 个可访问组件,零 JavaScript,WCAG AA。适用于 Django、HTMX、Laravel、React 和任何堆栈。

安装

bash
npm i -D frutjam

然后选择下面与您的设置相匹配的行。每个都为您提供相同的组件。

你的设置添加什么船舶
顺风 CSS v4@plugin "frutjam";仅限您使用的
乌诺CSSpresetFrutjam()仅限您使用的
Vite、Astro、Rails、纯 CSSimport 'frutjam/css'所有组件,gzip 后 30 KB
没有构建步骤一个 <link> 标签所有组件

顺风 CSS v4

你需要一个工作 顺风 CSS 项目,加上 节点 和 npm。 Frutjam 需要 Tailwind 4。

将Frutjam 添加到您的 input.css 与 @plugin 指示:

css
1
2
@import "tailwindcss";
@plugin "frutjam";

这就是整个设置。所有 65 多个组件均可立即使用,并且 Tailwind 仅提供您的标记使用的组件。

乌诺CSS

Frutjam 提供了预设,因此 UnoCSS 只生成您使用的组件,就像 Tailwind 插件一样。

js
1
2
3
4
5
6
7
// uno.config.js
import { defineConfig, presetWind4 } from 'unocss';
import { presetFrutjam } from 'frutjam/unocss';

export default defineConfig({
  presets: [presetWind4(), presetFrutjam()],
});

每个类都像在 Tailwind 下一样工作,变体也是如此:

html
1
2
3
<button class="btn btn-error btn-xl">Delete</button>
<button class="md:btn-error">Red from the medium breakpoint up</button>
<div class="hover:card-primary">Fills on hover</div>

添加 presetAttributify() 组件名称成为一个属性,每个值都被视为它的一个变体:

html
1
2
<button btn="error xl">Delete</button>
<button btn="md:(error xl)">Red and large from the medium breakpoint up</button>

第二行需要 transformerVariantGroup() 对于括号语法。请注意,像这样的属性 btn 不是有效的 HTML,因此如果您验证标记,请使用类形式或 UnoCSS un- 前缀。

选项

选项默认目的
preflighttrue发出 Frutjam 的标记、重置和主题。设置为 false 如果你已经导入 frutjam/css/base 你自己。
prefix''匹配 Tailwind 插件 prefix, 所以 'fj' 给你 fj-btn 和 fj-btn="error".
layer'frutjam'组件被发送到的级联层。它排序在实用程序之下,因此无论预设的顺序如何,实用程序始终胜过组件。

链接组件需要一行配置

UnoCSS 对待 link 作为 CSS 的变体 :link 伪类,其默认分隔符包括 -。所以 link-2xl 读作“2xl,当未访问时”而不是作为类名,并且不会生成任何内容。它仅影响此组件,并且仅影响 link-* 修饰符。

要么告诉 UnoCSS 仅按冒号分割:

js
1
2
3
4
export default defineConfig({
  separators: [':'],
  presets: [presetWind4(), presetFrutjam()],
});

或者使用前缀,其中包含除 link 在名字的前面:

js
presets: [presetWind4(), presetFrutjam({ prefix: 'fj' })],   // fj-link-2xl

其他所有组件均不受影响。 link 是 57 个名字与伪类冲突的唯一一个。

无实用发动机

Frutjam 是使用 Tailwind 构建的,但组件编译为读取自定义属性的普通 CSS。如果您的项目根本不使用实用程序引擎,请导入样式表而不是插件:

js
import 'frutjam/css';

这就是整个设置。每个组件类都可以工作,主题可以切换 data-theme 像往常一样,不需要其他任何东西。它压缩后大小为 30 KB,包含基本样式、主题和所有 65 个以上组件。

只拉入您需要的内容:

js
1
2
3
4
import 'frutjam/css/base';              // tokens and reset, always needed
import 'frutjam/css/components/button';
import 'frutjam/css/components/card';
import 'frutjam/css/themes/darkberry';  // optional

或者根本没有构建步骤:

html
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/frutjam@2/dist/frutjam.components.css">
Frutjam 作为 Tailwind 插件安装,仅提供您使用的组件。作为样式表导入,它会提供所有这些内容,因为没有构建步骤读取您的标记。

没有构建步骤

放入标签并开始编写标记。将其用于原型或您不构建的页面,而不是用于生产,因为它附带了每个组件。

html
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/frutjam@2/dist/frutjam.components.css">

要在同一页面上试验 Tailwind 的实用程序,请在其旁边添加 Tailwind 的浏览器构建:

html
1
2
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/frutjam@2/dist/frutjam.min.css">
<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>

JavaScript 和 React:可选,非必需

Frutjam 是原生优先和 CSS 优先。绝大多数组件:按钮、徽章、卡片、表单、警报等:使用纯 HTML 和 CSS,无需任何 JavaScript。原生 HTML 元素如 <dialog>, <details>, 和 <input type="checkbox"> 处理浏览器已经支持的交互性。所有组件均可通过 WCAG AA 开箱即用,并可与 Django、HTMX、Laravel、React、Next.js 和任何堆栈配合使用。

少数组件没有本机 HTML 等效项(toast 通知、组合框过滤、轮播控件)。仅针对这些情况,Frutjam 提供了轻量级可选助手。

普通JS: frutjam/js

与框架无关的 ES 模块助手,用于需要它们的组件。附加到任何 DOM 元素,无需框架。

js
1
2
3
4
5
6
import { createModal } from 'frutjam/js'

const modal = createModal(document.getElementById('myModal'))
modal.open()   // calls showModal()
modal.close()  // calls close()
modal.toggle()

反应挂钩: frutjam/react

围绕相同的本机 DOM 调用的精简 React 包装器。每个钩子返回一个 ref 您附加到元素和方法来控制它,除了 React 本身之外没有额外的依赖项。

js
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import { useModal } from 'frutjam/react'

export default function App() {
  const modal = useModal()
  return (
    <>
      <button onClick={modal.open}>Open</button>
      <dialog ref={modal.ref} className="modal">...</dialog>
    </>
  )
}

适用于: useModal, useDrawer, useCollapsible, useTooltip, useTabs, useToast, useCarousel, useCombobox.

下一步

安装后,尝试 按钮组件 观看 Frutjam 的实际应用,或探索完整的 元件库.

AI编辑器集成

使用 Claude Code、Cursor 或其他 AI 编辑器?

Cherry MCP 将 Frutjam 的完整组件库直接带入您的 AI 编辑器上下文中,提供准确的类名称、实时文档,无需复制粘贴。

了解 Cherry MCP →

入门项目

使用 Django 构建?

一个 Django 6 项目与 Frutjam 已经连接,包括帐户、仪表板、主题和 Markdown 支持的 CRUD 示例。克隆它并开始构建。

获取 Django 入门 →

想要了解 Frutjam CSS 优先方法背后的想法吗? 了解我们为什么这样构建它 →

Found this useful?

Star Frutjam on GitHub. It's how other developers discover it.