2026-3-7编辑器美化

文档创建者:蜗牛
浏览次数:45
最后更新:2026-03-07
新建文档详情
排列序号: -
配置选择:
配置贴展示:

稀土掘金风格代码块美化 - 集成说明

概述

本实现为 Discuz! 论坛的 Markdown 编辑器插件添加了完全复刻稀土掘金风格的代码块美化功能。

功能特性

已实现功能

  • 顶部栏:深色背景(#1e1e1e),显示折叠按钮 + 语言标签
  • 功能按钮:体验 AI 代码助手、代码解读、复制代码(UI 展示)
  • 代码区域:深色背景,左侧显示行号,行号与代码之间有分隔线
  • 语法高亮:利用现有 highlight.js 实现代码语法高亮
  • 语言识别:自动识别代码语言并显示在顶部栏
  • 复制功能:点击复制代码按钮可复制代码内容到剪贴板
  • 折叠展开:点击折叠按钮可折叠/展开代码区域
  • 整体样式:圆角、内边距、阴影,与掘金视觉效果一致
  • 移动端适配:在小屏幕下自动调整布局,保证可读性

预留功能(仅 UI 展示)

  • ⏳ 体验 AI 代码助手
  • ⏳ 代码解读

文件结构

zhanmishu_markdown/
├── template/
│   ├── static/
│   │   ├── css/
│   │   │   └── juejin-code.css          # 掘金风格代码块样式
│   │   └── js/
│   │       └── juejin-code.js           # 代码块增强脚本
│   ├── markdown.htm                      # PC 端预览模板(已修改)
│   └── touch/
│       └── markdown.htm                  # 移动端预览模板(已修改)
└── README_JUEJIN_CODE.md                 # 本说明文档

集成步骤

方式一:自动集成(推荐)

如果您使用的是当前插件环境,文件已经自动集成,无需额外操作。

验证安装:

  1. 登录论坛,创建一个新帖子

  2. 使用 Markdown 编辑器输入代码块:

    ```javascript
    console.log('Hello, World!');
    
    
    
  3. 预览或发布帖子,查看代码块是否显示为掘金风格

方式二:手动集成到其他模板

如果您想在其他模板中也使用掘金风格代码块,请按以下步骤操作:

步骤 1:在模板头部添加 CSS 引用

<!-- 在 <head> 标签内添加 -->
<link rel="stylesheet" href="source/plugin/zhanmishu_markdown/template/static/css/juejin-code.css" />

步骤 2:在模板底部添加 JS 引用

<!-- 在 </body> 标签之前添加 -->
<script src="source/plugin/zhanmishu_markdown/template/static/js/juejin-code.js"></script>

步骤 3:确保 highlight.js 已加载

确保您的页面已经加载了 highlight.js 库:

<script src="source/plugin/zhanmishu_markdown/template/editor/js/highlight.js/highlight.pack.js"></script>

代码块语法支持

支持以下代码块语法:

Markdown 代码块(推荐)

```javascript
function hello() {
    console.log('Hello, World!');
}
```

Discuz! 代码标签

[code=javascript]
function hello() {
    console.log('Hello, World!');
}
[/code]

支持的语言

支持所有 highlight.js 支持的语言,包括但不限于:

  • JavaScript / TypeScript
  • Python
  • Java
  • C / C++ / C#
  • Go
  • Rust
  • PHP
  • Ruby
  • Swift
  • Kotlin
  • SQL
  • HTML / CSS
  • Bash / Shell
  • JSON / YAML / XML
  • 等等...

自定义配置

修改默认语言

编辑 juejin-code.js 文件,找到配置部分:

var CONFIG = {
    defaultLang: 'text',  // 修改默认语言
    copySuccessTime: 2000, // 复制成功提示显示时间(毫秒)
    debounceTime: 100,     // 防抖时间
};

修改主题颜色

编辑 juejin-code.css 文件,找到相关颜色定义:

.code-block-extension .code-header {
    background-color: #1e1e1e;  /* 顶部栏背景色 */
    border-bottom: 1px solid #2d2d2d;
}

.code-block-extension .code-content {
    background-color: #1e1e1e;  /* 代码区域背景色 */
}

移动端适配

样式已针对移动端进行了优化:

  • 屏幕宽度小于 768px 时自动调整布局
  • 功能按钮文字隐藏,仅显示图标(AI 按钮除外)
  • 字体大小和间距自动调整
  • 代码可横向滚动查看

兼容性

  • Discuz! 版本:X3.4 / X3.5
  • 浏览器:现代浏览器(Chrome、Firefox、Safari、Edge 等)
  • 移动端:iOS Safari、Android Chrome 等

故障排查

问题 1:代码块样式未生效

可能原因:

  • CSS 文件未正确加载
  • 浏览器缓存了旧样式

解决方法:

  1. 检查浏览器开发者工具,确认 juejin-code.css 已加载
  2. 清除浏览器缓存,强制刷新页面(Ctrl+F5)

问题 2:语法高亮未生效

可能原因:

  • highlight.js 未加载或加载顺序错误
  • 代码块语言 class 不正确

解决方法:

  1. 确保 highlight.pack.jsjuejin-code.js 之前加载
  2. 检查代码块的 class 是否包含 language-xxx 格式

问题 3:复制功能不工作

可能原因:

  • 浏览器不支持 Clipboard API
  • 页面不在 HTTPS 环境下

解决方法:

  • 复制功能已包含降级方案,支持所有主流浏览器
  • 如在旧版浏览器使用,确保页面通过 HTTP 或 HTTPS 访问

技术细节

代码结构

code-block-extension
├── code-header                    # 顶部栏
│   ├── header-left                # 左侧区域
│   │   ├── code-fold-btn          # 折叠按钮
│   │   └── code-lang              # 语言标签
│   └── header-right               # 右侧区域
│       ├── ai-btn                 # AI 助手按钮
│       ├── code-explain-btn       # 代码解读按钮
│       └── code-copy-btn          # 复制按钮
├── code-content                   # 代码内容容器
│   ├── copy-toast                 # 复制成功提示
│   └── code-lines                 # 代码行容器
│       ├── line-numbers           # 行号列
│       └── code-content-wrapper   # 代码内容列
│           └── pre > code         # 代码元素

核心 API

// 初始化所有代码块
window.CodeBlockExtension.init();

// 初始化单个代码块
window.CodeBlockExtension.initBlock(preElement);

// 获取配置
window.CodeBlockExtension.CONFIG;

更新日志

v1.0.0 - 2026-03-07

  • 首次发布
  • 实现掘金风格代码块基础样式
  • 支持语法高亮、行号显示、代码复制
  • 支持折叠/展开功能
  • 支持移动端适配
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条