菜单

Bulma 自定义工具

相关源文件

Bulma Customizer Tool 是一个交互式 Web 应用程序,允许用户通过修改 CSS 变量来定制 Bulma CSS 框架。它提供了一个直观的界面,无需编写代码即可调整颜色、排版、间距和特定组件的样式。本文档将解释 customizer 的工作原理、其架构和实现细节。

有关不同框架变体的信息,请参阅 框架变体

概述

Bulma Customizer Tool 通过 CSS 变量实现 Bulma 外观的实时定制。用户可以修改全局设置和特定组件的变量,立即预览更改,并将生成的 CSS 导出以供项目使用。

主要功能

  • 交互式可视化定制界面
  • 实时预览更改
  • 有条理地访问 800 多个 CSS 变量
  • 修改全局和特定组件样式的变量
  • 将自定义内容持久化到浏览器 localStorage
  • CSS 导出功能

来源:docs/_react/bulma-customizer/src/App.jsx1-590 docs/_react/bulma-customizer/src/components/Export.jsx1-121

架构

Customizer 是一个集成到 Bulma 文档网站的 React 应用程序。它构建于现代 React 实践之上,包括 Context API、函数组件和 Hooks。

高层架构

来源:docs/_react/bulma-customizer/src/App.jsx1-590 docs/_react/bulma-customizer/src/main.jsx1-10

组件结构

来源:docs/_react/bulma-customizer/src/App.jsx1-590 docs/_react/bulma-customizer/src/components/VarItem.jsx1-103 docs/_react/bulma-customizer/src/components/Slider.jsx1-168 docs/_react/bulma-customizer/src/components/Color.jsx1-265 docs/_react/bulma-customizer/src/components/Export.jsx1-121

核心组件

App 和 Context

App 组件作为入口点,为整个应用程序提供状态管理。它创建了一个 React context (CustomizerContext) 以与所有子组件共享状态和函数。

App 组件的关键职责

  • 从计算样式加载初始 CSS 变量值
  • 管理当前选项卡和页面状态
  • 用户更改变量时更新 CSS 变量
  • 根据当前选择渲染相应的页面组件
  • 实时将更新的 CSS 变量应用于页面
  • 将自定义内容存储在 localStorage 中

Context 提供

来源:docs/_react/bulma-customizer/src/App.jsx147-226 docs/_react/bulma-customizer/src/App.jsx529-590

CSS 变量管理

Customizer 在初始化时读取所有 Bulma CSS 变量,跟踪每个变量的原始值和当前值。CSS 变量对象的结构是

当变量被修改时,Customizer 会

  1. 更新 React context 中的变量状态
  2. 生成动态 CSS 来覆盖该值
  3. 通过 style 元素将此 CSS 注入页面
  4. 将更新后的值存储在 localStorage 中

来源:docs/_react/bulma-customizer/src/App.jsx273-455 docs/_react/bulma-customizer/src/App.jsx457-494

用户界面组件

Slider 组件

Slider 组件提供了一种交互方式来调整数值。它用于操作颜色属性(色相、饱和度、亮度)和其他数值 CSS 变量。

特性

  • 拖动功能用于调整值
  • 实时更新 CSS 变量
  • 基于正在调整的值的类型进行视觉反馈

来源:docs/_react/bulma-customizer/src/components/Slider.jsx1-168

Color 组件

Color 组件用于调整颜色值。它提供了

  • 色相、饱和度和亮度的独立滑块
  • 十六进制颜色输入
  • 实时颜色预览
  • 重置功能

来源:docs/_react/bulma-customizer/src/components/Color.jsx1-265

VarItem 组件

VarItem 组件显示并允许编辑单个 CSS 变量

  • 显示变量名称和描述
  • 根据变量类型提供适当的输入控件
  • 允许重置为默认值

来源:docs/_react/bulma-customizer/src/components/VarItem.jsx1-103

Export 组件

Export 组件生成并显示应用了所有自定义项的 CSS 代码

  • 生成仅针对已修改变量的 CSS
  • 提供复制到剪贴板功能
  • 按选择器范围组织 CSS

来源:docs/_react/bulma-customizer/src/components/Export.jsx1-121

数据组织

选项卡和页面结构

Customizer 将变量组织到选项卡和页面中,以便于导航

来源:docs/_react/bulma-customizer/src/App.jsx99-144

CSS 变量定义

Customizer 拥有所有 CSS 变量的预定义元数据,按组件或类别组织。每个变量都有描述和相关元数据。

颜色变量定义的示例

变量 ID描述
primary-h主色的色相
primary-s主色的饱和度
primary-l主色的亮度
link-h链接颜色的色相
link-s链接颜色的饱和度
link-l链接颜色的亮度
info-h信息颜色的色相
......

来源:docs/_react/bulma-customizer/src/constants.js77-105

实现细节

初始化过程

Customizer 初始化时

  1. 它会尝试从 localStorage 加载先前保存的自定义项
  2. 查询文档的计算样式以获取当前的 CSS 变量值
  3. 创建所有 CSS 变量及其元数据的内部表示
  4. 设置用户交互的事件处理程序
  5. 使用第一个选项卡和页面初始化 UI

来源:docs/_react/bulma-customizer/src/App.jsx227-237 docs/_react/bulma-customizer/src/App.jsx273-455

CSS 变量更新流程

来源:docs/_react/bulma-customizer/src/App.jsx189-202 docs/_react/bulma-customizer/src/App.jsx457-494

导出功能

Export 组件根据修改后的变量生成 CSS

  1. 过滤掉未修改的变量(当前值等于初始值)
  2. 按 CSS 选择器范围对变量进行分组
  3. 将它们格式化为带有适当选择器的 CSS 声明
  4. 提供复制到剪贴板功能

生成的 CSS 可以在主 Bulma CSS 之后包含到项目中,以覆盖默认值。

来源: docs/_react/bulma-customizer/src/components/Export.jsx39-68

用途

集成到 Bulma 文档中

定制器已集成到 Bulma 文档站点中,包含以下元素

  1. 一个容器 div(#bulma-customizer-app),用于托管 React 应用程序
  2. 隐藏的 Bulma 组件,用于样式计算
  3. 定制器本身所需的脚本和 CSS 资源

来源: docs/_includes/global/customizer.html1-40 docs/customizer.html1-10

构建流程

Bulma Customizer 使用 Vite 构建,Vite

  1. 编译 React 组件和依赖项
  2. 生成 CSS 和 JavaScript 输出
  3. 将构建的文件放置在 Bulma 文档的 assets 目录中

来源: docs/_react/bulma-customizer/vite.config.js1-24

结论

Bulma Customizer 工具提供了一种强大而用户友好的方式来个性化 Bulma CSS 框架。通过利用 CSS 变量和 React 的动态功能,它能够生成干净、生产就绪的 CSS 输出,同时提供即时的视觉反馈。该工具对于希望快速创建 Bulma 自定义主题而无需编写 CSS 或深入研究文档以查找变量名的开发人员尤其有价值。