[英]Responsive HTML5 Video Tag, multiple queries
我正在嘗試在html5 video
的source
標簽中使用media attribute
。 Firefox會在頁面加載時加載正確的三種大小的視頻,但Chrome會在所有頁面寬度上加載小視頻。 如果看不到media
屬性,請滾動到代碼右側。
video
標簽使用js
根據頁面寬度選擇合適的poster
。 如果您想知道那里發生了什么。
我使用CSS
使video
代碼更流暢,但我試圖為非桌面用戶(根據頁面寬度)節省大量下載資源。
我已經看到了media
屬性可能不受支持的幾件事,並且想知道這是為什么這在Chrome瀏覽器中失敗還是我做錯了。 或者,如果我應該嘗試使用javascript完成此操作,並替換掉source
代碼中的src
屬性。
如果不支持media
屬性,如果您想對我謙虛一點,可以有人聯系我,甚至可以發送LetMeGoogleThatForYou鏈接。
<video poster="" data-posterlarge="poster.jpg" data-postermedium="poster-medium.jpg" data-postersmall="poster-small.jpg" controls>
<source type="video/webm;codecs="vp8, vorbis"" src="video-small.webm" media="all and (max-width:480px)"></source>
<source type="video/mp4;codecs="avc1.42E01E, mp4a.40.2"" src="video-small.mp4" media="all and (max-width:480px)"></source>
<source type="video/webm;codecs="vp8, vorbis"" src="video-medium.webm" media="all and (min-width:480px) and (max-width:800px)"></source>
<source type="video/mp4;codecs="avc1.42E01E, mp4a.40.2"" src="video-medium.mp4" media="all and (min-width:480px) and (max-width:800px)"></source>
<source type="video/webm;codecs="vp8, vorbis"" src="video.webm"></source>
<source type="video/mp4;codecs="avc1.42E01E, mp4a.40.2"" src="video.mp4"></source>
<small>THIS BROWSER DOES NOT HAVE NATIVE VIDEO SUPPORT</small>
</video>
謝謝
由於source
標簽的內容(大小除外)都是相同的,因此下面的代碼僅合並並簡化了顯示內容。
如果需要,我可以制作一個jQuery版本,但這是一個純JS解決方案:
function size() {
var width = window.innerWidth, size = '', source;
if(width <= 480)
size = '-small';
else if(width > 480 && width <= 800)
size = '-medium';
source = '<source type="video/webm;codecs="vp8, vorbis"" src="video' + size + '.webm" media="all and (max-width:480px)"></source><source type="video/mp4;codecs="avc1.42E01E, mp4a.40.2"" src="video' + size + '.mp4" media="all"></source><small>THIS BROWSER DOES NOT HAVE NATIVE VIDEO SUPPORT</small>';
document.getElementById('video').innerHTML = source;
}
然后,從video
標簽中刪除所有代碼,因此您body
只有:
<video poster="" data-posterlarge="poster.jpg" data-postermedium="poster-medium.jpg" data-postersmall="poster-small.jpg" controls id="video"></video>
您可以通過在body
標簽上添加onload="videoSize()"
來將其稱為onload。 由於缺乏有關如何使用JSFiddle的知識,我不得不使用其內置系統來加載它: http : //jsfiddle.net/x8h5ebq6/2/
我在視頻標簽中添加了一個id
,但是如果您將document.getElementById('video').innerHTML
交換為document.getElementsByTagName('video')[0].innerHTML
,則對應的[0]
您要腳本定位的video
標簽頁面上的實例。 可以在以下位置看到它: http : //jsfiddle.net/x8h5ebq6/1/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.