news 2026/7/22 19:08:44

如何使用 JSON Formatter 深度定制主题:从浅色到深色模式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何使用 JSON Formatter 深度定制主题:从浅色到深色模式

如何使用 JSON Formatter 深度定制主题:从浅色到深色模式

【免费下载链接】json-formatter-jsRender JSON objects in beautiful HTML (pure JavaScript)项目地址: https://gitcode.com/gh_mirrors/js/json-formatter-js

JSON Formatter 是一款纯 JavaScript 工具,能将 JSON 对象渲染为美观的 HTML 格式。它不仅提供清晰的 JSON 结构展示,还支持主题定制功能,让你可以根据使用场景轻松切换浅色与深色模式,提升阅读体验。

快速了解主题配置核心文件

主题定制的核心代码位于 src/style.less 文件中。该文件通过 Less 预处理器定义了主题的配色方案和样式规则,主要包含以下关键部分:

  • 主题混合器(.theme):定义了可复用的主题样式模板,包含文本颜色、背景色等基础样式变量
  • 默认主题:应用默认浅色配色方案
  • 深色主题:通过.json-formatter-dark类定义深色模式下的配色

一键切换官方主题

JSON Formatter 内置了浅色和深色两种官方主题,无需编写样式代码即可快速切换。

基础使用方法

在初始化 JSONFormatter 实例时,通过config参数的theme属性指定主题名称:

// 浅色主题(默认) const lightFormatter = new JSONFormatter(myJSON, 1, { theme: null }); // 深色主题 const darkFormatter = new JSONFormatter(myJSON, 1, { theme: "dark" });

实际应用示例

在 demo/index.js 中可以看到官方示例用法:

// 深色主题配置示例 { title: "Dark", json: complex, config: { theme: "dark" } }

当主题设置为 "dark" 时,渲染元素会自动添加json-formatter-dark类,从而应用深色样式。

深入理解主题配色方案

主题变量解析

src/style.less 中定义的主题混合器包含以下核心配色变量,控制着 JSON 不同元素的显示效果:

.theme( @default-color: black, // 默认文本颜色 @string-color: green, // 字符串颜色 @number-color: blue, // 数字颜色 @boolean-color: red, // 布尔值颜色 @null-color: #855a00, // null值颜色 @key-color: #00008b, // 键名颜色 @bracket-color: blue // 括号颜色 ) { // 样式规则... }

浅色主题默认值

默认浅色主题直接应用上述变量值,适合大多数明亮的网页环境:

// 浅色主题应用 .json-formatter-row { .theme(); }

深色主题配色调整

深色主题通过覆盖变量实现深色背景下的高对比度显示:

// 深色主题配置 .json-formatter-dark.json-formatter-row { .theme( @default-color: white, // 白色文本 @string-color: #31f031, // 亮绿色字符串 @number-color: #66c2ff, // 浅蓝色数字 @boolean-color: #EC4242, // 红色布尔值 @key-color: #23a0db // 亮蓝色键名 ); }

自定义主题的完整步骤

1. 定义新主题变量

在 src/style.less 中扩展主题混合器,添加自定义配色:

// 自定义主题 - 柔和蓝调 .json-formatter-blue.json-formatter-row { .theme( @default-color: #333333, @string-color: #2e7d32, @number-color: #1565c0, @boolean-color: #c62828, @key-color: #283593, @bracket-color: #5e35b1 ); }

2. 编译 Less 为 CSS

使用项目中的构建工具编译样式文件:

git clone https://gitcode.com/gh_mirrors/js/json-formatter-js cd json-formatter-js yarn install yarn build

3. 应用自定义主题

在代码中指定自定义主题名称:

const customFormatter = new JSONFormatter(myJSON, 1, { theme: "blue" }); document.body.appendChild(customFormatter.render());

主题切换的进阶技巧

跟随系统主题自动切换

结合 CSS 媒体查询,可以实现根据系统主题自动切换:

@media (prefers-color-scheme: dark) { .auto-theme .json-formatter-row { @extend .json-formatter-dark.json-formatter-row; } }

动态切换主题

通过 JavaScript 动态修改元素类名实现主题切换:

function switchTheme(formatterElement, themeName) { // 移除所有主题类 formatterElement.classList.remove('json-formatter-light', 'json-formatter-dark', 'json-formatter-blue'); // 添加新主题类 if (themeName) { formatterElement.classList.add(`json-formatter-${themeName}`); } }

常见问题解决

主题不生效怎么办?

  1. 检查是否正确传递theme配置参数
  2. 确认主题名称与 src/style.less 中定义的类名一致
  3. 验证 CSS 文件是否正确编译并引入

如何修改主题动画效果?

主题混合器中包含@rotate-time变量控制折叠动画速度:

.theme( // ...其他变量 @rotate-time: 200ms // slower animation ) { // ... }

总结

JSON Formatter 提供了灵活的主题定制功能,通过简单配置即可实现从浅色到深色模式的切换。无论是使用官方主题还是创建自定义配色方案,都能让 JSON 数据展示更加美观和易读。通过修改 src/style.less 中的主题变量,你可以轻松打造符合自己需求的 JSON 展示样式。

【免费下载链接】json-formatter-jsRender JSON objects in beautiful HTML (pure JavaScript)项目地址: https://gitcode.com/gh_mirrors/js/json-formatter-js

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/22 19:07:38

【Kotlin内联函数】

文章目录一. 理解何为内联1. 没有内联的场景2. 内联的场景二. inline: 内联,将函数体插入调用处,提升性能三. noinline:避免参数被内联四. crossline:限制非局部返回五. 内联函数的应用一:非局部返回六. 内联函数应用二…

作者头像 李华
网站建设 2026/7/22 19:04:22

在 Jetson JP6.X 版本upgrade更新失败解决方法

在Jetson平台JP6版本上,包括Orin NX和AGX Orin开发套件,尝尝会有upgrade更新失败,jtop无法获取到JetPack版本等问题,给出具体原因和解决方法。 问题: 在 Jetson JP6.X 版本中,如果是客户自定义的板子&…

作者头像 李华
网站建设 2026/7/22 19:03:24

Metaboss部署指南:如何在不同环境中配置和运行的最佳实践

Metaboss部署指南:如何在不同环境中配置和运行的最佳实践 【免费下载链接】metaboss The Metaplex NFT-standard Swiss Army Knife tool. 项目地址: https://gitcode.com/gh_mirrors/me/metaboss Metaboss 作为 Metaplex NFT 标准的瑞士军刀工具,…

作者头像 李华
网站建设 2026/7/22 18:57:40

【单片机毕业设计推荐】基于 STM32/51 单片机的智能温控风扇调速系统设计与实现,基于 STM32/51 单片机的温度监测可调速风扇控制系统设计(025502)

文章目录20 个相关毕业设计备选题目项目研究背景摘要总体方案核心功能基础功能核心功能辅助功能技术路线项目演示关于我们项目案例源码获取博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者&…

作者头像 李华
网站建设 2026/7/22 18:55:00

【Python课程设计/毕业设计】基于 Python 的轻量化新闻采集聚合运维服务系统【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/7/22 18:53:11

C++ 修饰符全面详解

前言在 C 开发体系中,修饰符(限定符 / 说明符)是一组特殊关键字,作用于变量、指针、函数、类、类成员,用于约束实体的访问权限、生命周期、存储位置、可修改性、编译行为、多态特性。相较于 C 语言,C 扩充了…

作者头像 李华