js怎么判断css3 video是否在播放

作者&投稿:秘孙 (若有异议请与网页底部的电邮联系)
html5 video标签在手机上播不了视频~

播放不了是因为手机浏览器不支持html5的这个video新特性。
iOS方面,根据苹果官方提供的文档,Mobile Safari支持包括视频 (video)和音频(audio) 标签,离线存储 (web storage),主流的CSS3效果 (transitions, animations, transforms, gradient, masks等)在内的HTML5特性的。此外,虽然未更新文档,4.2 据说也加入了对Web Sockets,部分XHR-2,加强了对Canvas和SVG的支持。可惜的是,似乎尚未支持Web Worker。

Android方面,Android 2.2 和 2.3 的浏览器对HTML5的支持似乎相对有限,应该支持CSS3 (因为他们都是webkit内核),不支持SVG和Web Sockets,部分支持Video标签 (WebM)。

CSS Animation Store
这个主意是通过一个简单的接口来访问CSS动画,实际上之前的Morf.js和CSSA中都有这样的处理,大部分代码已经有了,只需要整整,按照Chris所建议的接口风格写下来

从GitHub下载CSS Animation Store

下面是CSS Animation Store的基本接口(关于代码如何工作的信息),将代码放在标签之前,会创建一个全局的对象 CSSAnimations,这个对象包含所有当前可以使用的CSS动画

比如,获取名称为”spin”的动画,你可以按下面的代码:

var spin = CSSAnimations.spin;
参数spin是一个KeyframeAnimation实例,有下面的属性和函数:

keyframes – KeyframeRule 集合
original – 原始对象 WebKitCSSKeyframesRule 或者MozCSSKeyframesRule 类型
getKeyframeTexts() – 返回所有keyframe文本集合, e.g. [‘0%’, ‘50%’, ‘100%’]
getKeyframe(text) – 返回指定文字的 KeyframeRule 对象, e.g. getKeyframe(‘0%’)
setKeyframe(text, css) – 设置新的CSS, e.g.setKeyframe(‘10%’, {background: ‘red’, ‘font-size': ‘2em’})
可以看出,KeyframeRule提供了一些方法和函数,是对 WebKitCSSKeyframeRule 和MozCSSKeyframeRule (注意是frame不是frames)的封装,具有下面的属性和方法

css – 该keyframe的css内容, e.g. {background: ‘red’, ‘font-size': ‘2em’}
keyText – 该帧的名称, e.g. 10%
original – 原始对象 WebKitCSSKeyframeRule 或者MozCSSKeyframeRule
示例
获取动画中的所有帧

var spin = CSSAnimations.spin;

for(var i=0; i<spin.keyframes.length; i++)
console.log(spin.keyframes[i].css);
修改动画中的某一帧

var spin = CSSAnimations.spin;
spin.setKeyframe('10%', {background: 'red', 'font-size': '2em'});
反馈
给我博客或者GitHub留言,让我知道你的想法,我还开放了修改和增加的权限

使用原生JavaScript访问和创建CSS动画
如果你不想使用CSS Animation Store,或者只是想知道它的实现原理,可以参看下面的介绍

访问CSS动画

可以通过CSSOM访问keyframe动画,下面是我CSSA中的代码,用于访问指定的CSS动画

可以通过html5的video标签调取播放器,然后css3制作相关特效,配合js的ajax方法、json数据格式和后台交互!