主题设置

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

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

更新日志

这里有什么新鲜事?

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

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 正式发布后,我们将改用其内置变量并移除这些复制。

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

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

December 12, 2024

深色模式控制

版本 ^1.0.30

Flux 一直支持深色模式:当你的系统外观改变时,Flux 会随之适配。

不过,这种“跟随系统”的支持,与提供可独立于系统偏好、由站点自行完全控制的深色模式之间,存在着不小的差距。

在进入细节之前,先看看现在要创建一个如上图所示的深色模式切换器有多么简单。下面就是该切换器所使用的完整代码:

<flux:radio.group variant="segmented" x-model="$flux.appearance">

    <flux:radio value="light" icon="sun">浅色</flux:radio>

    <flux:radio value="dark" icon="moon">深色</flux:radio>

    <flux:radio value="system" icon="computer-desktop">系统</flux:radio>

</flux:radio.group>

这里还有一个更简单的切换按钮代码片段:

<flux:button x-on:click="$flux.dark = ! $flux.dark" ... />

新的 JavaScript API

正如你在上面的代码片段中所看到的,Flux 现在在 Alpine 表达式中提供了一个魔法对象 $flux 可供使用。

这个魔法对象上有两个与深色模式相关的属性:.dark.appearance

你可以通过布尔属性 $flux.dark 获取/设置应用的深色状态。也可以通过 $flux.appearance 获取/设置应用的主题偏好(该属性的取值为三者之一:lightdarksystem)。

有了这两个简单的属性,你就可以实现任意形式的深色模式控制组件。例如:下拉选择、菜单、按钮、开关、单选组、卡片,或分段单选等。只受你的想象力限制。

如果你需要在 Alpine 之外进行控制,我们还在全局 window 上提供了一个 Flux 对象:window.Flux

现在,你可以这样做:

let button = document.querySelector('...')

button.addEventListener('click', () => {

    Flux.dark = ! Flux.dark

})

底层是如何工作的?

开箱即用地,Flux 会在你页面的 <body> 元素上添加/移除 .dark 类。

这意味着你可以很容易地通过如下 Tailwind 配置,让 Tailwind 根据该类而不是系统偏好来切换:

module.exports = {

    darkMode: 'selector',

    ...

}

Flux 还处理了诸多细节,例如将用户的外观偏好存到 localStorage 中,以便在页面加载之间保持该选择。

我们也会在运行时监听系统偏好的变化,从而无需等待页面重新加载就能让站点自适应。

这些事儿自己做并不算火箭科学,但确实比你期望的要复杂。用起来吧。

阅读完整文档,获取更多解释与示例 ->

November 13, 2024

多选

版本 ^1.0.23

我们在发布时暂缓了多选功能,因为我们觉得有很多细节需要打磨。但现在它来了。在 Flux 1.0.23 及以上版本中,你现在可以传入 multiple 属性,将单选选择器变为多选:

<flux:select variant="listbox" multiple>

    <flux:option>Photography</flux:option>

    ...

</flux:select>

当然,数据绑定也如你所料。通过在 wire:model 中传入一个 Livewire 属性名,Livewire 会让该属性的状态与你的选择保持同步:

<flux:select wire:model="selected" variant="listbox" multiple>

<?php

class extends Livewire\Component

{

    public $selected = [];

    

    ...

}

我们对多选的未来有更多计划,例如新增用于选择药丸、标签、头像等的变体,但就目前而言,这是一个很好的开始。

阅读更多关于多选 ->

自定义选中后缀

在你第一次选择后,Flux 会显示已选择的项数,并在后面跟上“selected”一词。

如果你想让它更具上下文含义,可以通过 selected-suffix 属性进行自定义:

<flux:select selected-suffix="industries selected" variant="listbox" multiple>

阅读更多关于选中后缀 ->

复选框指示器

默认的对勾图标现在在多选时可配置。如果你想要复选框作为可视化指示器,可以使用新的 indicator 属性:

<flux:select indicator="checkbox" variant="listbox" multiple>

阅读更多关于自定义选择指示器 ->

完整变更日志

  • 支持多选

  • 当点击选择列表的可清除按钮时分发 input 事件,以便 wire:model.live 捕获更改

在 GitHub 查看完整发布

© 2025 FluxProMax™. All Rights Reserved.

备案号:皖ICP备13019729号-11

网站导航