簡介
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