原生APP文字自然换行,最后一个文字后面能跟随其他元素,如何实现?
原生APP如何实现跟web一样的效果文字自动换行?
uni-app nvue 原生APP开发,纯css实现文字自然自动换行方案
下图效果用 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>
源码链接在此!!
最终效果图
