Feature 特色
Velocity 提供了一些特色动画功能。
1. Transforms
Velocity 支持2D/3D变换动画, 比如translate, scale, rotate, skew等。
$element.velocity({
translateX: "200px",
rotateZ: "45deg"
});
以下列举了所有常用的 transform 相关可用属性:
{
/* translate */
translateX: 20, // 等同于"20px"
translateY: "1.5em",
translateZ: "20px", // IE10+
/* scale */
scale: 0.5,
scaleX: 0.5,
scaleY: 0.5,
/* rotate */
rotateZ: 45, // 等同于"45deg"
rotateX: "45deg", // IE10+
rotateY: "45deg", // IE10+
rotateZ: "45deg",
/* skew */
skewX: "30deg",
skewY: "30deg",
}
浏览器支持:> IE9
2. Colors 颜色动画
Velocity 颜色动画 支持的颜色属性有:color, backgroundColor, borderColor, outlineColor。 属性值支持:rgb, hsla, 十六进制颜色码,但不支持关键词 比如:"green"
$element.velocity({
backgroundColor: "#ff0000",
/* 背景色 RGBA 中的 A 透明度到50% */
backgroundColorAlpha: 0.5,
/* 字体颜色 RGB 中的 Red 到 50% (0.5 * 255) */
colorRed: "50%",
/* 字体颜色 RGB 中的 Blue 值叠加50 */
colorBlue: "+=50",
/* 字体颜色 RGBA 中的 A 透明度到85% */
colorAlpha: 0.85
});
3. SVG
Velocity 支持 SVG 元素动画,包含所有常用 SVG 属性, 例如:x, y, rx, fill, stroke-width, opacity 等。
$svgRectangle.velocity({
/* 坐标动画 */
x: 200,
r: 25,
/* 2D 变换动画 */
translateX: "200px",
/* 3D 变换动画(非IE浏览器) */
translateZ: "200px",
/* 颜色填充动画 "Fill" */
fill: "#ff0000",
strokeRed: 255,
strokeGreen: 0,
strokeBlue: 0,
/* 一些标准的 CSS 属性动画 */
opacity: 1,
width: "50%"
});
浏览器支持:>= IE9 和 >= Android 3.0
来看一个 SVG 动画 Demo:
<svg class="element">
<rect id="rect" width="50px" height="50px" x="1px" y="1px" fill="gray" stroke="rgba(80, 80, 80, 1)" stroke-width="0px" class="" style="fill: rgb(128, 255, 128); stroke-width: 2px; transform: rotateZ(0deg) scaleX(1);"></rect>
</svg>
svg {
display: block;
width: 100%;
}
rect {
transform-origin: 0% 0%;
}
$("#rect")
.velocity({ translateX: "+=200", rotateZ: 90, scaleX: 0.5, fill: "#00e5ff" })
.velocity("reverse", { delay: 250 });
4. Hook
Hook 可以设置多个CSS属性中的单独一个值,比如 "boxShadow", "clip"等,作用与 jQuery 的$.css()方法相似
关于哪些属性名可以使用,这里给出了参考:
$.Velocity.hook($element, "translateX", "500px"); // 值必须写上单位
$.Velocity.hook(elementNode, "textShadowBlur", "10px"); // 值必须写上单位
还可以获取单个 CSS 属性的值:
$.Velocity.hook($element, "translateX"); // 获取元素的translateX值
$.Velocity.hook(elementNode, "textShadowBlur");
5. Promises
Velocity 可以使用 ES6 的 Promises 对象的语法方式,但目前只有 Chrome 和 Firefox 支持, 如果你需要详细了解 Promises,可以阅读阮一峰老师写的 ECMAScript 6 入门-Promises对象
/* 使用 Velocity 的公有方法,$element 为dom选择器 可以用jQuery的 或 原生js的 */
$.Velocity.animate($element, { opacity: 0.5 })
/* 一旦动画执行完成 执行下面.then()中的回调函数(可以写多个.then())*/
.then(function(elements) { console.log("Resolved."); })
/* 捕获错误后的回调函数 */
.catch(function(error) { console.log("Rejected."); });
6. Mock
如果设置$.Velocity.mock = true; 会强制页面里所有的 Velocity 动画的duration 和delay值为 0sm,动画会直接跳转到结束状态,这个方法常用于代码调试。
也可以将$.Velocity.mock设置为一个整数,可以加快或减慢页面上所有的 Velocity 动画速度:
/* 页面里所有 Velocity 动画 将以10为系数减慢 */
$.Velocity.mock = 10;
7. Utility Function
Velocity 的公有方法,看下面示例:
/* 标准的多参数语法 */
var divs = document.getElementsByTagName("div");
$.Velocity(divs, { opacity: 0 }, { duration: 1500 });
另一种写法:
// 可选的单参数语法(idea 来源于 CoffeeScript)
// e:element - 元素,一个dom选择器
// p: properties - 属性map { property1: value1, property2: value2, … }
// o: options - 配置选项
var divs = document.getElementsByTagName("div");
$.Velocity({ e: divs, p: { opacity: 0 }, o: { duration: 1500 });