小程序自定义组件如何自适应高度

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小程序自定义组件如何自适应高度相关的知识,希望对你有一定的参考价值。

参考技术A 下图可以看出:在做一个展示聊天消息的组件时,由于“组件高度”依赖于聊天内容,所以导致没有显式指定组件高度的情况下出现内容层叠问题。

在Component的ready中计算组件的实际高度然后通过setData()来设置即可。
wxml:

js:

解释:
通过“#msg-content”获取内容视图的node,并通过node.boundingClientRect()来获取内容视图的尺寸,并加上其他的固定部分的高度最终计算出组件的高度。
单位统一使用rpx。

结果如下所示:

小程序 textarea高度自适应?

有一个textarea,初始样式200rpx,但是这个高度是自适应的,用户可以随意输入内容textarea高度随之变化,但是超过多少高度后用户又不能再输入了。
这个需求怎么做,求大佬指点

那是因为textarea有默认的最大字符数的限制,maxlength="-1"这样就可以输入了 参考技术A 一、设置style里的height属性无效
解决方法:

/*XXX.wxss*/
page
height: 100%;

/*也就是把当前页面高度设置100%*/
1
2
3
4
5
这个不仅仅是设置textarea高度时会出现,其他的一些组件也会有这个问题,都可以试试这个方法

二、设置textarea自适应高度,输入过长内容且textarea失去焦点后,高度会变小,使得用户体验较差
解决方法:

/*XXX.wxml*/
<textarea auto-height="auto_height" bindblur='areablur' bindfocus='areafocus'/>

/*XXX.wxss*/
textarea
height: 30px;

/*设置合适高度作为默认高度*/

/*XXX.js*/
...
data:
auto_height:true
//当textarea获取焦点时自适应高度,失去焦点时不自适应高度
//自适应高度时,style中的height无效
,
...
areablur:function()
this.setData(
auto_height:false
)
,
areafocus:function()
this.setData(
auto_height: true
)

以上是关于小程序自定义组件如何自适应高度的主要内容,如果未能解决你的问题,请参考以下文章

实现小程序image图片宽度100%高度自适应

小程序的image怎么自适应大小

小程序 textarea高度自适应?

text 微信小程序图片实现宽度100%,高度自适应

微信小程序swiper选项卡每个内容都小于一屏,怎么让内容高度自适应?

小程序--解决Swiper 图片高度自适应