主题设置

选择强调色与基础色,保存后全站生效。

强调色
基础色
点击切换锁定状态

更新日志

这里有什么新鲜事?

关于 FluxUI 中文网 · 官方 Livewire UI 库的简洁而有用的更新。

February 19, 2025

Flux 2 来了

起初只是个好奇——从零构建一个日期选择器

但这份好奇最终演变成了数月的专注开发,孕育出了 Flux 的全新版本。

现在,我们自豪地发布:

Flux v2

Flux v2 带来了强大的新组件,同时仍然保持轻量、无依赖。
本次版本包括:

  • 轻量级日期选择器 & 日历

  • 用于分析的折线图与面积图

  • 完整支持 Tailwind 4

  • 免费层(Free Tier)包含所有基础 UI 组件

  • Laravel 启动套件,让你开箱即用

零额外依赖

保持 Flux 的轻量是首要任务。
我们没有引入第三方日期选择器或图表库,而是选择从零构建
最终,这仅为打包体积增加了 13kb

为什么要为了区区几 KB 费这么大劲?

在调研第三方日期与图表库时,我们遇到了以下痛点:

  • 配置复杂且难以理解

  • 难以匹配自定义设计风格

  • 缺乏可访问性(Accessibility)和本地化支持

于是我们决定亲自动手。
现在,我们拥有完全契合自身需求的组件,而且可以自由扩展——
不需要插件,不需要 Pull Request,只需修改自己的代码。

日期选择器

日期选择器无处不在,但大多数库都臃肿且难以自定义样式。
在 Flux v2 中,添加一个优雅且完全无障碍(accessible)的日期选择器,只需一行:

<flux:date-picker />

和 Flux 的其他组件一样,我们为此组件注入了额外的关怀:

  • 移动端友好

  • 键盘可操作

  • 支持国际化

查看日期选择器文档 →

日历组件

有时候,你可能想直接在页面上展示一个完整的日历,而不是隐藏在下拉框中。
例如预约类页面(如 Shopify、Airbnb 常见的设计)。

Flux v2 提供了专用的 Calendar 组件:

<flux:calendar />

查看日历文档 →

日期范围选择器

日期范围选择器是分析界面和预订系统的必备组件。
在 Flux v2 中,只需添加 mode="range" 即可:

<flux:date-picker mode="range" months="2" with-presets />

无论是带预设(Presets)的高级版本,还是简单的双月选择,都轻松实现。

体验日期范围选择器 →

图表组件

我们原本没打算从零做图表库,但当我们动手实验时,灵感不断涌现,
最终,我们决定彻底重构图表体验。

“它们其实就是 SVG”

Flux 的图表库让你感觉自己在直接构建 SVG。
语法略微比其他组件详细,但体验极其直观——
你无需学习复杂配置,只是在写 <div> 和 Tailwind 样式。

例如一个简单的折线图(Sparkline):

<flux:chart wire:model="data" class="min-h-32">
    <flux:chart.svg>
        <flux:chart.line class="text-blue-500" stroke="currentColor" stroke-width="2" />
    </flux:chart.svg>
</flux:chart>

渲染结果相当于:

<div class="min-h-32">
    <svg viewBox="...">
        <path d="..." class="text-blue-500" stroke="currentColor" stroke-width="2" />
    </svg>
</div>

每个图表组件都直接映射到 HTML 或 SVG 元素。
你拥有完全的控制权,可以随心定制外观与渲染逻辑。

此外,你可以随时复制官方示例快速上手,
也可以深入 API 构建任意复杂图表。

组合式设计(Composable)

Flux 图表最大的魅力在于它的可组合性
你可以自由堆叠不同组件来实现各种效果:

<!-- 折线在上 -->
<flux:chart.area class="text-blue-500/50" />
<flux:chart.line class="text-blue-500" />

<!-- 面积在上 -->
<flux:chart.line class="text-blue-500" />
<flux:chart.area class="text-blue-500/50" />

渲染顺序直观:后写的在上层,就像堆叠 <div> 一样。
不再需要繁琐的配置项,一切都变得自然直觉。

查看图表文档 →

支持 Tailwind 4

Tailwind 4 简化了配置,让自定义样式可以直接写在 CSS 中。
Flux v2 利用这一特性,使样式引入更轻巧:

@import 'tailwindcss';
@import '../../vendor/livewire/flux/dist/flux.css';

这比 v1 的方式更加干净。
无需 @fluxStyles 指令,也无需额外的 tailwind.config.js 配置。

此外,Tailwind 4 的改进细节令人欣喜:
例如不再需要方括号来处理 data 属性样式:

<!-- Tailwind 3 -->
<div class="data-[checked]:bg-zinc-800">

<!-- Tailwind 4 -->
<div class="data-checked:bg-zinc-800">

阅读升级指南 →

改进的暗色模式控制

在 Flux v1 中,Flux 会自动为 <html> 添加或移除 .dark 类。
但许多用户希望能手动控制暗色模式。

因此,在 Flux v2 中,我们引入了新的属性:@fluxAppearance

...
    @fluxAppearance
</head>

通过它,你可以:

  • 轻松禁用暗色模式(不加此指令即可)

  • 或完全由服务器端逻辑控制 .dark

Laravel 启动套件 + 新的免费层

Flux 现已正式加入 Laravel 新版 Starter Kits(下周发布)。
为此,我们强化了免费层(Free Tier),
包含所有基础 Web 应用所需的核心组件:

按钮、模态框、下拉菜单、表单输入等。

高级组件将划归 Pro 版本
但所有老用户都将自动升级至 Pro 权限

查看 Flux Pro 组件完整列表 →

展望未来

Livewire 一直是最具生产力的 Web 开发方式之一,
但前端组件生态却长期不尽如人意。
Flux 的使命就是改变这一现状。

随着 Flux v2 的发布,我们终于奠定了坚实的基础。
接下来,我们将持续推出更多新组件与模板。

敬请期待!

December 24, 2024

富文本编辑器

版本 ^1.0.27

好吧,我们做到了。自今天起,Flux 现在自带富文本编辑器 🎉。

只需在你的应用中任意位置加入这一行,你就可以开始编辑:

<flux:editor wire:model="content" />

我们为这个组件打磨了许多细节,希望你能感受到。

可配置工具栏

<flux:editor toolbar="heading | bold italic strike ~ link" />

要配置编辑器的工具栏项目,你可以在 toolbar 属性中传入自定义排列的字符串,字符串由项目名称与分隔符(|)和占位空格(~)混合组成。

由于这些项目在 Flux 中都是简单的 Blade 组件,你可以轻松创建自己的 Blade 组件,并在 toolbar 属性中通过名称进行引用。

阅读更多关于配置工具栏 ->

自定义工具栏项

如果你想完全掌控工具栏,可以自己组合这些 Blade 组件来拼装一个编辑器。

下面是给编辑器工具栏添加自定义下拉菜单的示例:

<flux:editor>

    <flux:editor.toolbar>

        <flux:editor.heading />

        <flux:editor.separator />

        <flux:editor.bold />

        ...

        <flux:dropdown>

            <flux:editor.button icon="ellipsis-horizontal" tooltip="More" />

            <flux:menu>

                <flux:menu.item wire:click="..." icon="arrow-top-right-on-square">Preview</flux:menu.item>

                <flux:menu.item wire:click="..." icon="arrow-down-tray">Export</flux:menu.item>

                <flux:menu.item wire:click="..." icon="share">Share</flux:menu.item>

            </flux:menu>

        </flux:dropdown>

    </flux:editor.toolbar>

    <flux:editor.content />

</flux:editor>

如你所见,这和其他组件一样只是 Blade/HTML。你可以将任意你喜欢的 Flux 组件样式化并组装进编辑器的工具栏中。

阅读更多关于添加自定义工具栏项 ->

无需鼠标

编辑器的工具栏使用“游走的 tabindex”,因此当你在页面上 Tab 键导航时,不必逐一穿过每个工具栏项目。工具栏作为一个单一的 Tab 停靠点,你可以使用方向键在其中导航。

你也可以仅通过键盘在工具栏的子菜单中进行导航。

实际上,你可以轻松地在不触碰鼠标的情况下完成对该编辑器的一切操作。

Markdown 语法

尽管这是一个富文本编辑器,但它也支持 Markdown 语法,作为你编辑文档时控制样式的便捷方式。

快捷键

同你在 Google Docs 等其他编辑器中熟悉的标准键盘快捷键一样,这里也都可以使用。

例如:

  • Cmd+B 加粗

  • Cmd+I 斜体

  • Cmd+K 插入链接

查看可用快捷键 ->

作为表单字段

<flux:editor label="Release notes" description="说明此版本有哪些更新。" />

我们希望在表单中使用该组件时,它与 textarea 字段的使用体验没有任何区别。

这意味着要处理字段与字段集两个层面的禁用与无效状态,把标签/描述与编辑器进行关联,以及在点击字段标签时将焦点聚焦到编辑器上。

屏幕阅读器

如上图所示,我们努力确保编辑器的可访问性树尽可能详尽且可用。

屏幕阅读器可以轻松发现并使用编辑器中的所有功能。这也包括一些棘手的部分,比如工具栏子选择、工具提示以及插入链接的弹出层。

动态 JS 包

目前,Flux 的所有 JavaScript 都包含在一个 21.5KB 的文件中。

由于富文本编辑器及其依赖体量巨大,这个组件会给 Flux 的包体增加高达 85.3KB

问题在于,应用中的许多页面根本不会使用富文本编辑器,没有必要让它们承受更大的包体负担。

因此,我们将编辑器的 JavaScript 拆分成独立的包,并在需要时并行按需加载。只有在真正需要的那一刻,编辑器的 JS 才会被包含进来,以保证你应用的其他部分始终轻巧灵敏。这也覆盖了边界情况,比如在页面加载很久之后再惰性加载一个编辑器。

本地化

该组件中所有英文文案都可以通过将一组预定义的键复制到你的 lang/?.json 文件中来进行翻译。

阅读更多关于本地化 ->

基于 Tiptap 与 ProseMirror 构建

我们没有选择封装像 QuillTinyMCE 这类“电池全含”的编辑器,而是选择在底层使用 Tiptap 来实现编辑器的核心功能。

Tiptap 是对功能极其强大的 ProseMirror 项目的一层便捷封装。

它是完全无头的,这意味着我们可以完全掌控所有的标记、视觉与可访问性,而无需自己处理输入/格式化交互。

这也意味着我们可以像 Flux 其他组件一样,让工具栏具备同等程度的可定制性,因为我们完全掌控其 HTML/CSS/JS。

此外,为了支持并感谢 ProseMirror 项目,我们通过其 GitHub 赞助页面捐赠了 $1000。

未来

在发布之初,我们的目标是:一个像 Flux 其他组件一样,开发与使用体验都同样扎实可靠的编辑器。

现在我们已经达成这一目标,可以开始添加更高级的功能,比如图片支持与 @mentions。

敬请期待!

阅读完整编辑器文档 ->

December 17, 2024

Flux 的主题化

版本 ^1.1.0

不想让你的 Flux 应用看起来和别人一样?交给我们吧。Flux 现在完全支持主题化!

三色体系,一个主色

在理想情况下,你只需选择一个主色就能为整个应用着色。但现实并非如此。我们的经验是:一个完善的系统至少需要三种主色相关的颜色来覆盖所有色相:

  • 基础主色:用于主按钮背景等元素。

  • 前景色:叠加在基础主色之上,常用于文本。

  • 内容色:更强的主色变体,适用于文字等细线条元素。

然后可根据需要通过不透明度或 color-mix() 对这些颜色进行微调,但以上三种是构建配色的核心。

精选配色

我们为 Tailwind 调色板中的每一种颜色都策划了主题。每种组合都由人工挑选,以确保观感恰到好处。

例如,当黄色等主色过浅、无法满足对比度标准时,我们会选择深色前景而非白色。

深色模式

当然,每个主题都内置深色模式,但这可不是你所熟悉的那种“传统暗黑”。

许多地方我们采用了完全不同的风格处理,以确保明暗两种模式下的设计“感觉”一致。

例如,在亮色模式中,当你悬停在单选卡片上时,背景和边框会呈现主色的细腻色调;而在暗色模式中,卡片则仅变为更浅的灰色。

这是因为亮色模式下为元素加色会让它看起来更“亮”、更接近用户;而在暗色模式下加色会显得更“暗”,更远且与背景更融合。在这些情况下,我们会通过透明度混入更多白色,或干脆不加色。

选择性关闭主题着色

某些组件默认会应用主题着色,你可能希望它们以基础灰度呈现。

这时可以使用 accent 属性来“退出”主题版本。

例如,将链接渲染为黑/白,而不是你的主色:

<flux:link :accent="false">个人资料</flux:link>

选择你的灰度

Flux 默认采用 zinc 作为灰度。这种黑白设计看起来干净现代,但对某些主色并非总是最佳搭配。

我们已为特定主色预选了更佳的灰度组合。你只需在主题构建器中选择主色,我们会自动调整灰度以匹配。

当然,如果你有其他偏好,也可以自行选择灰度。

CSS 变量

 @layer base {

     :root {

         --color-accent: var(--color-amber-400);

         --color-accent-content: var(--color-amber-600);

         --color-accent-foreground: var(--color-amber-950);

     }

     .dark {

         --color-accent: var(--color-amber-400);

         --color-accent-content: var(--color-amber-400);

         --color-accent-foreground: var(--color-amber-950);

     }

 }

我们为所有主色使用 CSS 变量,以便你可以按需轻松自定义。

我们还选用了符合 Tailwind 4 命名约定的变量名,这样在 Tailwind 4 中你无需任何配置即可在 bg-accent 等工具类中直接使用它们。

你也会注意到这些变量具有自适应能力:在深色模式下它们会自动切换取值,因此无需再写诸如 bg-accent dark:bg-accent-dark 这样的样式。

迎接 Tailwind 4

Tailwind 4 即将发布,我们确保充分利用其新特性,并采用上述变量命名等约定。

Tailwind 4 的调色使用更现代的 oklab 色彩空间,而非你熟悉的标准 sRGB(hsl()、rgb() 等)。

/* Tailwind 3 */
--color-red-500: #ef4444;

/* Tailwind 4 */
--color-red-500: oklch(0.637 0.237 25.331);

这在现代显示器上解锁了此前无法呈现的全新色彩层次。

因此,你会发现 Flux 主题中的颜色比 Tailwind 3 时代更为鲜艳。

在过渡期内,我们从 Tailwind 4 公测版中将所有 CSS 颜色变量复制到了 Flux。待 Tailwind 4 正式发布后,我们将改用其内置变量并移除这些复制。

我们花费了无数时间研究与实验与主题相关的一切,对目前的成果非常满意,也希望你同样喜欢。

去试试交互式主题构建器 →

© 2025 FluxProMax™. All Rights Reserved.

备案号:皖ICP备13019729号-11

网站导航