zoukankan      html  css  js  c++  java
  • 快应用tabs和video组件滑动事件优先级问题

    快应用tabs和video组件滑动事件优先级问题

    现象描述:

    tabs子组件tab-content内容是video组件组成的,左右滑动切换tabs内容时,偶尔会不切换而是拖动视频进度条。

    问题代码如下:

    <template>
      <div style="background-color: #00bfff;">
        <tabs index="0" >
          <tab-bar mode="fixed">
          </tab-bar>
          <tab-content>
            <div  style="flex-direction: column;">
              <text style="color: red">1</text>
              <stack class="video" >
                <video class="video1" id="111" 
                  src="https://ss0.bdstatic.com/-0U0bnSm1A5BphGlnYG/cae-legoup-video-target/93be3d88-9fc2-4fbd-bd14-833bca731ca7.mp4">
                  </video>
              </stack>
            </div>
     
            <div  style="flex-direction: column;">
              <text style="color: red">2</text>
            </div>
     
            <div style="flex-direction: column;">
              <text style="color: red">3</text>
            </div>
          </tab-content>
        </tabs>
      </div>
    </template>
    

    问题分析:

    video组件是tabs的子组件,video组件和tabs组件都是自带滑动能力,此问题关键在于滑动的地方在video区域上,根据事件从里层往外层的冒泡机制,系统会优先处理video的滑动,而不是tabs的切换,而video的滑动效果就是我们看到的调整了视频播放进度。

    解决方案:

    在video区域上覆盖一层div(video父节点stack增加子节点div),注意div的高低要小于video的高度,保证video底部的进度条、播放按钮区域不被遮挡。当在video区域滑动时,实际上是在div上,由于div和video是兄弟节点,不会触发video的滑动事件,完美解决了以上问题。

    实现代码如下(见红色部分):

    <template>
      <div style="background-color: #00bfff;">
        <tabs index="0" >
          <tab-bar mode="fixed">
          </tab-bar>
          <tab-content>
            <div  style="flex-direction: column;">
              <text style="color: red">1</text>
              <stack class="video">
                <video class="video1" id="111" 
                  src="https://ss0.bdstatic.com/-0U0bnSm1A5BphGlnYG/cae-legoup-video-target/93be3d88-9fc2-4fbd-bd14-833bca731ca7.mp4"
                  onstart="start" ontouchmove="move" onseeked="seeked">
                  </video>
                  <div style=" 100%;height:300px;" onclick="bof">
                   </div>
              </stack>
            </div>
     
            <div  style="flex-direction: column;">
              <text style="color: red">2</text>
            </div>
     
            <div style="flex-direction: column;">
              <text style="color: red">3</text>
            </div>
     
          </tab-content>
        </tabs>
      </div>
    </template>
    

    欲了解更多详情,请参阅:

    快应用tabs组件:

    https://developer.huawei.com/consumer/cn/doc/development/quickApp-References/quickapp-style

    快应用video组件:

    https://developer.huawei.com/consumer/cn/doc/development/quickApp-References/quickapp-component-video


    原文链接:https://developer.huawei.com/consumer/cn/forum/topic/0204404990358220225?fid=18

    原作者:Mayism

  • 相关阅读:
    bzoj 1176 cdq分治套树状数组
    Codeforces 669E cdq分治
    Codeforces 1101D 点分治
    Codeforces 1100E 拓扑排序
    Codeforces 1188D Make Equal DP
    Codeforces 1188A 构造
    Codeforces 1188B 式子转化
    Codeforces 1188C DP 鸽巢原理
    Codeforces 1179D 树形DP 斜率优化
    git commit -m "XX"报错 pre -commit hook failed (add --no-verify to bypass)问题
  • 原文地址:https://www.cnblogs.com/developer-huawei/p/14344752.html
Copyright © 2011-2022 走看看