将视频作为网页背景
一些门户网站采用视频作为网页背景,具有很好的展示效果,而随着HTML5技术的发展和浏览器支持程序的提升,采用视频作为网页背景也变得越来越容易。
技术分析
CSS里的background-image
属性只能使用图片、SVG、颜色或渐变色。但从技术讲,我们是可以伪造出一种效果,让视频以背景的角色出现在其它HTML元素后面。这其中的难点是视频要填充整个浏览器页面,而且要响应浏览器窗口大小的变化。
视频作为网页背景,需要考虑一下这几个问题:
- 作为背景的视频应该设置为自动播放(set to
autoplay
),而默认状态下应该是关闭声音(视频里面最好不含声音)。 - 背景视频应该有个替代图片,当浏览器不支持这种HTML5技术、视频格式时用图片替代。
- 视频长度很重要(12-30秒之间)。
- 视频的体积应很小,尽量的压缩。同时,它需要在不同尺寸设备上自动的适应屏幕大小。如果有可能,应该使用JavaScript控制对不同的屏幕大小加载不同分辨率的背景视频。
视频格式
当前,video 元素支持三种视频格式:
Format | IE | Firefox | Opera | Chrome | Safari |
---|---|---|---|---|---|
Ogg | No | 3.5+ | 10.5+ | 5.0+ | No |
MPEG4 | 9.0+ | No | No | 5.0+ | 3.0+ |
WebM | No | 4.0+ | 10.6+ | 6.0+ | No |
视频格式说明:
- Ogg = 带有 Theora 视频编码和 Vorbis 音频编码的 Ogg 文件
- MPEG4 = 带有 H.264 视频编码和 AAC 音频编码的 MPEG 4 文件
- WebM = 带有 VP8 视频编码和 Vorbis 音频编码的 WebM 文件
具体实现
HTML5支持video
标签,因此,很容易插入一段视频:
<video autoplay loop poster="polina.jpg" id="bgvid">
<source src="polina.webm" type="video/webm">
<source src="polina.mp4" type="video/mp4">
</video>
这里摆放视频格式的顺序很重要,因为有些版本的谷歌浏览器里,如果.webm
格式的视频放在了其他视频后面,视频将无法播放。
我们使用视频的第一帧图像作为视频的封面图片,这样,当背景视频一旦加载完成,我们可以看到很流畅的从图片过度到背景视频播放。
接下俩,通过CSS控制视频全屏:
video#bgvideo {
position: fixed; right: 0; bottom: 0;
min-width: 100%; min-height: 100%;
width: auto; height: auto; z-index: -100;
background: url(polina.jpg) no-repeat;
background-size: cover;
}
注意需要在CSS中使用background
属性来控制页面背景,在较老版本的浏览器上,当视频无法播放时,使用背景图片作为网页背景。
HTML 5中的video
标签支持通过control
属性供添加播放、暂停和音量控件。例如:
<video controls="controls" width="800" height="480">
Your browser does not support the video tag.
<source src="polina.webm" type="video/webm">
<source src="polina.mp4" type="video/mp4">
</video>
在网页上显示内容
要想在以视频为背景的网页上显示内容,只需要创建一个div
做容器,在设置CSS样式即可:
<div id="polina">
<h1>POLINA</h1>
<p>filmed by Alexander Wagner 2011</p>
</div>
控制样式:
#polina {
font-family: Agenda-Light, Agenda Light, Agenda, Arial Narrow, sans-serif;
font-weight: 100;
background: rgba(0,0,0,0.3);
color: white;
padding: 2rem;
width: 33%;
margin: 2rem;
float: right;
font-size: 1.2rem;
}
控制视频播放
可以通过创建一个button
来控制背景视频的播放,只需要同构javascript脚本来绑定事件即可:
<button>Pause</button>
CSS:
#polina button {
display: block; width: 80%; padding: .4rem; border: none; margin:1rem auto;
font-size: 1.3rem;
background: rgba(255,255,255,.23);
color: #fff;
border-radius: 3px;
cursor: pointer;
-webkit-transition:.3s background;
transition: .3s background;
}
#polina button:hover{
background: rgba(0,0,0,.5)
}
事件脚本:
首先,通过document.querySelector
获取button
控件,然后通过addEventListener
绑定事件即可。
var video = document.getElementById("bgvideo"),
pauseButton = document.querySelector("#polina button");
pauseButton.addEventListener("click",function() {
video.classList.toggle("stopfade");
if(video.paused) {
video.play();
pauseButton.innerHTML="Pause";
}
else {
video.pause();
pauseButton.innerHTML="Paused";
}
},false);
video.addEventListener('touchstart',function(e){e.preventDefault();video.play();})
在线演示:将视频作为网页背景(演示)。