HTML页面中textarea高度自适应解决方案

背景: 页面上加了一个div标签,div标签下有一个textarea标签,textarea的内容通过后台读取数据自动填充,希望通过textarea的高度随着内容的增减,自动调整,在网上说通过设置textarea属性可以解决,即:

onpropertychange="this.style.posHeight=this.scrollHeight" onfocus="this.style.posHeight=this.scrollHeight"

然而,设置过后,然并卵,问题依旧,继续网上找解决方案,终于在https://segmentfault.com/q/1010000000095238
网上找了一个解决方案,这个页面有一段话,如下:
1、加入标签:

<div class="expandingArea ">
    <pre><span></span><br></pre>
    <textarea placeholder="输入文字"></textarea>
</div>

2、div设置css属性,目的是用于textarea相对于expandingArea绝对定位:

.expandingArea{
    position:relative;
}

3、设置textarea的css属性

textarea{
    position:absolute;
    top:0;
    left:0;
    height:100%;
}

通过这样的样式设置,textArea的高度会始终等于expandingArea的高度,要让textarea的高度变化也只需要调整expadingArea的高度即可。那么怎么样让expandingArea的高度变化随内容高度变化而变化呢?答案就是这个pre
4、设置pre的css属性

pre{
    display:block;
    visibility:hidden;
}

pre以块形式存在,并且不可见,但是是占用空间的,不像display:none;什么空间也不占。这时需要把textarea中的内容实实的同时到pre里的span标签中,因为pre没有postion:absolute所以它的高度会一直影响expandingArea的高度。总结原理就是:pre会随内容的高度变化而变化,expandingArea的高度又随pre变化,因为textarea的高度100%textarea的高度会随expandingArea变化,只要同步textarea的内容到pre中,就达到一个textarea随内容高度变化的目的了
5、经过自己设置,内容如下:

<div id="rs" class="col-md-9" style="position:relative;">
    <pre style="display:block;visibility:hidden;"><span>content</span><br></pre>
    <textarea style="position:absolute;top:0;left:0;height:100%;" placeholder="输入文字">content</textarea>
</div>

其中content用实际从后台返回的结果填充。
经测试,方法可行。

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,384评论 1赞 92
  • HTML标签解释大全 一、HTML标记 标签:!DOCTYPE 说明:指定了 HTML 文档遵循的文档类型定义(D...
    米塔塔阅读 3,620评论 1赞 41
  • 转载请声明 原文链接地址 关注公众号获取更多资讯 第一部分 HTML 第一章 职业规划和前景 职业方向规划定位...
    前端进阶之旅阅读 17,044评论 32赞 459
  • 当你觉得无事可做,空虚的时候就看看书吧
    x1x阅读 139评论 0赞 0
  • dj_linda阅读 336评论 0赞 0

友情链接更多精彩内容