Chuyển đến nội dung chính

Mã nguồn mở · Được MIT cấp phép · Miễn phí mãi mãi

Thư viện thành phần CSS Tailwind chỉ có thể truy cập bằng CSS để Phát triển nhanh

Frutjam là thư viện giao diện người dùng mã nguồn mở, có tốc độ cực nhanh được xây dựng dành cho các nhà phát triển quan tâm đến khả năng truy cập, tiêu chuẩn và khả năng tích hợp liền mạch với Tailwind CSS.

Tuân thủ W3C, thân thiện với SEO và dễ sử dụng.

Điểm tốc độ trang
100/100
Hiệu suất · Khả năng truy cập · SEO
Giấy phép
MIT
Miễn phí mãi mãi, không hạn chế
Phụ thuộc JS
0
CSS thuần túy, không cần JavaScript
Khả năng tiếp cận
WCAG
Tuân thủ AA / AAA ngay lập tức

Tùy biến cao

Được hỗ trợ bởi các lớp tiện ích CSS của Tailwind

Frutjam cung cấp cho bạn các lớp thành phần rõ ràng ngay từ đầu, đồng thời để lại mọi tiện ích Tailwind có sẵn để tùy chỉnh. Dễ dàng thay đổi khoảng cách, màu sắc, bố cục và tương tác bằng các lớp tiện ích trên các thành phần Frutjam.

Các thành phần có thể tùy chỉnh

Mỗi thành phần Frutjam được thiết kế để chấp nhận các tiện ích Tailwind, vì vậy bạn có thể điều chỉnh kiểu mà không cần viết CSS tùy chỉnh.

Kiểm soát tiện ích đầu tiên

Sử dụng các lớp Tailwind như text-lg, px-6bg-base-200 để điều chỉnh các thành phần trong vài phút.

Bắt đầu sau vài giây

Hai lần nhập và bạn đã sẵn sàng để xây dựng. Không có công cụ xây dựng, không có cấu hình, không có thời gian chạy.

Bước 1

Cài đặt qua npm

Thêm Frutjam vào dự án của bạn chỉ bằng một lệnh.

bash
npm install frutjam

Bước 2

Nhập CSS của bạn

Thêm cả Tailwind và Frutjam vào biểu định kiểu của bạn.

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

Bước 3

Sử dụng linh kiện sạch

Viết các lớp ngữ nghĩa thay vì chuỗi tiện ích dài.

html
1
2
3
<button class="btn btn-primary">
    Get Started
</button>

Xem nó hoạt động

Thành phần thực, mã thực - sao chép và vận chuyển.

Nút

html
1
2
3
4
5
6
<div class="flex flex-wrap gap-2">
    <button type="button" class="btn btn-primary">Primary</button>
    <button type="button" class="btn btn-outline">Outline</button>
    <button type="button" class="btn btn-soft btn-success">Success</button>
    <button type="button" class="btn btn-soft btn-error">Danger</button>
</div>

Huy hiệu & Nhãn

Primary Active Pending Error Default
html
1
2
3
4
5
6
7
<div class="flex flex-wrap gap-2">
    <span class="badge badge-primary">Primary</span>
    <span class="badge badge-success">Active</span>
    <span class="badge badge-warning">Pending</span>
    <span class="badge badge-error">Error</span>
    <span class="badge">Default</span>
</div>

Button Sizes

html
1
2
3
4
5
6
<div class="flex flex-wrap items-center gap-2">
    <button type="button" class="btn btn-primary btn-xs">XSmall</button>
    <button type="button" class="btn btn-primary btn-sm">Small</button>
    <button type="button" class="btn btn-primary">Base</button>
    <button type="button" class="btn btn-primary btn-lg">Large</button>
</div>

Thẻ

Card Title

A clean, accessible card component ready to use in any project.

html
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<div class="card card-sm card-outline">
    <div class="card-content">
        <h4 class="card-title">Card Title</h4>
        <p>A clean, accessible card component ready to use in any project.</p>
        <div class="flex gap-2 mt-3">
            <button type="button" class="btn btn-primary btn-sm">Action</button>
            <button type="button" class="btn btn-outline btn-sm">Cancel</button>
        </div>
    </div>
</div>

Tại sao nên sử dụng thư viện giao diện người dùng Frutjam?

Frutjam là thư viện giao diện người dùng mã nguồn mở, miễn phí chỉ dành cho CSS, được xây dựng bằng Tailwind CSS v4, tập trung vào khả năng truy cập và phát triển nhanh hơn. Nó không yêu cầu cấu hình JavaScript phức tạp hoặc các gói JS khổng lồ — khiến nó trở thành một giải pháp thay thế DaisyUI nhẹ nhàng cho các nhóm cần các thành phần tuân thủ WCAG mà không cần chi phí JavaScript.

Chỉ cần thêm @import "frutjam" vào biểu định kiểu của bạn để bắt đầu. Frutjam loại bỏ nhu cầu về danh sách lớp CSS Tailwind dài dòng trong HTML của bạn; chỉ cần sử dụng các lớp ngữ nghĩa rõ ràng để xây dựng các thành phần một cách dễ dàng. Dễ dàng tùy chỉnh chủ đề bằng các biến CSS đơn giản và tất cả các thành phần đều cập nhật ngay lập tức.

W3C web standards icon An icon representing W3C web standards with a document, code brackets, and W3C text.

Tiêu chuẩn W3C

HTML rõ ràng, hợp lệ cho các ứng dụng web hiện đại.

Accessibility icon A stylized human figure with arms outstretched inside a circle, representing accessibility and inclusion.

Khả năng tiếp cận đầu tiên

Mọi thành phần đều được xây dựng với ý tưởng về a11y.

Color contrast accessibility icon A symbol showing a split circle with currentColor and white halves and a color dropper, representing color contrast and accessibility.

Độ tương phản màu

Các thành phần vượt qua quy trình kiểm tra độ tương phản màu WCAG AA/AAA ngay từ đầu.

SEO Crawler Icon An icon showing the letters SEO and a small scanning robot inside a browser window.

Thân thiện với SEO

Đánh dấu ngữ nghĩa để hiển thị công cụ tìm kiếm tốt hơn.

Web developer icon A rounded code editor window with colored control buttons and several lines of code, representing a developer-friendly interface.

Thân thiện với nhà phát triển

API đơn giản, trực quan và tích hợp dễ dàng.

CSS code icon A developer window split into HTML and CSS sides with toolbar and code symbols.

CSS & HTML đầu tiên

Không khóa JavaScript - kiểu dáng và cấu trúc được ưu tiên hàng đầu.

Tailwind CSS Icon Tailwind CSS wave icon centered inside a currentColor circular border.

Hỗ trợ CSS Tailwind

Hoạt động hoàn hảo với quy trình làm việc Tailwind hiện tại của bạn.

RTL support icon A right-to-left text icon showing right-aligned text lines and a slightly lower left-pointing arrow.

Hỗ trợ RTL

Hoàn toàn tương thích với các ngôn ngữ từ phải sang trái.

Responsive design icon Minimalist icon showing a desktop monitor, tablet, and phone to represent responsive web design.

đáp ứng

Trông tuyệt vời trên mọi thiết bị, mọi kích thước màn hình.

Actively Developing Software An icon showing a code window with code brackets and a sparkle star inside, representing new features in active development.

Tích cực duy trì

Các thành phần, cập nhật mới và hỗ trợ cộng đồng.

Palette icon An icon showing a painter's palette with multiple paint spots.

Chủ đề chuyên nghiệp

Chuyển đổi giữa chế độ sáng và tối hoặc tạo chế độ riêng của bạn.

Prebuilt Layouts & Components An icon showing nested rectangles and blocks to represent modular UI layouts and reusable components.

Bố cục & thành phần dựng sẵn

Các khối xây dựng sẵn sàng sử dụng cho bất kỳ dự án nào.

Open Source An icon showing an open padlock with a code symbol to represent open source software.

Nguồn mở

MIT được cấp phép và hướng tới cộng đồng.

Plug icon Icon representing the plugin being connected to the socket

Hỗ trợ plugin

Mở rộng Frutjam bằng các plugin hữu ích như Trình soạn thảo văn bản Markdown.

Arrow down wide narrow

Giảm kích thước DOM

Một số lượng lớn các phần tử lồng nhau hoặc không cần thiết có thể khiến quá trình hiển thị bị chậm lại. Đơn giản hóa cấu trúc thành phần của bạn và cải thiện hiệu suất cũng như khả năng bảo trì.

100/100 trên Google PageSpeed ​​Insights

Đạt được điểm 100 hoàn hảo về Hiệu suất, Khả năng truy cập, Thực tiễn tốt nhất và SEO bằng thư viện Giao diện người dùng Frutjam. Trang web này được xây dựng hoàn toàn bằng Frutjam UI và đạt được tổng điểm 100/100 trên Google PageSpeed ​​Insights.

Trang web chạy nhanh hơn, cung cấp trải nghiệm người dùng tốt hơn và có thứ hạng tìm kiếm cao hơn. Trong web do AI điều khiển ngày nay, các trang web nhanh hơn được ưu tiên—các công cụ AI thường xuyên quét các trang web trong thời gian thực và chúng thích các trang nhanh, hiệu quả mà không lãng phí tài nguyên tính toán. Xây dựng thông minh hơn với thư viện giao diện người dùng sẵn sàng cho tương lai.

Hiệu suất
Khả năng tiếp cận
Thực tiễn tốt nhất
SEO

CSS thuần túy, không cần JavaScript. Framework bất khả tri và hoàn toàn tương thích ở mọi nơi.

Thư viện giao diện người dùng Frutjam không yêu cầu các gói JavaScript lớn vì nó được viết bằng CSS thuần túy. Điều này làm cho dự án của bạn nhẹ và được tối ưu hóa để có thời gian tải nhanh hơn và hiệu suất mượt mà hơn. Nó hoạt động hoàn hảo với mọi khung web hoặc chương trình phụ trợ, cho dù bạn đang sử dụng React, Vue, Angular, Next.js, Django, HTMX, Laravel hay chỉ là HTML đơn giản.

Dành cho các khung hiện đại

Khung của bạn nhanh. Hãy giữ nó như vậy.

Next.js, Svelte và Vue được thiết kế để mang lại hiệu suất vượt trội và SEO — kết xuất máy chủ, JS tối thiểu, hydrat hóa tức thì. Nhưng thời điểm bạn thêm một thư viện thành phần nặng chứa đầy JavaScript cồng kềnh cho một thứ đơn giản như một phương thức, bạn sẽ đánh đổi mọi thứ mà các khung đó hứa hẹn.

Frutjam là CSS đầu tiên và đầu tiên theo thiết kế. Không có gói JavaScript. Không có chi phí thời gian chạy. Không có sự thay đổi bố cục. Mức trần hiệu suất của hệ thống sẽ trở thành hiệu suất thực tế của bạn — không chỉ là hiệu suất lý thuyết.

Thay đổi bố cục bằng không

Các thành phần CSS thuần túy hiển thị ngay lập tức trên trang — không cần JavaScript để vẽ giao diện người dùng. Sự thay đổi bố cục tích lũy (CLS) của bạn vẫn ở mức 0, duy trì điểm Tốc độ trang hoàn hảo đó.

Không có chi phí JS

Mỗi KB JavaScript mà khung của bạn lưu lại từ việc chia tách gói, Frutjam không bao giờ thêm lại. Nút, thẻ, phương thức, huy hiệu - tất cả đều bằng CSS. Thời gian tương tác của bạn luôn nhanh chóng.

SEO mang lại hiệu quả

HTML ngữ nghĩa, đánh dấu hợp lệ W3C và độ tương phản màu WCAG ngay lập tức. Công cụ tìm kiếm đọc cấu trúc rõ ràng. Ghép nối một khung hiện đại với Frutjam và các trang của bạn sẽ được xếp hạng và hoạt động.

0ms
Thực thi JS cho giao diện người dùng
0
Thay đổi Bố cục (CLS)
W3C
Đánh dấu hợp lệ
AA+
Độ tương phản WCAG
😎

Không còn HTML xấu xí, ít tên lớp hơn, dễ bảo trì và phát triển nhanh hơn.

Không còn lớp học lộn xộn nữa: Một lớp làm được tất cả. Thay vì viết đi viết lại các lớp lộn xộn cho mọi thành phần, mọi trang và mọi dự án, hãy sử dụng tên lớp thành phần Frutjam để dễ dàng bảo trì và mở rộng quy mô cũng như phát triển nhanh hơn mà không phải đau đầu với các lớp lộn xộn.

html
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
// Styling a simple button in Tailwind css clutter of utility class
<button class="bg-gray-100 text-gray-900
text-sm px-3.5 border font-semibold duration-200 py-2
transition-all hover:border-gray-300 hover:bg-gray-200
focus-visible:outline-2 focus-visible:outline-offset-2
focus-visible:outline-gray-900 inline-flex gap-2
rounded-sm active:border-gray-300 active:bg-gray-200
active:shadow-none text-center align-middle cursor-pointer
border-gray-200 dark:border-gray-700 dark:bg-neutral-700
dark:text-gray-300 dark:hover:border-gray-950 dark:hover:bg-gray-950
dark:focus-visible:outline-gray-200 dark:active:border-gray-950
dark:active:bg-gray-900">
    Button
</button>

// Styling a simple button in frutjam component class
<button class="btn">
    Button
</button>
Kết quả:
html
<button type="button" class="btn">Button</button>

Chủ đề & Tùy chỉnh

Frutjam sử dụng các biến CSS đơn giản để tạo chủ đề. Thay đổi một biến và mọi thành phần sẽ cập nhật ngay lập tức — không cần xây dựng lại, không thay đổi lớp.

css
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
/* Override the default theme in your CSS */
:root {
    --color-primary: oklch(55% 0.2 250);
    --color-primary-content: #fff;
    --radius-base: 0.5rem;
    --font-base: "Inter", sans-serif;
}

/* Dark mode overrides */
[data-theme="dark"] {
    --color-base-100: oklch(15% 0.01 250);
    --color-base-content: oklch(90% 0.01 250);
}

Những gì bạn có thể tùy chỉnh

Colors

Chính, phụ, trọng âm, lỗi, thành công, cảnh báo và tất cả các sắc thái cơ bản - tất cả đều thông qua một biến CSS duy nhất.

Bán kính đường viền

--radius-base chia tỷ lệ tất cả các thành phần cùng một lúc — thay đổi một biến, mọi thành phần đều cập nhật.

Typography

Họ phông chữ, tỷ lệ kích thước và chiều cao dòng - đặt hệ thống kiểu của bạn một lần và tất cả các thành phần sẽ kế thừa nó.

Khoảng cách & Kích thước

Các biến thể kích thước và phần đệm thành phần — sử dụng công cụ sửa đổi kích thước tích hợp hoặc ghi đè mã thông báo khoảng cách trên toàn cầu.

Thư viện thành phần

Một bộ sưu tập ngày càng tăng các thành phần dựng sẵn, có thể truy cập được cho mọi trường hợp sử dụng.

Xem tất cả các thành phần

Nút & Biểu mẫu

Các biến thể nút, đầu vào, hộp kiểm, lựa chọn và bố cục biểu mẫu đầy đủ.

Phương thức & Hộp thoại

Các hộp thoại, ngăn kéo và lời nhắc xác nhận có thể truy cập được.

Điều hướng

Thanh điều hướng, thanh bên, đường dẫn và điều hướng tab.

Thẻ & Bố cục

Các biến thể thẻ, hệ thống lưới và khung bố cục trang.

Cảnh báo & nâng cốc chúc mừng

Cảnh báo trạng thái, biểu ngữ thông báo và tin nhắn phản hồi nội tuyến.

Huy hiệu & Thẻ

Huy hiệu trạng thái, thẻ danh mục và thành phần nhãn.

Danh sách & Bảng

Bảng dữ liệu, danh sách có thứ tự/không có thứ tự và danh sách định nghĩa.

Plugin

Trình chỉnh sửa Markdown, công cụ đánh dấu cú pháp và nhiều tiện ích mở rộng hữu ích hơn.

Plugin cộng đồng

Được yêu thích bởi các nhà phát triển phụ trợ. Trình chỉnh sửa Markdown gốc đầu tiên.

Hầu hết các biên tập viên đều phá vỡ quy trình làm việc web tiêu chuẩn. MarkdownEditor nắm lấy nó — nằm ngay trên <textarea> để phần phụ trợ của bạn không bao giờ biết bất kỳ điều gì đã thay đổi. Nó chỉ hoạt động với form Method="POST", quyền truy cập DOM tiêu chuẩn và mọi khung máy chủ sẵn có.

Thay thế một <textarea> đơn giản bằng một dòng JS và người dùng của bạn sẽ có được trải nghiệm tốt hơn gấp 10 lần trong khi bộ điều khiển Django, Laravel hoặc PHP của bạn vẫn giữ nguyên như cũ.

  • No data binding needed — works with form method="POST" out of the box
  • Standard access — read and write with element.value like any input
  • Backend agnostic — PHP, Django, Node.js, Laravel, Rails — all just read a plain string
  • ~116 KB — hybrid WYSIWYG + plain mode, RTL, image upload, live preview, zero CSS conflicts
View Full Documentation

Live demo — try it out:

Drop-in replacement — one class, one line of JS. Backend unchanged.

Native Form Integration

Enhances a standard <textarea>. Submit with a normal <form> and access content via request.POST['name']. No preventDefault(), no FormData construction.

Advanced Image Upload

Configure server uploads via API. Images go directly to your CDN — no Base64 bloat in your database, no SEO penalty, no memory-heavy payloads.

High Performance

Debounced preview updates, cached style calculations, and conflict-free keyboard handling. Handles thousands of lines without input lag — and all editor styles are fully scoped so it lives safely alongside any CSS framework.

How does Frutjam compare?

See how Frutjam stacks up against plain Tailwind CSS, Bootstrap, and DaisyUI as a free, accessible alternative.

Feature Frutjam DaisyUI Plain Tailwind Bootstrap
CSS-only (no JavaScript required) một phần
Semantic component classes
WCAG AA contrast guaranteed on every component Manual Manual một phần
Works alongside Tailwind utilities
CSS variables theming Limited
100/100 PageSpeed achievable Varies Varies
RTL support một phần một phần
Framework agnostic (Django, HTMX, Laravel)
Theme via plain CSS variables, no config file một phần Manual
AI editor integration (MCP / context) ✓ Free Paid

AI Editor Integration

Using Claude Code, Cursor, or Copilot?

Cherry MCP connects Frutjam directly to your AI editor. Get accurate component code, correct class names, and up-to-date docs — without copy-pasting from the browser.

Try Cherry MCP
Correct Frutjam class names, every time
Up-to-date component docs in your AI context
Works with Claude Code, Cursor, Windsurf, and more

Câu hỏi thường gặp

Everything you need to know about Frutjam.

Is Frutjam free to use?

Yes — Frutjam is MIT licensed and completely free. Use it in personal projects, client work, and commercial products with no restrictions, no attribution required.

Is Frutjam suitable for commercial projects?

Yes. Frutjam is open source under the MIT license, which permits free use in both personal and commercial products without any royalties or restrictions.

Does Frutjam replace Tailwind CSS?

No — Frutjam builds on top of Tailwind. Think of it as a layer that adds semantic component classes (.btn, .card, .badge) while keeping all Tailwind utility classes available alongside it.

Do I need JavaScript to use Frutjam?

No JavaScript required. Frutjam is pure CSS — components like buttons, cards, badges, and forms work entirely without a JS runtime. For interactive patterns like modals or dropdowns, it pairs well with lightweight libraries like Alpine.js or HTMX.

Tôi có thể sử dụng Frutjam với React, Vue hoặc Angular không?

Có - Frutjam hoàn toàn không phụ thuộc vào khuôn khổ. Nó hoạt động với mọi hệ thống tạo khuôn mẫu hoặc khung JS bao gồm React, Vue, Angular, Svelte, Next.js, Nuxt, Laravel, Django và HTML đơn giản. Chỉ cần nhập CSS và sử dụng các lớp.

Trình đọc màn hình có thể truy cập Frutjam không?

Đúng. Frutjam tuân theo các nguyên tắc của WAI-ARIA với các vai trò phù hợp, hỗ trợ điều hướng bằng bàn phím và độ tương phản màu WCAG AA/AAA ngay lập tức — giúp tất cả người dùng có thể truy cập được mà không cần cấu hình thêm.

Tốc độ trang có cải thiện khi sử dụng Frutjam không?

Đúng. Phương pháp tiếp cận CSS đầu tiên của Frutjam tránh hoàn toàn JavaScript chặn hiển thị. Kết hợp với đánh dấu hợp lệ W3C, độ tương phản màu phù hợp và ngữ nghĩa HTML gốc, nó góp phần trực tiếp vào các Chỉ số quan trọng về trang web cốt lõi và điểm Tốc độ trang 100/100 tốt hơn.

Làm cách nào để tùy chỉnh màu sắc, phông chữ và bán kính?

Ghi đè các biến CSS trong biểu định kiểu của bạn — đặt --color-primary, --font-base, --radius-base, v.v. Mọi thành phần nhận thay đổi ngay lập tức mà không cần xây dựng lại hoặc bất kỳ thay đổi lớp nào trong HTML của bạn.

Từ blog

Những suy nghĩ về việc xây dựng Frutjam và cách tiếp cận CSS đầu tiên đối với giao diện người dùng.

Xem tất cả bài viết

Mã nguồn mở & miễn phí mãi mãi

Tham gia cộng đồng

Frutjam là nguồn mở và hướng tới cộng đồng. Mọi thành phần, bản sửa lỗi và ý tưởng từ cộng đồng đều giúp mọi người trở nên tốt hơn.

Tìm thấy một lỗi? Có một yêu cầu tính năng? Bạn muốn đóng góp một thành phần hoặc cải thiện tài liệu? Chúng tôi rất muốn có bạn.