uniapp textarea高度如何动态调整
在uniapp中,如何实现textarea组件的高度动态调整?比如根据输入内容的行数自动增加高度,或者通过代码手动控制高度变化。尝试过设置auto-height属性但效果不理想,是否有更可靠的解决方案?希望能提供具体代码示例。
2 回复
在uniapp中,可通过auto-height属性让textarea高度自适应内容变化。也可用v-model绑定值,监听输入变化,动态计算高度并设置style。
在 UniApp 中,动态调整 textarea 高度可以通过以下步骤实现:
- 绑定数据:使用
v-model绑定textarea的值到 data 中的变量。 - 监听输入:通过
@input事件监听输入变化,并触发高度调整函数。 - 计算高度:根据内容行数或字符数动态计算高度,并更新样式。
示例代码
<template>
<view>
<textarea
v-model="textValue"
@input="adjustHeight"
:style="{ height: textareaHeight + 'px' }"
auto-height="false" <!-- 禁用默认 auto-height,改用自定义逻辑 -->
/>
</view>
</template>
<script>
export default {
data() {
return {
textValue: '',
textareaHeight: 40 // 初始高度
};
},
methods: {
adjustHeight() {
// 根据行数调整高度(假设每行高度约 20px)
const lines = this.textValue.split('\n').length;
this.textareaHeight = Math.max(40, lines * 20); // 最小高度 40px
}
}
};
</script>
说明:
- 核心逻辑:在
@input事件中计算内容行数,并动态设置height样式。 - 注意事项:
- 禁用
auto-height属性以避免冲突。 - 高度计算可根据实际需求调整(例如按字符数或内容宽度)。
- 如果内容超出可视区域,可结合
scroll-view实现滚动。
- 禁用
此方法简单有效,适用于大部分动态调整高度的场景。

