当前位置 主页 > 网站技术 > 代码类 >

    微信小程序 textarea 层级过高问题简单解决方案

    栏目:代码类 时间:2019-11-10 12:05

    这篇文章主要介绍了微信小程序 textarea 层级过高问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    建立一个新的textarea 组件代替原生textarea ,废话不多说,上代码

    <template>
      <view class="ui-textarea">
        <textarea class="textarea {{ hide? 'hidden':''}}" auto-height maxlength="{{maxlength}}" name="{{ name }}" value="{{ txt }}" placeholder="{{ placeholder }}" bindinput="onInput" bindblur="onBlur" focus="{{focus}}"></textarea>
        <view hidden="{{ hide == false }}" class="{{ txt === ''?'text placeholder':'text'}}" bindtap="onFocus">{{ txt ===''? placeholder:txt }}</view>
      </view>
    </template>
    <script>
    export default {
      config: {
        usingComponents: {}
      },
      behaviors: [],
      properties: {
        placeholder: {
          type: String,
          value: ''
        },
        maxlength: {
          type: Number,
          value: 128
        },
        name: String,
        value: {
          type: String,
          value: ''
        }
      },
      data: {
        hide: true,
        txt: '',
        focus: false
      },
      ready() {
        if (this.data.value != '') {
          this.setData({ txt: this.data.value })
        }
      },
      methods: {
        onFocus() {
          this.setData({ hide: false, focus: true })
        },
        onInput(e) {
          this.setData({ txt: e.detail.value })
        },
        onBlur() {
          this.setData({ hide: true, focus: false })
        }
      }
    }
    </script>
    <style lang="less">
    .ui-textarea {
     position: relative !important;
    
     .textarea.hidden {
      display: block !important;
      position: absolute !important;
      left: -999px;
      right: -999px;
      top: 0;
     }
    
     .textarea {
      width: 100%;
      box-sizing: border-box;
     }
    
     .text {
      height: 100%;
      padding: 6px 5px;
      font-size: 14px;
     }
    
     .placeholder {
      color: #888;
     }
    }
    </style>

    Vue 代码,自己根据需求改一下 ,特别注意,不要用 wx;if 或者 hidden 属性 , wx:if 频繁渲染,虽然可以用,hidden 会出现 部分显示bug,[hidden] 会使auto-height 首次不正确

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持IIS7站长之家。