Vue textarea文本框根据内容自适应改变高度

举报
SHQ5785 发表于 2023/09/11 08:37:21 2023/09/11
【摘要】 项目开发过程中,在展示用户录入意见信息时,使用el-input标签,type=”textarea”属性,在指定:row=”number”后,若输入文本量或显示文本量超过指定行数后,会出现垂直滚动条,但在IE环境下,该滚动条是隐藏的,用户体验性不好,故考虑实现文本框根据文本内容自适应高度的效果。应用代码如下:<template> <div class="my-textarea"> ...

项目开发过程中,在展示用户录入意见信息时,使用el-input标签,type=”textarea”属性,在指定:row=”number”后,若输入文本量或显示文本量超过指定行数后,会出现垂直滚动条,但在IE环境下,该滚动条是隐藏的,用户体验性不好,故考虑实现文本框根据文本内容自适应高度的效果。应用代码如下:

<template>
    <div class="my-textarea">
      <textarea ref="textarea" :style="{'height': height}" v-model="value" class="textarea" ></textarea>
    </div>
</template>

<script>
  import calcTextareaHeight from '@/assets/calcTextareaHeight';

  export default {
    name: 'my-textarea',
    data() {
      return {
        // textarea内容
        value: '',
        // 动态高度
        height: '30px'
      }
    },
    watch: {
      value() {
        this.getHeight();
      }
    },
    methods: {
      getHeight() {
        this.height = calcTextareaHeight(this.$refs.textarea, 1, null).height;
      }
    }
  }
</script>

<style scoped>
  .my-textarea .textarea {
    display: inline-block;
    width: 400px;
    /*height: 30px;*/
    line-height: 30px;
    font-size: 30px;
    resize: none;
  }
</style>

基于el-input封装的自定义组件cus-input下载地址:点击下载

应用方法:

<cus-input type=”textarea” :autosize=”AUTOSIZE”></cus-imput>
import CusInput from ‘...’
export default {
component: {CusInput }
data () {
	return {
		AUTOSIZE: {
		minrows: 1,
		maxrows: 20
		}
	}
}
}

以上实现了textarea文本输入框最大显示上限为20行,大约1200汉字。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。