资讯动态

CKEditor 5 基础文本样式(Basic Styles)功能全解析:Bold、Italic、Code、Strikethrough、上下标等内联格式的安装、配置与源码实现

发布时间:2026/9/16 18:22:00 来源:尧图企业网站定制
CKEditor 5 基础文本样式Basic Styles功能全解析Bold、Italic、Code、Strikethrough、上下标等内联格式的安装、配置与源码实现【免费下载链接】ckeditor5Powerful rich text editor framework with a modular architecture, modern integrations, and features like collaborative editing.项目地址: https://gitcode.com/GitHub_Trending/ck/ckeditor5本文围绕 CKEditor 5 官方开源仓库中的ckeditor5-basic-styles功能包展开系统讲解粗体、斜体、下划线、删除线、行内代码、下标与上标这七种最核心的内联文本样式包括每种样式的命令名、工具栏组件名、输出元素、可支持的输入元素、安装配置方式以及基于本仓库源码的底层实现原理属性命令、Schema、模型↔视图转换器与快捷键。读完本文你将掌握在 CKEditor 5 中快速集成全套基础文本样式、用数据 API 导入/导出 HTML、并理解内联代码光标进退two-step caret movement机制的完整实战方案。功能概览与 Demo基础文本样式Basic Styles是任何 WYSIWYG 编辑器工具栏的基石它覆盖了日常排版中最常用的格式化能力加粗Bold、斜体Italic、下划线Underline、删除线Strikethrough、行内代码Code、下标Subscript、上标Superscript。你可以通过工具栏按钮应用这些格式也可以配合自动格式化Autoformat功能在输入时直接用 Markdown 语法触发格式转换加粗点击加粗工具栏按钮或输入**text**/__text__斜体点击斜体工具栏按钮或输入*text*/_text_行内代码点击代码工具栏按钮或输入text删除线点击删除线工具栏按钮或输入~~text~~。本仓库中对应的交互演示片段位于 packages/ckeditor5-basic-styles/docs/_snippets/features/basic-styles.js 与 packages/ckeditor5-basic-styles/docs/_snippets/features/basic-styles.html该演示展示了基础样式功能的组合使用若需要体验更完整的特性组合可参考 docs/examples/builds 中的功能丰富编辑器示例。七种可用文本样式一览下表完整列出ckeditor5-basic-styles提供的每一种样式功能及其对应的命令名、工具栏组件名与最终输出的 HTML 元素样式功能命令名Command工具栏组件名输出元素Boldboldboldstrongbold/strongItalicitalicitaliciitalic/iUnderlineunderlineunderlineuunderline/uStrikethroughstrikethroughstrikethroughsstrikethrough/sCodecodecodecodecode/codeSubscriptsubscriptsubscriptsubsubscript/subSuperscriptsuperscriptsuperscriptsupsuperscript/sup注意Code 功能仅提供行内代码格式化。若需要插入带编程语言标识的多行代码块请使用 代码块功能。支持的输入元素Upcast默认情况下每个样式功能可以向上转换upcast多种类型的内容——无论内容来自剪贴板粘贴、编辑器启动时的数据加载还是通过数据 APIeditor.setData()注入。下表是各功能完整支持的元素清单样式功能支持的输入元素Boldstrong、b、任意元素stylefont-weight: bold或数值 ≥ 600 的font-weightItalici、em、任意元素stylefont-style: italicUnderlineu、任意元素styletext-decoration: underlineStrikethroughs、del、strike、任意元素styletext-decoration: line-throughCodecode、任意元素styleword-wrap: break-wordSubscriptsub、任意元素stylevertical-align: subSuperscriptsup、任意元素stylevertical-align: super这一宽进严出的设计非常实用从 Word、网页或其他富文本源粘贴内容时编辑器能够自动识别等价的语义标记并归一到标准元素例如把b、font-weight: bold都统一转换为模型中的bold属性并在输出时呈现为strong。源码视角基础样式功能的实现原理本仓库的ckeditor5-basic-styles包采用高度统一的编辑Editing UIUI 属性命令AttributeCommand三件套架构每个样式功能都遵循同样的实现模式。理解这一模式就等于理解了全部七个功能。统一基类AttributeCommand所有基础样式命令都继承自 attributecommand.ts 中的AttributeCommand类其核心职责是在文本或元素上切换toggle单个属性refresh()根据当前文档选区状态更新命令的value是否已激活与isEnabled是否可用。其中isEnabled通过model.schema.checkAttributeInSelection( doc.selection, this.attributeKey )判断当前选区是否允许应用该属性execute( options )执行命令。若options.forceValue未提供则根据当前value自动取反激活 ↔ 取消。执行逻辑区分三种情况选区非空通过schema.getValidRanges()获取所有合法范围对范围内每个允许该属性的节点设置/移除属性选区折叠在非空节点内把属性设置到选区本身此后键入的字符会自动继承该属性选区折叠在空节点内把属性设置到选区的父节点空节点中的选区会继承父节点的属性。正是这种设计保证了在选区内应用格式在光标处开启格式后继续输入在空段落内切换格式等场景都行为正确。标准模板以 Bold 为例以 bold/boldediting.ts 为例每个样式功能的编辑插件在init()中完成四件事// 1. 在模型 Schema 中允许文本节点携带 bold 属性并声明其行为特征 editor.model.schema.extend( $text, { allowAttributes: BOLD } ); editor.model.schema.setAttributeProperties( BOLD, { isFormatting: true, // 属于格式类属性 copyOnEnter: true // 回车后新段落继承该格式 } ); // 2. 注册模型属性 → 视图元素的转换器含 upcastAlso 反向转换规则 editor.conversion.attributeToElement( { model: BOLD, view: strong, upcastAlso: [ b, viewElement { const fontWeight viewElement.getStyle( font-weight ); if ( !fontWeight ) return null; // font-weight 可能是字符串或数值大于等于 600 视为加粗 if ( fontWeight bold || Number( fontWeight ) 600 ) { return { name: true, styles: [ font-weight ] }; } return null; } ] } ); // 3. 注册命令 editor.commands.add( BOLD, new AttributeCommand( editor, BOLD ) ); // 4. 绑定快捷键并写入无障碍信息库 editor.keystrokes.set( CTRLB, BOLD ); editor.accessibility.addKeystrokeInfos( { keystrokes: [ { label: t( Bold text ), keystroke: CTRLB } ] } );UI 侧则由 bold/boldui.ts 负责通过工具函数 utils.ts 中的getButtonCreator创建可切换toggle按钮将按钮的isEnabled绑定到命令的isEnabled、isOn绑定到命令的value点击时执行editor.execute( commandName )并重新聚焦编辑视图同时还会注册菜单栏组件menuBar:bold使其在菜单栏MenuBar中同样可用。各功能的快捷键与转换差异从源码可以逐一确认各功能的注册细节均位于 src 目录功能输出元素主要 upcast 规则快捷键Boldstrongb、font-weight: bold或 ≥ 600CtrlBItaliciem、font-style: italicCtrlIUnderlineutext-decoration: underlineCtrlUStrikethroughsdel、strike、text-decoration: line-throughCtrlShiftXCodecode见下文特殊处理双向箭头two-stepSubscriptsubvertical-align: sub无Superscriptsupvertical-align: super无值得注意的差异点Code 功能的特殊性code/codeediting.ts 声明了依赖TwoStepCaretMovement插件并执行registerAttribute( CODE )注册两步光标移动同时用inlineHighlight( editor, CODE, code, ck-code_selected )为选中的行内代码添加高亮类名——这正是下文在行内代码两侧输入体验的实现基础下划线/删除线/上下标均通过 CSS 样式反向转换text-decoration、vertical-align因此在粘贴带内联样式的 HTML 时同样能正确识别。在行内代码周围输入两步光标移动CKEditor 5 允许用户在行内代码元素的内部边界和外部边界分别输入从而大幅提升代码编辑的便捷性。在代码元素内部输入将光标移动到代码元素的起始或结束边界只要代码仍处于高亮状态默认显示为半透明灰色背景此时输入的文本与应用的新格式都会被包含在代码元素之内在代码元素前后输入将光标移动到边界后再按一次方向键→或←代码元素不再高亮此后输入的文本或应用的格式将不会被代码元素包裹这正是 code/codeediting.ts 中注册的无障碍快捷键所描述的行为——按两下方向键即可移出行内代码样式。安装与配置在完成编辑器安装之后将需要的插件加入插件列表然后在工具栏配置中声明对应组件即可。下面是一个同时启用全部七种基础样式并全部展示在工具栏上的完整示例import { ClassicEditor, Bold, Code, Italic, Strikethrough, Subscript, Superscript, Underline } from ckeditor5; ClassicEditor .create( { licenseKey: YOUR_LICENSE_KEY, // 或者使用 GPL。 plugins: [ Bold, Code, Italic, Strikethrough, Subscript, Superscript, Underline ], toolbar: { items: [ bold, italic, underline, strikethrough, code, subscript, superscript ] } } ) .then( /* ... */ ) .catch( /* ... */ );配置要点说明plugins与toolbar.items需成对出现插件负责注册命令与转换器编辑器功能工具栏组件名负责在界面中渲染按钮二者缺一不可若只想启用能力而不展示按钮可以只加插件、不加工具栏项licenseKeyGPL适用于遵循 GPL 许可的场景商业使用需替换为你的许可证密钥按需裁剪bold、italic等组件名可与 工具栏配置文档 中的分组、分隔符等选项自由组合。常用 API以编程方式应用样式每个样式功能都会注册一个对应的命令你可以在代码中直接执行命令来操作当前选区。例如下面的代码会把当前选区中的文本应用为加粗editor.execute( bold );其他样式同理editor.execute( italic )、editor.execute( code )、editor.execute( strikethrough )、editor.execute( underline )、editor.execute( subscript )、editor.execute( superscript )。AttributeCommand还支持forceValue选项以强制指定结果例如editor.execute( bold, { forceValue: true } )无论如何都会应用加粗详见 attributecommand.ts。此外由于各功能都声明了格式属性isFormatting: true它们也可以配合 移除格式功能 一键清除全部基础文本样式。相关功能推荐掌握基础样式后可以进一步扩展对内容样式的控制能力字体样式Font styles便捷地控制字体系列、字号、文字颜色与背景色样式Styles将预配置的样式应用到编辑器内容中的现有元素文本对齐Text alignment控制内容左对齐、右对齐、居中或两端对齐代码块Code blocks插入多行、带语言标识的代码块极大扩展行内代码样式高亮Highlight标记重要词句辅助审阅或突出重点内容自动格式化Autoformat输入 Markdown 代码即时转换为格式化文本移除格式Remove format一键清理基础文本格式。此外文档中还提到了大小写转换Case change与格式刷Format painter等商业功能它们与本功能包配套使用可以进一步丰富排版能力。开发与调试时官方推荐配合 CKEditor 5 Inspector 开发工具 使用它能够直观展示编辑器的内部数据结构、选区状态、命令状态等信息。小结基础文本样式功能包是 CKEditor 5 中最常用、也最能体现其模型-视图分离 属性命令架构魅力的模块七个功能共享同一套AttributeCommand与Editing UI插件模板通过 Schema 声明、属性→元素转换器 与upcastAlso反向规则实现了标准的strong/i/u/s/code/sub/sup输出与对旧式标记b、em、del、strike及内联 CSS的宽容导入。无论是基础工具栏搭建、粘贴兼容性处理还是通过命令 API 做程序化排版掌握本文内容即可覆盖绝大部分实际场景。【免费下载链接】ckeditor5Powerful rich text editor framework with a modular architecture, modern integrations, and features like collaborative editing.项目地址: https://gitcode.com/GitHub_Trending/ck/ckeditor5创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价