當(dāng)我編碼Elemin Theme(我最近設(shè)計(jì)的一個響應(yīng)式的站點(diǎn))的時候,我遇到的一個跳幀就是,如何能讓嵌入式的視頻在尺寸變化上變得更加靈活。使用max-width:100% 和height:auto可以讓html5的video標(biāo)簽很好的工作,但是這個解決方案不適用于iframe 或者 object標(biāo)簽的內(nèi)嵌代碼。通過幾小時的尋找資料和實(shí)驗(yàn),我最終找到了解決辦法。當(dāng)你在進(jìn)行響應(yīng)式設(shè)計(jì)的時候,這一css技巧能派上用場。
靈活的html5 video標(biāo)簽
使用html5的video,可以通過設(shè)置max-width:100%讓他變得靈活。前面的介紹中,已經(jīng)提到他不適用于常用的iframe和object中的內(nèi)嵌代碼。
video {
max-width: 100%;
height: auto;
}
靈活的Object & Iframe 內(nèi)嵌視頻
這個技巧相當(dāng)簡單,你需要為video添加一個<div>容器,并且將div的padding-bottom屬性值設(shè)置在50%到60%之間。然后設(shè)置子元素(ifame或者object)的width和height為100%,并且使用絕對定位。這樣會迫使內(nèi)嵌對象自動擴(kuò)充到最大。
CSS
.video-container {
position: relative;
padding-bottom: 56.25%;
padding-top: 30px;
height: 0;
overflow: hidden;
}
.video-container iframe,
.video-container object,
.video-container embed {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
HTML
<div class="video-container">
<iframe src="http://player.vimeo.com/video/6284199?title=0&byline=0&portrait=0" width="800" height="450" frameborder="0"></iframe>
</div>
在固定寬度下實(shí)現(xiàn)靈活性
如果限制了視頻的寬度,那么我們需要一個額外的<div>容器包裹video,并為div設(shè)置固定寬度和max-width:100%。
CSS
.video-wrapper {
width: 600px;
max-width: 100%;
}
HTML
<div class="video-wrapper">
<div class="video-container">
<iframe src="http://player.vimeo.com/video/6284199?title=0&byline=0&portrait=0" width="800" height="450" frameborder="0"></iframe>
</div>
<!-- /video -->
</div>
<!-- /video-wrapper -->
兼容性
這個技巧支持所有的瀏覽器,包括:Chrome, Safari, Firefox, Internet Explorer, Opera, iPhone 和 iPad。