video同層播放層級太高遮擋模擬暫停按鈕的問題

在ios和android上有顯示的區別,若是你只是顯示一個普通的網頁,只須要在iOS上加上webkit-playsinline="true" 安卓上x5-video-player-type="h5" x5-video-player-fullscreen="true" x5-video-orientation="portraint",便可實如今微信上的同層播放;iOS和安卓顯示和播放沒有問題;
若是你跟我同樣想要把視頻放到swiper裏,且不是在第一頁播放視頻,並想要視頻有圓角。那麼問題就來了。首先在swiper非第一屏播放安卓會出現的問題是豎屏只有聲音沒有圖像,我嘗試了很久只須要去掉安卓部分的同層播放代碼便可,即去掉x5-video-player-type="h5";若是視頻在swiper裏,你確定會有這樣的需求,就是滑動到非視頻頁的時候,暫停視頻,並出現一個模擬的暫停按鈕在視頻上方。這裏能夠這樣寫:html

const mySwiper = new Swiper('.swiper-container', {
    direction: 'vertical',
    on: {
      slideChangeTransitionEnd: function() {
        if (this.activeIndex != 1) {
          //暫停視頻代碼
        }
      }
    }
  })

這裏定義一個是否顯示暫停的按鈕的變量showPoster,來顯示暫停模擬按鈕和隱藏video;
這裏顯示播放按鈕必須和視頻顯示必須呈反相關,由於不這樣做會有不少默認的bug,致使video_container的overflow:hidden不生效,沒法顯示圓角,這算是一種比較圓滑的作法了;我試過將video的position設爲fixed 這樣雖然能正常顯示和隱藏模擬的點擊按鈕,但會讓父級的overflow:hidden失效。沒法顯示視頻圓角。代碼大概以下:android

<div class="video_container">
<div class="clickVideo" @click="playVideo()" v-show="showPoster">
  <img src="../assets/點擊播放按鈕.png"/>
</div> 
<video
  v-show="!showPoster" 
  src="../assets/QQ20181214-221408-HD.mp4"
  id="video"
  preload="auto"

  x5-video-player-fullscreen="true"
  x5-video-orientation="portraint"

  airplay="allow"
  x-webkit-airplay="allow"

  playsinline="true" 
  webkit-playsinline="true"
  style="object-fit:fill"
>
<!-- 
  controls="controls" 待加
  poster="../assets/share.png"
  安卓同層播放屬性
  x5-video-player-type="h5" //啓用同層播放。取值固定爲'h5'。  啓用以後僅安卓在swiper第二頁播放豎屏不顯示畫面因此這裏暫不用
  x5-video-player-fullscreen="true" //設置爲 true 是防止橫屏
   x5-video-orientation="portraint" //豎屏 landscape 橫屏

  ios同層播放屬性
  airplay="allow"
  x-webkit-airplay="allow"
  playsinline="true" //IOS微信瀏覽器支持小窗內播放
  webkit-playsinline="true" // 這個屬性是ios 10中設置可讓視頻在小窗內播放,也就是否是全屏播放
 -->
    </video>
</div>

<style lang="less">
    .video_container{
        @w: 670px/2;
        @h: 377px/2;
        @borderRadius: 50px;
        width:@w;
        height:@h;
        margin:100px auto;
        border-radius:@borderRadius;
        overflow: hidden;
        position: relative;
        .clickVideo{
          position: absolute;
          width:@w;
          height:@h;
          background:#ccc;
          z-index:999;
          & > img {
            @play:60px;
            width:@play;
            height:@play;
            position:absolute;
            top:50%;
            left:50%;
            transform: translate(-50%, -50%)
          }
        }
        video{
          width:@w;
          height:@h;
        }
    }
</style>

注:若是你在swiper的非第一頁使用視頻,在安卓手機上會出現視頻黑屏但能夠播放聲音的問題,這個時候就能夠不使用安卓的同層播放,即不使用x5-video-player-type="h5"便可。
同層播放的資料參考連接:http://www.cnblogs.com/jinjin...ios

相關文章
相關標籤/搜索