简介
Pell 是一款超轻量级的 web 文本编辑器,提供文本编辑能力,包括加粗,加斜,下划线,列表,插入链接等。
Pell 可高度自定义,整个编辑器的样式可方便地随意调节,编辑器的所有的图标和操作也都可以自定义。你完全可以通过简单地修改将其变成一个属于自己的编辑器。
Pell 的 min 版本大小只有 3.54 kB , gizp 之后只有 1.38 kB,真可谓超轻量,并且不依赖任何框架和库。
github: https://github.com/jaredreich/pell
live demo: https://jaredreich.com/pell 试一试 pell 的惊艳表现吧。
原理和使用
实现一个编辑器可以先了解 domcument.execCommand: https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand 这个 API,Pell 使用了这个 API 对文本进行处理,因此也决定了 Pell 只支持 IE9+。
Pell 其实是实现了一个最基本的编辑器,可以说小巧够用,也可以说简陋。。。监听 ActionBar 的按钮点击然后执行 execCommand 相应的命令罢了。
Pell 可以通过修改其样式文件来修改编辑器的样式,默认的 sass 也就几行。ActionBar 上的按钮样式可以通过创建时自定义实现。一个小文本编辑器可以使用如下代码自定义创建。
//执行和初始化的方法 import { exec, init } from 'pell' const editor = init({ //绑定的 dom element: document.getElementById('pell'), //内容发生变化时触发 onChange: html => { document.getElementById('html-output').textContent = html }, //默认以 P 标签分隔 defaultParagraphSeparator: 'p', styleWithCSS: true, //自定义顶部 ActionBar actions: [ //表示使用默认 'bold', 'underline', //自定义 { name: 'italic', result: () => exec('italic') }, //自定义 icon 等 { name: 'custom', icon: '<b><u><i>C</i></u></b>', title: 'Custom Action', result: () => console.log('YOLO') }, { name: 'image', result: () => { const url = window.prompt('Enter the image URL') if (url) exec('insertImage', url) } }, { name: 'link', result: () => { const url = window.prompt('Enter the link URL') if (url) exec('createLink', url) } } ], //编辑器的自定义样式 classes: { actionbar: 'pell-actionbar-custom-name', button: 'pell-button-custom-name', content: 'pell-content-custom-name', selected: 'pell-button-selected-custom-name' } }) //默认文本 editor.content.innerHTML = '<b><u><i>Initial content!</i></u></b>'
Pell 实现的东西很简单,原理也不是很难,有时候我们有想法就应该去做,即使是 demo 或许也能够成功哦。
作者
Jared Reich 是一位来自加拿大阿尔伯塔的开发工程师
twitter:https://twitter.com/_jaredreich