JavaScript

超轻量级php框架startmvc

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

更新时间:2020-09-17 19:06:01 作者:startmvc
这篇文章主要介绍了微信小程序textarea层级过高问题解决方案,文中通过示例代码介绍的非常

这篇文章主要介绍了微信小程序 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 首次不正确

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

微信小程序 textarea 层级过高