uni-app textarea auto-height引起的末尾样式问题

发布于 1周前 作者 gougou168 来自 Uni-App

uni-app textarea auto-height引起的末尾样式问题

项目信息 详细信息
产品分类 uniapp/小程序/微信
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 11
HBuilderX类型 正式
HBuilderX版本号 3.99
第三方开发者工具版本号 1.06.2401020
基础库版本号 3.3.4
项目创建方式 HBuilderX

操作步骤:

  • auto-height引起的

预期结果:

  • auto-height引起的

实际结果:

  • auto-height引起的

bug描述:

末尾有一坨什么鬼? 详情看附件!换行就不存在了。

附件


13 回复

刚试了,没发现,可以发一下你的代码 <textarea :auto-height="true" placeholder="请输入" class="placeholder"></textarea>
.placeholder{
background-color: #e8e8e8;
padding: 20rpx;
border-radius: 12rpx;
}


<textarea v-model="input" placeholder="请输入内容" :cursor-spacing="25" :disable-default-padding="true" :adjust-position="true" :show-confirm-bar="false" auto-height></textarea> 看看是不是和机型有关,我的是 iqoo neo3

回复 前端6年: 我的是华为,测试的

回复 喜欢技术的前端: 你是官方人员吗?是的话最好检查一下textarea这个组件,是否是组件内部的那个元素背景颜色的BUG

回复 前端6年: 不是官方人员,可能跟设置的样式有关,要是能有复现的代码就好了

回复 喜欢技术的前端: <template> <view class="sendMessage"> <view class="input-box"> <textarea v-model="input" placeholder="请输入..." :cursor-spacing="30" :disable-default-padding="true" :adjust-position="true" :show-confirm-bar="false" auto-height></textarea> <text class="input-text">发送</text> </view> </view> </template>

<script> export default { data() { return { input:'编译成功。前端运行日志' } }, methods: {
<style> .sendMessage { height: 100vh; display: flex; flex-direction: column; font-size: 14px; padding: 15px; }

回复 前端6年: 可以设置 min-height 去掉这个

回复 喜欢技术的前端: 好的谢谢!借你的灵感,我发现是 textarea font-size: 14px;引起的,小于15px就会出现

在uni-app中使用textarea组件时,如果设置了auto-height属性,textarea会根据内容自动调整高度。然而,这可能会导致一些样式问题,特别是在处理末尾内容时,可能会出现以下问题:

1. 光标位置异常

  • 问题描述:当textarea内容增多并自动调整高度时,光标可能会停留在错误的位置,尤其是在末尾。
  • 解决方案:可以通过手动调整textareascrollTop属性来确保光标始终在正确的位置。例如:
    this.$nextTick(() => {
      const textarea = this.$refs.textarea;
      textarea.scrollTop = textarea.scrollHeight;
    });

2. 末尾内容被遮挡

  • 问题描述:当textarea自动调整高度时,末尾的内容可能会被遮挡,导致用户无法看到输入的最后几行。
  • 解决方案:可以通过设置textareapadding-bottommargin-bottom来确保末尾内容不被遮挡。例如:
    .textarea-class {
      padding-bottom: 20px; /* 根据实际情况调整 */
    }

3. 布局错乱

  • 问题描述textarea自动调整高度可能会影响页面布局,导致其他元素的位置发生变化。
  • 解决方案:可以通过使用flex布局或position: absolute来固定textarea的位置,或者使用min-height来限制textarea的最小高度。例如:
    .container {
      display: flex;
      flex-direction: column;
    }
    .textarea-class {
      flex: 1;
      min-height: 100px; /* 根据实际情况调整 */
    }

4. 键盘弹出时布局问题

  • 问题描述:在移动端,当键盘弹出时,textarea可能会被键盘遮挡,特别是在自动调整高度的情况下。
  • 解决方案:可以通过监听键盘弹出事件来动态调整页面布局。例如:
    uni.onKeyboardHeightChange(res => {
      this.keyboardHeight = res.height;
      // 根据键盘高度调整布局
    });

5. 滚动条不显示

  • 问题描述:当textarea内容过多时,滚动条可能不会显示,导致用户无法滚动查看全部内容。
  • 解决方案:可以通过设置textareaoverflow属性来确保滚动条显示。例如:
    .textarea-class {
      overflow-y: auto;
    }

6. iOS 和 Android 表现不一致

  • 问题描述:在某些情况下,textarea在iOS和Android设备上的表现可能不一致,特别是在自动调整高度时。
  • 解决方案:可以通过针对不同平台进行样式调整来解决。例如:
    /* 针对 iOS 的样式 */
    .textarea-class.ios {
      line-height: 1.5;
    }
    /* 针对 Android 的样式 */
    .textarea-class.android {
      line-height: 1.2;
    }
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!