美文网首页
textarea 和video同时存在&textarea 遮挡键

textarea 和video同时存在&textarea 遮挡键

作者: 苏北苝 | 来源:发表于2020-05-25 17:09 被阅读0次

主要问题
小程序textarea层级最高,和video同时存在时,video全屏textarea会穿透,设置全屏不展示textarea,但是textarea内容会丢失

场景描述
在写一个页面的时候发现textarea和video同时存在,video 全屏查看,点击某个区域,会触发底层的textarea;
大概是这个亚子的。

设计图
解决方案
  1. 首先是想的是全屏时设置textarea不显示(wx:if),但是取消全屏后,textarea内容消失,需要再次赋值上去。
    试了一下,发现重新赋值这种比较麻烦,所以由这个想到了方法2
  2. 单独设置textarea的display属性,全屏时可以设置display:none,恢复时还原,测试没有发现问题。【害,想上个对比的前后效果录屏,结果等级太低,不能上传音频,咳咳~】

    简单上个关键地方的对比图吧!下面是点击了视频头部区域唤起了键盘事件。 微信图片_20200525164337.jpg 处理了之后,可以随心所欲的点,也不会触发。

    代码如下:
    wxml:

<view class="content">
  <view class="textarea" >
    <textarea name="content" placeholder-class="input-placeholder" placeholder="分享你的故事…" cursor-spacing="30" show-confirm-bar="false" auto-height bindblur="bindTextAreaBlur"> </textarea>
  </view>
  <view class="source">
    <view class="video" wx:if="{{videoImg}}">
      <video binderror="videoErrorCallback" src='{{videoSrc}}' mode="aspectFill" play-btn-position="center" bindfullscreenchange="fullScreen">
      </video>      
    </view>
    <view wx:else bindtap="chooseVideo">选择视频</view>
  </view>
</view>

wxss:

.textarea {
  width: 100%;
  position: relative;
  z-index: 8;
 background: #f0f0f0;
   min-height: 300rpx;  
}

JS:

 // 视频全屏
  fullScreen(e) {
    console.log(e.detail.fullScreen);
    let fullScreen = e.detail.fullScreen;
    this.setData({
      fullScreen: fullScreen
    })
  },

cursor-spacing
而且这里发现textarea的cursor-spacing属性并没有什么太大作用。
我们是给textarea设置了最大高度,超出之后可以滚动,根据文档对cursor-spacing的说明:

指定光标与键盘的距离。取textarea距离底部的距离和cursor-spacing指定的距离的最小值作为光标与键盘的距离。

实际使用的时候发现,设置textarea是fixed,始终在底部,这个cursor-spacing设置的距离是textarea底部和键盘的距离,如果光标在第一行和第二行的时候会被遮挡,在第三行的时候才是设置的间隔高度,这个问题在微信开发者社区也提了。最后回答:

不设置固定高度,只限制最高,结合auto-height一起使用,可以避免这个问题

但实际上还是如果用户自己移动光标的位置,还是存在以上问题,最终解决是只设置了一行高度。官方没有给出合理的解释~~~

image.png

相关文章

  • textarea 和video同时存在&textarea 遮挡键

    主要问题:小程序textarea层级最高,和video同时存在时,video全屏textarea会穿透,设置全屏不...

  • js 实现一键复制

    const textArea = document.createElement('textarea'); ...

  • HTML

    HTML Textarea 自动换行实现 textarea 添加 cols 和 wrap 属性,其中 wrap 设...

  • mpvue 开发中问题

    原生开发 原生组件scroll-view 中使用 textarea、map、canvas、video 组件出现冲突...

  • JS使用textarea模拟post提交表单

    textarea 标签 textarea代表HTML表单多行输入域textarea标签是成对出现的,以 开始,以 ...

  • textarea自动生成空格怎么解决?

    textarea自动生成空格是因为 textarea 标签之间有换行或空格导致的。 textarea元素中...

  • 代码的套路简单点

    textarea文本框自适应高度给textarea加一个兄弟元素div,并把文本内容同时放入兄弟元素,通过兄弟元素...

  • 小程序 底部 textarea ios 错误完美解决