RichText 富文本

示例代码

RichText 富文本 - 图1

  1. <se-rich-text :nodes="html" @click="tap"></se-rich-text>
  2. <se-rich-text :nodes="html" @click="tap" space="ensp"></se-rich-text>
  3. <se-rich-text :nodes="html" @click="tap" space="emsp"></se-rich-text>
  4. <se-rich-text :nodes="nodes" @click="tap" space="nbsp"></se-rich-text>
  5. <se-rich-text :nodes="nodes" @click="tap" space="ensp"></se-rich-text>
  6. <se-rich-text :nodes="nodes" @click="tap" space="emsp"></se-rich-text>
  7. <script>
  8. export default {
  9. data() {
  10. return {
  11. html: `<div class="div" style="color:red;">hello&nbsp;world</div>`,
  12. nodes: [
  13. {
  14. name: 'div',
  15. attrs: {
  16. class: 'div',
  17. style: 'color: orange;'
  18. },
  19. children: [
  20. {
  21. type: 'text',
  22. text: `hello&nbsp;world`
  23. }
  24. ]
  25. }
  26. ]
  27. }
  28. },
  29. methods: {
  30. tap() {
  31. console.log('tap')
  32. }
  33. }
  34. }
  35. </script>

Props

属性类型默认值必填说明
nodesArray<Node> / string[]节点列表或者 HTML String
spacestring显示连续空格

space 的合法值

说明
ensp中文字符空格一半大小
emsp中文字符空格大小
nbsp根据字体设置的空格大小

nodes

现支持两种节点,通过 type 来区分,分别是元素节点和文本节点,默认是元素节点,在富文本区域里显示的 HTML 节点

元素节点: type="node"

属性说明类型必填备注
name标签名string支持部分受信任的 HTML 节点
attrs属性object支持部分受信任的属性,遵循 Pascal 命名法
children子节点列表array结构和 nodes 一致

文本节点:type="text"

属性说明类型必填备注
text文本string支持 entities

受信任的 HTML 节点及属性

全局支持 class 和 style 属性,不支持 id 属性

节点属性
a
abbr
address
article
aside
b
bdi
bdodir
big
blockquote
br
caption
center
cite
code
colspan,width
colgroupspan,width
dd
del
div
dl
dt
em
fieldset
font
footer
h1
h2
h3
h4
h5
h6
header
hr
i
imgalt,src,height,width
ins
label
legend
li
mark
nav
olstart,type
p
pre
q
rt
ruby
s
section
small
span
strong
sub
sup
tablewidth
tbody
tdcolspan,height,rowspan,width
tfoot
thcolspan,height,rowspan,width
thead
trcolspan,height,rowspan,width
tt
u
ul

注意事项

  • nodes 不推荐使用 string 类型,性能会有所下降。
  • se-rich-text 组件内屏蔽所有节点的事件。
  • attrs 属性不支持 id ,支持 class 。
  • name 属性大小写不敏感。
  • 如果使用了不受信任的 HTML 节点,该节点及其所有子节点将会被移除。
  • img 标签仅支持网络图片。