首頁 >web前端 >H5教程 >如何解決layer彈出層中H5播放器全螢幕出錯

如何解決layer彈出層中H5播放器全螢幕出錯

不言
不言原創
2018-06-25 10:17:443114瀏覽

本文主要介紹了layer彈出層中H5播放器全螢幕出錯解決&屬性poster底圖佔滿video的方法,具有很好的參考價值,下面跟著小編一起來看下吧

1.

在layer彈窗元件中

如果使用了flash播放器,全螢幕是正常的

但若使用了HTML5的播放器,全螢幕失效

舉個栗子

#
<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <title></title>
 <script src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script>
 <script src="layer/layer.js"></script>
 <style>
 </style>
</head>
<body>
<h1>我是字</h1>
<p id="box">
<video id="video" controls preload="auto" width="400px" height="300px">
 <source src="http://movie.ks.js.cn/flv/other/1_0.mp4" type="video/mp4">
</video>
</p>
<script>
 layer.open({
 type: 1,
 title: false,
 shadeClose: true,
 area: [&#39;400px&#39;, &#39;350px&#39;],
 content: $(&#39;#box&#39;),
 success: function(layero){
 }
 });
</script>
</body>
</html>

可以看到全螢幕不正常了

透過偵錯發現是這個class的處理影響了全螢幕的展示

所以,目前的解決方法是在layer層創建之後,移除這個class即可(注意在success回呼中置於下一輪事件循環)

layer.open({
 type: 1,
 title: false,
 shadeClose: true,
 area: [&#39;400px&#39;, &#39;350px&#39;],
 content: $(&#39;#box&#39;),
 success: function(layero){
  console.log(layero)
  // hack处理layer层中video播放器全屏样式错乱问题
  setTimeout(function() {
  // $(layero).removeClass(&#39;layer-anim&#39;);
  }, 0);
 }
 });

#2.

video標籤的poster屬性指涉影片未播放前放置的一張圖片

如果video容器寬高小於等於poster圖的寬高,則圖片能充滿容器,反之容器左右就會預留黑色欄

除了手動更換一張大圖之外,可以結合CSS來控制,實現鋪滿

舉個栗子

##

<p id="box">
 <video id="video" controls preload="auto" width="700" height="300" poster="../poster.png" >
  <source src="http://movie.ks.js.cn/flv/other/1_0.mp4" type="video/mp4">
 </video>
</p>

現在圖片寬度比容器小,沒鋪滿,參考這裡的討論可以用CSS讓其撐開(這裡相當於放大了,不想放大需自行更換大圖)

# poster裡放一個透明圖片(這裡使用了一個1px*1px的base64格式透明圖片),再用css定義video的background並將其覆蓋住

<p id="box">
 <video id="video" controls preload="auto" width="700" height="300" poster="data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==" >
  <source src="http://movie.ks.js.cn/flv/other/1_0.mp4" type="video/mp4">
 </video>
</p>

#

video {
  background: transparent url(&#39;../poster.png&#39;) no-repeat 0 0; 
  -webkit-background-size: cover; 
   -moz-background-size: cover; 
    -o-background-size: cover; 
    background-size: cover; 
 }

#以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關推薦:

html5和css3以及jquery實作音樂播放器

關於HTML5中video標籤瀏覽器相容性增強的方案分享

以上是如何解決layer彈出層中H5播放器全螢幕出錯的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn