小程序/网页实现textarea高度随内容自动改变

站长手记 作者: 2024-08-28 06:00:01
textarea默认的高度不是对着内容变化,而是随着内容增多,出现了滚动条。目前的需求是实现一个能够输入的textarea,并且高度跟着内容变化。以及小程序的textarea高度随内容自动改变的实现

需求

原理:

html结构:
	
  1. <div class="body">
  2. <div class="container">
  3. <pre class="pre"><span /><br /><br /></pre>
  4. <textarea class="content" placeholder="请输入内容" oninput="changeContent()"></textarea>
  5. </div>
  6. </div>
样式:
	
  1. .container{
  2. position: relative;
  3. }
  4. .content{
  5. position:absolute;
  6. top:0;
  7. left:0;
  8. height:100%;
  9. background: transparent;
  10. outline:0;
  11. resize:none;
  12. overflow:hidden;
  13. }
  14. .container pre {
  15. display:block;
  16. visibility:hidden;
  17. }
js实时把textarea内容写入到pre:
	
  1. function changeContent(){
  2. var $textarea = document.getElementsByClassName('content');
  3. var $pre = document.getElementsByClassName('pre');
  4. $pre[0].innerHTML = $textarea[0].value;
  5. }

简陋的源码

	
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1">
  6. <style>
  7. .container{
  8. position: relative;
  9. }
  10. .content{
  11. position:absolute;
  12. top:0;
  13. left:0;
  14. height:100%;
  15. background: transparent;
  16. outline:0;
  17. font-size: inherit;
  18. color: inherit;
  19. line-height: inherit;
  20. text-indent: inherit;
  21. letter-spacing: inherit;
  22. resize:none;
  23. overflow:hidden;
  24. }
  25. .container pre {
  26. display:block;
  27. visibility:hidden;
  28. }
  29. </style>
  30. </head>
  31. <body>
  32. <div class="body">
  33. <div class="container">
  34. <pre class="pre"><span /><br /><br /></pre>
  35. <textarea class="content" placeholder="请输入内容" oninput="changeContent()"></textarea>
  36. </div>
  37. </div>
  38. <script>
  39. function changeContent(){
  40. var $textarea = document.getElementsByClassName('content');
  41. var $pre = document.getElementsByClassName('pre');
  42. $pre[0].innerHTML = $textarea[0].value;
  43. }
  44. </script>
  45. </body>
  46. </html>

使用oninput而不是onchange的原因:

小程序中的实现

<view class="text-box">
      <text>{{currentInput}}</text>
      <textarea class="weui-textarea" placeholder="请输入文本" bindinput="getInput" maxlength="1000"/>
</view>
.text-box{
    width:100%; 
    position: relative;
    min-height:80rpx;
   margin-top:17rpx;
}
.text-box text{
   display:block;
   visibility:hidden;
   word-break:break-all;
   word-wrap:break-word;
}
.text-box .weui-textarea{
    height:100%;
    position: absolute;
    left:0;
    top:0; 
    overflow-y:hidden;
    word-break:break-all;
    word-wrap:break-word;
}
Page({
  data: {
    currentInput:''
  },
  getInput:function(e){
    this.setData({
      currentInput: e.detail.value
    })
  }
})
原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_69965.html
小程序