美文网首页实战技术简友广场
rich-text---组件,基础内容

rich-text---组件,基础内容

作者: 前端来入坑 | 来源:发表于2018-10-03 18:16 被阅读0次
    • 支持默认事件,包括:tap、touchstart、touchmove、touchcancel、touchend和longtap

    • nodes 属性推荐使用 Array 类型,由于组件会将 String 类型转换为 Array 类型,因而性能会有所下降

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

    元素节点:type = node

    包含三个属性
    name
    attrs
    children

    文本节点:type = text

    包含一个属性
    text

    代码说明
    wxml

    <view class="page-body">
      <view class="page-section">
        <view class="page-section-title">传入html字符串</view>
        <view class="rich-text-wrp">
          <rich-text nodes="{{html}}" bindtap="tap"></rich-text>
        </view>
      </view>
    
      <view class="page-section">
        <view class="page-section-title">传入节点列表</view>
        <view class="rich-text-wrp">
          <rich-text nodes="{{nodes}}" bindtap="tap"></rich-text>
        </view>
      </view>
    </view>
    

    wxss

    rich-text {
      width: 700rpx;
      padding: 25rpx 0;
    }
    
    .rich-text-wrp {
      padding: 0 25rpx;
      background-color: #fff;
    }
    
    .page-section{
      width: 100%;
      margin-bottom: 60rpx;
    }
    
    .page-section:last-child{
      margin-bottom: 0;
    }
    
    .page-section-title{
      font-size: 28rpx;
      color: #999999;
      margin-bottom: 10rpx;
      padding-left: 30rpx;
      padding-right: 30rpx;
    }
    

    js

    Page({
      data: {
        html: '<div class="div_class" style="line-height: 60px; color: red;">Hello&nbsp;World!</div>',
        nodes: [{
          name: 'div',
          attrs: {
            class: 'div_class',
            style: 'line-height: 60px; color: red;'
          },
          children: [{
            type: 'text',
            text: 'Hello&nbsp;World!'
          }]
        }]
      },
      tap() {
        console.log('tap')
      }
    })
    

    效果预览


    image.png

    控制台里面查看


    image.png

    分析,如果代码是这样,js里面多了一个attrs和children有什么影响

    Page({
      data: {
        html: '<div class="div_class" style="line-height: 60px; color: red;">Hello&nbsp;World!</div>',
        nodes: [{
          name: 'div',
          attrs: {
            class: 'div_class',
            style: 'line-height: 60px; color: red;'
          }, 
          attrs: {
            class: 'div_class',
            style: 'line-height: 60px; color: green;'
          },
          children: [{
            type: 'text',
            text: 'Hello&nbsp;World!'
          }],
          children: [{
            type: 'text',
            text: 'new Hello&nbsp;World!'
          }]
        }]
      },
      tap() {
        console.log('tap')
      }
    })
    

    新的效果预览


    image.png

    Bug & Tip

    • tip: nodes 不推荐使用 String 类型,性能会有所下降。
    • tip: rich-text 组件内屏蔽所有节点的事件。
    • tip: attrs 属性不支持 id ,支持 class 。
    • tip: name 属性大小写不敏感。
    • tip: 如果使用了不受信任的HTML节点,该节点及其所有子节点将会被移除。
    • tip: img 标签仅支持网络图片。
    • tip: 如果在自定义组件中使用 rich-text 组件,那么仅自定义组件的 wxss 样式对 rich-text 中的 class 生效。

    官方文档链接:https://developers.weixin.qq.com/miniprogram/dev/component/rich-text.html

    相关文章

      网友评论

        本文标题:rich-text---组件,基础内容

        本文链接:https://www.haomeiwen.com/subject/cuzdnftx.html