textarea高度自适应且不出现滚动条

网上找了好一些文章都看不懂, 感觉没那么难实现, 不知道他们代码写那么多干什么

css:

    .ele-field__text-textarea {
      resize: none;
      padding: 0;
      overflow: hidden;
    }

js:

    // textarea滚动设置自适应高度 
    const onScroll = (event: Event): void => {
      const textareaDom = event.target as HTMLTextAreaElement;
      textareaDom.style.height = textareaDom.scrollHeight + 'px';
    };

    // onInput值改变事件重置height 触发onScroll事件设置textarea自适应高度
    const onInput = (event: Event): void => {
      textareaDom.style.height = 'auto';
    };

    const renderTextarea = () => (
      <textarea
        class={[bem('text-textarea'), , { [bem('text-input-error')]: props.error }]}
        onInput={onInput}
        onScroll={onScroll}
      />
    );

这里我用tsx写的主要实现就是将滚动条隐藏overflow: hidden, 然后监听滚动时候textarea的scrollHeight赋值给height就行实现设置高度, 值改变重置高度使得scrollHeight值重新刷新然后再赋值给height

还有一个方法给一个元素设置contenteditable属性这个元素就可以编辑了其他样式自己整就行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值