定义
富文本、富文本,丰富的文本展示,能以丰富的样式展示一段文本,表达文本中的重点,满足用户表达的丰富性。
丰富的样式:字号、字体、颜色、文本背景颜色、粗体、斜体、引用、代码块、链接、无序列表、有序列表、任务列表、删除线、高亮、下划线等
场景
创建网页内容、博客文章、社交媒体帖子
示例
h1
h2
h3
h4
h5
h6
加粗 斜体 连接 高亮 删除线 fdfdfd 背景颜色
- 无序列表1
- 无序列表1
- 有序列表1
- 有序列表2
- 任务列表1
- 任务列表2
引用
// 代码块
let a = 1
富文本需要运行在浏览器上,而html,全称Hyper-Type-Mark-language(超文本标记语言),其里面的标签和样式刚好能满足富文本的丰富样式的要求:h1、h2、h3、h4、h5、h6、p、strong、font-size、font-family、color、span、background-color、em、blockquote、a、ul、li、ol、input、del、mark等。
QA
问:一个富文本容器里全是不可以编辑的元素,那用户怎么编辑?
答:以下是一个实现富文本编辑器的思维链(COT)
当然还要处理样式冲突、redo栈、undo栈、toolbar等
问:有没有更厉害的方式来实现富文本编辑器?
答:有的,本文是主流的富文本编辑器的实现方式,当然还有别的方式来实现啦~~
富文本编辑器:本质就是数据、逻辑、展示。
-
Google docs:文档系统,利用canvas来渲染大文档,提升文档加载体验,能基于canvas做各种优化手段,自持各种事件,项目可控性极高。
- 数据层:未知
- 逻辑层:拦截并自持用户的交互事件,keyboardEvent、mouseEvent、Selection等
- 渲染:使用自持的数据层 + 自持的渲染器,通过canvas来渲染内容
严格的说,google docs是文档系统,并不是富文本编辑器,这里列出来,是为了提供另一种思路来实现富文本编辑器。
ps:高手都喜欢用canvas