uni-app的nvue原生APP开发如何实现文字自然换行?

665 阅读2分钟
原生APP文字自然换行,最后一个文字后面能跟随其他元素,如何实现?
原生APP如何实现跟web一样的效果文字自动换行?

uni-app nvue 原生APP开发,纯css实现文字自然自动换行方案

下图效果用 nvue 如何实现?

nvue文字自然换行设计

前言
  • 写web的时候,文字自动换行很容易实现,web环境本身就支持得很好
  • 最近写 uni-app nvue 项目时,发现并不支持这种文字自动换行功能,nvue的文字必须放在标签中,否则无法设置字体样式,但是标签中只能嵌套,不能嵌套人任何其他标签,这就导致一个标签只能是一个方块,我们的字符串放在里面虽然能够自动换行,但是文字后面要想跟随别动元素,这样就不行了,而且重点是 nvue 的所有容器都只支持 display:flex 布局,
  • 综上所述,这就导致文字字符串自然换行无法跟随其他元素 *(我5年前做过Android原生开发,不过已经忘记了原生渲染机制了,原生里文字自然换行的实现方案已经没有印象了,不确定是当时没遇到过这类需求还是比较容易,反正自己完全想不起来了)
  • 下面这段是 uni-app 官方原话
注意事项

-   nvue的css**仅支持flex布局**,是webview的css语法的子集。这是因为操作系统原生排版不支持非flex之外的web布局。当然flex足以排布出各种页面,只是写法需要适应。
-   class 进行绑定时只支持数组语法。
-   不支持媒体查询
-   不能在 style 中引入字体文件
-   不能使用百分比布局,如`width:100%`
-   不支持在css里写背景图`background-image`,但可以使用image组件和层级来实现类似web中的背景效果。因为原生开发本身也没有web这种背景图概念
-   使用`image`标签,支持使用base64,不支持svg格式图片
-   nvue 的各组件在安卓端默认是透明的,如果不设置`background-color`,可能会导致出现重影的问题
-   文字内容,必须只能在`text`组件下,`text`组件不能换行写内容,否则会出现无法去除的周边空白
-   只有`text`标签可以设置字体大小,字体颜色
-   不支持 `/deep/`
关键源码在此!
<template>
	<text class="kl-text-wrap-char" v-for="c of text">{{c}}</text>
</template>

<script>
	export default {
		props: {
			text: {
				type: String,
				default: ''
			}
		}
	}
</script>

<style scoped>	
	.kl-text-wrap-char {
		color: whitesmoke;
		font-size: 26rpx;
	}
</style>
源码链接在此!!
  • 发布在 uni-app 的插件市场了,需要注册 uni-app 账号才能下载哦,当然我为了赚点小钱,设置了先看几秒的广告,然后能下载,恰饭才有动力,希望各位理解一下
  • 源码链接:ext.dcloud.net.cn/plugin?id=1…
最终效果图

nvue文字自然换行设计