Preline UI logo

Preline UI

基于 Tailwind CSS 的开源组件库,提供 840+ 预构建 UI 组件和 190+ 启动模板

ReactTailwind CSS开源组件库Figma 设计系统

Preline UI 提供 840+ 免费 UI 组件和 190+ 模板,以丰富的组件数量和高质量 Figma 设计文件闻名,通过 Tailwind CSS 工具类实现样式并内置 JavaScript 插件处理交互行为。

Preline UI

基于 Tailwind CSS 的开源组件库,提供 840+ 预构建 UI 组件、190+ 启动模板和免费 Figma 设计系统。

技术简介说明

Preline UI 是由 HTMLStream 团队开发的基于 Tailwind CSS 的组件库,提供超过 840 个免费 UI 组件和 190+ 启动模板。它以丰富的组件数量和高质量的 Figma 设计文件而闻名,是 Tailwind 生态中组件数量最多的库之一。

Preline UI 的核心理念是"设计到开发"的一致性。它提供免费的 Figma 设计系统文件,与组件库完全同步,确保设计师和开发者使用同一套设计语言。组件通过 Tailwind CSS 工具类实现,并通过内置的 JavaScript 插件处理交互行为(模态框、下拉菜单、标签页等)。

截至 2026 年 5 月,Preline UI 已发布 v4.2.0 版本,全面支持 Tailwind CSS v4,并提供 10+ 框架的安装指南。GitHub 上拥有约 6.3K stars,采用 MIT 许可证,同时提供 Pro 付费版本。

基本信息

快速上手

安装

# npm 安装
npm i preline
// tailwind.config.js
module.exports = {
  content: [
    './node_modules/preline/preline.js',
    './src/**/*.{html,js,ts,jsx,tsx}'
  ],
  plugins: [
    require('preline/plugin')
  ]
}

基础配置

<!-- CDN 快速引入 -->
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/preline.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/preline.min.js"></script>
// 在入口文件中初始化
import 'preline/preline'

最小示例

<!-- 下拉菜单 -->
<div class="hs-dropdown relative inline-flex">
  <button id="hs-dropdown-default"
    type="button"
    class="hs-dropdown-toggle py-3 px-4 inline-flex items-center gap-x-2 text-sm font-medium rounded-lg border border-gray-200 bg-white text-gray-800 shadow-sm hover:bg-gray-50 disabled:opacity-50 disabled:pointer-events-none dark:bg-neutral-800 dark:border-neutral-700 dark:text-white dark:hover:bg-neutral-700"
    aria-haspopup="menu"
    aria-expanded="false"
    aria-label="Dropdown">
    下拉菜单
    <svg class="hs-dropdown-open:rotate-180 size-4" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m6 9 6 6 6-6"/></svg>
  </button>
 
  <div class="hs-dropdown-menu transition-[opacity,margin] duration hs-dropdown-open:opacity-100 opacity-0 hidden min-w-60 bg-white shadow-md rounded-lg mt-2 dark:bg-neutral-800 dark:border dark:border-neutral-700"
    role="menu"
    aria-orientation="vertical"
    aria-labelledby="hs-dropdown-default">
    <div class="p-1 space-y-0.5">
      <a class="flex items-center gap-x-3.5 py-2 px-3 rounded-lg text-sm text-gray-800 hover:bg-gray-100 focus:outline-hidden focus:bg-gray-100 dark:text-neutral-400 dark:hover:bg-neutral-700 dark:hover:text-neutral-300 dark:focus:bg-neutral-700"
        href="#">
        选项一
      </a>
      <a class="flex items-center gap-x-3.5 py-2 px-3 rounded-lg text-sm text-gray-800 hover:bg-gray-100 focus:outline-hidden focus:bg-gray-100 dark:text-neutral-400 dark:hover:bg-neutral-700 dark:hover:text-neutral-300 dark:focus:bg-neutral-700"
        href="#">
        选项二
      </a>
    </div>
  </div>
</div>

核心概念与架构

组件架构

Preline UI 采用"CSS + JS 插件"的分层架构:

  1. CSS 层:所有组件通过 Tailwind CSS 工具类实现样式
  2. JS 插件层:内置 JavaScript 插件处理交互行为
  3. Figma 层:免费 Figma 设计系统与设计稿同步
  4. 模板层:190+ 预组合的页面模板

JavaScript 交互插件

插件功能
HSOverlay模态框/抽屉覆盖层
HSDropdown下拉菜单
HSTabs标签页切换
HSAccordion手风琴展开
HSSelect自定义选择器
HSToggleCount计数切换
HSRemoveElement元素移除
HSTooltip工具提示
HSPopover弹出框

组件模式

<!-- 所有交互组件通过 data-* 属性声明 -->
<div data-hs-overlay="#hs-overlay-example">
  <button type="button"
    class="hs-overlay-toggle py-3 px-4 inline-flex items-center gap-x-2 text-sm font-medium rounded-lg border border-transparent bg-blue-600 text-white hover:bg-blue-700">
    打开模态框
  </button>
</div>
 
<div id="hs-overlay-example"
  class="hs-overlay hidden size-full fixed top-0 start-0 z-[80] overflow-x-hidden overflow-y-auto"
  role="dialog"
  tabindex="-1"
  aria-labelledby="hs-overlay-example-label">
  <!-- 模态框内容 -->
</div>

核心特性

  • 840+ 组件:覆盖导航、表格、表单、卡片、模态框、下拉菜单等
  • 190+ 模板:电商、仪表盘、着陆页等场景模板
  • JS 交互插件:内置插件处理模态框、下拉菜单等交互
  • 深色模式:所有组件支持 dark: 前缀切换
  • 免费 Figma:完整的设计系统 Figma 文件
  • 多框架支持:React、Vue、Next.js、Nuxt、Laravel、Astro 等
  • RTL 支持:支持从右到左的布局方向
  • 可访问性:企业级 ARIA 属性支持
  • Pro 版本:高级企业组件和专属模板

生态图

核心产品

项目说明
Preline UI核心开源组件库
Preline Pro商业付费版本
Preline Templates190+ 页面模板

框架支持

框架支持状态说明
HTML (Vanilla)✅ 完整支持原生 JavaScript
React✅ 官方指南详细安装文档
Vue✅ 官方指南详细安装文档
Next.js✅ 官方指南App Router 支持
Nuxt✅ 支持v3 支持
Laravel✅ 官方指南Blade 模板 + YouTube 教程
Astro✅ 支持官方文档
Svelte⚠️ 社区支持非官方
Qwik⚠️ 有限支持存在 SPA 卸载问题

设计工具

工具说明
Figma 设计系统免费 Figma 文件
Claude Code SkillAI 主题生成器

适用场景

  • 快速原型开发:840+ 组件即拿即用
  • 营销网站/着陆页:丰富的模板库
  • 管理后台/仪表盘:专业模板和组件
  • 电商网站:完整电商组件集
  • 设计到开发协作:Figma 系统与设计高度一致
  • Tailwind CSS 项目:原生集成最佳搭配
  • 多框架团队:覆盖主流前端框架

开发与工程化

开发流程

  1. 通过 npm 安装 Preline 依赖
  2. 配置 Tailwind CSS 引入 Preline 插件和 content 路径
  3. 按需使用 HTML + Tailwind 类名组合组件
  4. 引入 Preline JavaScript 处理交互行为
  5. 使用 Figma 设计文件保持设计与代码一致

框架开发

# Next.js 项目
npm i preline
# 在 next.config.js 中配置 transpilePackages
 
# Laravel 项目
npm i preline
# 在 webpack.mix.js 或 vite.config.js 中引入

构建部署

npm run build  # Tailwind 编译 + 项目构建

SPA 注意事项

Preline 使用直接 DOM 操作(非虚拟 DOM),在 SPA 框架中需要注意:

// React 中手动初始化
import { useEffect } from 'react'
import { HSStaticMethods } from 'preline/preline'
 
useEffect(() => {
  HSStaticMethods.autoInit()
}, [])

性能与安全

性能特点

维度说明
CSS 体积通过 Tailwind PurgeCSS 优化
JS 体积轻量插件,按需加载
运行时直接 DOM 操作,无框架依赖
Tree-shaking通过 npm 包支持按需导入

优化建议

  • 生产环境确保 PurgeCSS 启用
  • 避免 CDN 和生产环境混用
  • SPA 框架注意组件挂载/卸载时的 DOM 清理
  • 复杂页面使用懒加载

安全注意事项

  • 避免直接使用 innerHTML 渲染用户输入
  • 注意 XSS 防护
  • 模态框等交互组件注意焦点管理

技术对比

维度Preline UIFlowbiteDaisyUIshadcn/ui
组件数量840+600+50+ 主题组件50+
底层Tailwind CSSTailwind CSSTailwind CSSTailwind + Radix
JS 交互内置插件内置 JS纯 CSS(无 JS)客户端组件
深色模式
框架支持多框架多框架多框架React 优先
许可证MITMITMITMIT
Figma 集成✅ 免费✅ 免费⚠️ 社区⚠️ 社区
GitHub Stars~6.3K~33K~35K~118K
社区规模中等最大
代码所有权库依赖库依赖库依赖复制源码

关键差异

  • vs Flowbite:Preline 组件更多(840+ vs 600+),Figma 集成更好;Flowbite 社区更大、框架包更成熟
  • vs DaisyUI:Preline 组件更丰富含 JS 交互;DaisyUI 更轻量纯 CSS
  • vs shadcn/ui:shadcn 给予完全代码所有权;Preline 组件数量更多

最佳实践

组件使用

  1. 确保 Tailwind 正确配置:先配置好 Tailwind 再引入 Preline
  2. 配合 Headless UI 使用:Preline 负责样式,Headless UI 负责行为
  3. 深色模式统一处理:使用 dark: 前缀或系统级切换
  4. 使用官方 Figma 文件:确保设计稿与实现一致
  5. 遵循 Tailwind 约定:通过配置扩展而非覆盖类名

SPA 框架最佳实践

// Next.js / React 中的初始化
'use client'
import { useEffect } from 'react'
import { HSStaticMethods } from 'preline/preline'
 
export default function Layout({ children }) {
  useEffect(() => {
    const initPreline = async () => {
      const { HSStaticMethods } = await import('preline/preline')
      HSStaticMethods.autoInit()
    }
    initPreline()
  }, [])
 
  return <>{children}</>
}

常见陷阱

  • 忘记在 tailwind.config.js 中添加 Preline 的 content 路径
  • 忘记引入 Preline JavaScript 导致交互组件失效
  • SPA 框架中忘记处理组件生命周期导致的 DOM 残留
  • 与 Livewire 等动态渲染框架配合时存在 JS 初始化冲突

技术局限与边界

限制说明
社区较小相比 Flowbite/DaisyUI,第三方资源和教程较少
Pro 组件付费部分高级组件需购买 Pro 版本
深度主题化受限不适合完全脱离 Tailwind 默认值的设计
Livewire 不兼容下拉/选择器与 Laravel Livewire 存在冲突
SPA 卸载问题直接 DOM 操作在 SPA 框架中清理不彻底
输入框自动填充 Bug自动填充可能误触验证错误(Issue #370

不太适合的场景

  • 需要完全代码所有权的项目(考虑 shadcn/ui)
  • 与 Livewire 等动态渲染框架配合的项目
  • 追求最大社区支持的项目(考虑 Flowbite 或 DaisyUI)
  • 需要极简 bundle 大小的项目

学习资源

官方资源

社区资源

视频教程

2026 年现状

最新版本

版本发布日期亮点
v4.2.02026.5.10新组件、10+ 框架指南
v4.1.32026.3文档更新、修复改进
v3.0.02025 初支持 Tailwind CSS v4

发展趋势

  • Tailwind CSS v4 全面支持:v3.0.0 起完全兼容
  • 框架指南扩展:10+ 框架安装指南持续更新
  • AI 工具集成:推出 Claude Code Skill 主题生成器
  • Pro 版本扩展:更多企业级组件和模板

社区活跃度

  • 6.3K+ GitHub Stars
  • 活跃的更新日志(月更)
  • GitHub Discussions 社区支持

未来路线图

  • 更多组件和模板
  • 改进 SPA 框架兼容性
  • 扩展 AI 工具集成
  • 优化可访问性支持