uniapp中,nvue 页面文字换行不生效的解决办法

本文介绍了如何在Vue项目中使用`rich-text`组件处理节点列表,包括元素节点和文本节点的区分,以及为何推荐使用nodes数组而非HTMLString。特别强调了在App-nvue和支付宝小程序中,由于限制,需要自行转换HTMLString。同时提到直接在rich-text内写HTML结构以便更好地控制样式。
摘要由CSDN通过智能技术生成

1. rich-text

注意使用这个标签需要绑定写法,最好不要用字符串的格式,因为会降低性能,下面是官网解释

nodes 值为 HTML String 时,在组件内部将自动解析为节点列表,推荐直接使用 Array 类型避免内部转换导致的性能下降。App-nvue 和支付宝小程序不支持 HTML String 方式,仅支持直接使用节点列表即 Array 类型,如要使用 HTML String,则需自己将 HTML String 转化为 nodes 数组,可使用 html-parser 转换。

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

2.具体实现

<view v-if="item.extPropsDesc">
	<rich-text :nodes="nodes(item.extPropsDesc)"></rich-text>
</view>
<script>
    data() {
			return {
				nodes(data) {
					return [{
						children: [{
							type: 'text',
							attrs: {
								class: 'msg-name',
								style: 'color:#888'
							},
							text: '扩展属性: '
						}, {
							type: 'text',
							attrs: {
								class: 'msg-name'
							},
							text: data
						}]
					}]
				},
			};
		},
</script>
<style scoped>
	.msg-name {
		line-height: 50upx;
		font-size: 16px;
		color: #000;
		line-height: 35rpx;
	}
</style>

最好是把当前行从左到右全部需要显示的文字都放在这个nodes里面,单独在 rich-text 外面写其他的html结构,不好控制样式,原因很简单,( nvue:恶 心 ),不过多解释

3.页面效果:

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
uniapp,table组件的rowspan属性并不支持,但可以通过使用view和flex布局来模拟实现。具体步骤如下: 1. 使用view和flex布局代替table 2. 将每一行的数据封装为一个子组件,并使用flex布局实现每一列的对齐。 3. 在子组件使用v-if或v-show来控制跨行的单元格的显示和隐藏。 4. 在需要跨行的单元格,使用position: absolute将单元格定位到相应的位置,同时设置宽度和高度,实现跨行效果。 以下是一个简单的示例代码: ```html <view class="table"> <!-- 表头 --> <view class="row header"> <view class="cell">姓名</view> <view class="cell">性别</view> <view class="cell">年龄</view> <view class="cell" style="width:100px;">地址</view> </view> <!-- 表格数据 --> <my-row name="张三" sex="男" age="18" address="北京市海淀区关村街道" :rowspan="2"></my-row> <my-row name="李四" sex="女" age="20" address="北京市朝阳区朝阳街道"></my-row> <my-row name="王五" sex="男" age="22" address="北京市海淀区西二旗街道"></my-row> </view> ``` ```css .table { width: 100%; border-collapse: collapse; border-spacing: 0; font-size: 14px; color: #333; } .row { display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid #ccc; } .header { font-weight: bold; background-color: #f5f5f5; } .cell { flex: 1; padding: 10px; text-align: center; } /* 跨行单元格 */ .cell.rowspan { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: #f5f5f5; z-index: -1; } ``` ```js // 子组件代码 <template> <view class="row"> <view class="cell">{{ name }}</view> <view class="cell">{{ sex }}</view> <view class="cell">{{ age }}</view> <view class="cell" style="width:100px;"> <view v-show="!rowspan">{{ address }}</view> <view v-show="rowspan" class="cell rowspan">{{ address }}</view> </view> </view> </template> <script> export default { props: { name: String, sex: String, age: String, address: String, rowspan: { type: Number, default: 1 } } } </script> ``` 以上是一个简单的实现方式,具体还需要根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微光无限

破晓的日子还有很多!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值