原文地址:the tristan washing machine
系列地址:颠覆网络35天
====================================
这个演示还是来自Paul Rouget。非常简单但是非常有趣的演示,把视频、SVG和变形等效果组合在一起。

演示把HTML5的<video>元素放到了SVG文档中:
<svg:svg xmlns:svg=“http://www.w3.org/2000/svg”
width=“194″ height=“194″>
<svg:foreignObject x=“1″ y=“1″ width=“192″ height=“192″>
<html:video src=“tristan3.ogv” ontimeupdate=“rotateMePlease()”/>
</svg:foreignObject>
</svg:svg>
同样在代码中可以看到,播放器的其他部分也都是在SVG中定义和控制的。我们同样使用一些Firefox 3.5中的CSS 和SVG新特性来定义播放器。例如,如果查看CSS的代码的话,会看到:
#video {
filter: url(#filter);
clip-path: url(#circle);
}
clip-path属性允许为任何HTML、SVG等元素定义裁剪路径。我们这里定义的裁剪路径是:
<svg:clipPath id=“circle” clipPathUnits=“objectBoundingBox”>
<svg:circle cx=“0.5″ cy=“0.5″ r=“0.5″/>
</svg:clipPath>
filter属性允许你定义SVG过滤器,用法跟裁剪路径类似。在我们的例子中,我们使用feColorMatrix:
<svg:filter id=“filter”>
<svg:feColorMatrix values=“0.3 0.3 0.3 0 0 0.3 0.3 0.3 0 0 0.3 0.3 0.3 0 0 0 0 0 1 0″/>
</svg:filter>
您还可以在Firefox 3.5中使用SVG来为任何元素定义色彩渐变蒙板,不过这个演示中还没有演示到。
当视频在播放时,演示中还使用变形属性来旋转视频:
function rotateMePlease() {
// Sure
if (!video) return;
video.style.MozTransform=‘rotate(’ + i + ‘deg)’;
i += 3;
}
您可能已经注意到,Paul使用XHTML构建这个演示,小心的使用命名空间和XML语法。但是大部分人会希望在简单的HTML中使用SVG。在Firefox 3.5中,可以使用SVG 外部文档引用来实现这个。其实就是,您可以像实现CSS那样,在HTML文档外部定义SVG,然后在文档中引用:
.target { clip-path: url(resources.svg#c1); }
上述语句定义了使用resources.svg文件读取SVG定义,然后使用ID为“c1”的对象作为目标的裁剪路径。非常简单的可以加入SVG定义而不是非要使用XHTML。
希望这个演示能够激发更多的想象,把SVG、HTML、视频和CSS所有的混合在一起~ Enjoy!
[译注] Tristan是Mozilla France和欧洲的负责人之一,就是上面演示中视频里面被恶搞的主角。