为什么动画设置加载在TweenMax中的两个单独的对象文字中
Why is animation settings loaded in two separate object literals in TweenMax?
我刚刚检查了这个Codepen,代码如下:
var tmax_options = {
repeat: -1,
yoyo: true
};
var tmax_tl = new TimelineMax(tmax_options),
tween_options_to = {
css: {
transform: 'scale(0)',
transformOrigin: 'center center'
},
ease: Cubic.easeInOut,
force3D: true
};
// Last Argument is Position Timing.
// Use this argument to stagger the visibility of surrounding circles
tmax_tl.to($('svg > circle:nth-of-type(1)'), 1, tween_options_to, 0)
.to($('svg > circle:nth-of-type(2)'), 1, tween_options_to, 0)
.to($('svg > circle:nth-of-type(3)'), 1, tween_options_to, 0)
.to($('svg > circle:nth-of-type(4)'), 1, tween_options_to, 0)
.to($('svg > circle:nth-of-type(5)'), 1, tween_options_to, 0)
.to($('svg > circle:nth-of-type(6)'), 1, tween_options_to, 0)
.to($('svg > circle:nth-of-type(7)'), 1, tween_options_to, 0)
我确实理解大多数JS,但我只是对不寻常的语法有一个非常普遍的问题——也就是说,我看到选项是从两个独立的对象文字加载的,比如:
var tmax_options = {
repeat: -1,
yoyo: true
};
这是第一个,然后:
tween_options_to = {
css: {
transform: 'scale(0)',
transformOrigin: 'center center'
},
ease: Cubic.easeInOut,
force3D: true
};
现在,为什么要单独加载动画设置?它们不能全部加载到一个对象文字中吗?我基本上只是想知道是否有任何令人信服的理由将设置加载到两个单独的对象文字中。
GSAP css:{}
对象是可选的。您可以将所有特性放置在一个对象中。css:{}
只是为了方便起见,并增加了一点性能提升,因为GSAP不需要为您包装CSS属性。但同样,它只是可选的,自GSAP 1.18.0版本以来,您不必再使用它了。
此外,如果您正在为CSS属性使用css:{}
对象包装器。然后应该将force3D: true
移动到css:{}
对象中,因为force3D
是GSAP CSSPlugin的一部分。
tween_options_to = {
css: {
transform: 'scale(0)',
transformOrigin: 'center center',
force3D: true
},
ease: Cubic.easeInOut
};
或者你可以把所有东西都放在一个对象中:
tween_options_to = {
transform: 'scale(0)',
transformOrigin: 'center center',
force3D: true,
ease: Cubic.easeInOut,
};
使用scale
属性也可以这样做。GSAP知道scale
是CSS transform
的一部分
tween_options_to = {
scale: 0,
transformOrigin: 'center center',
force3D: true,
ease: Cubic.easeInOut,
};
CSS转换的GSAP等价物:
- x=translateX()
- y=translateY()
- z=translateZ()
- 旋转=rotateZ()或rotate()
- rotationX=rotateX()
- 旋转Y=旋转Y()
- 串X=串X()
- strikeY=strikeY()
有关更多信息,请参阅GSAP CSSPlugin
文档:
http://greensock.com/docs/#/HTML5/GSAP/Plugins/CSSPlugin/
关于css:{}
包装的注意事项
最初,css特定的属性需要包装在自己的对象中,并像TweenLite.to(element,1,{css:{left:"100px",top:"50px"}})一样传入;以便引擎可以确定应该传递到CSSPlugin的属性,但由于在浏览器中设置DOM元素的动画非常常见,TweenSite和TweenMax(从1.8.0版本开始)会自动检查目标是否是DOM元素,如果是,它为您创建该css对象,并在tween首次渲染时将任何未直接在元素上定义或保留的属性(如onComplete、ease、delay等或scrollTo、easel等插件关键字)转移到该css对象中。在下面的代码示例中,我们将使用更简洁的样式,该样式省略了css:{}对象,但请注意,任何一种样式都是可以接受的。
例如:
//as of 1.8.0 the following lines produce identical results:
TweenLite.to(element, 1, {top:"20px", backgroundColor:"#FF0000", ease:Power2.easeOut});
//longer, less convenient syntax:
TweenLite.to(element, 1, {css:{top:"20px", backgroundColor:"#FF0000"}, ease:Power2.easeOut});
- 当两个单独的单词被放在目标上时,使用Jquery获取一个值
- 如何通过一个onclick事件更改两个单独的图像
- 为什么动画设置加载在TweenMax中的两个单独的对象文字中
- 画布创建两个单独的动画瀑布对象
- 两个单独的表单,输入具有相同的名称和id
- 从两个单独的函数创建 JQuery 悬停
- 添加混合 javascript 函数,使内容淡入列内的另一个内容/使其适用于两个单独的列
- 在一个函数中使用来自两个单独 JSON 文件的数据
- 开发两个单独的节点应用程序来提供 Web 服务和使用 Web 服务以在浏览器上呈现它是一个好主意吗?
- RequireJS 加载同一个模块两次以获得两个单独的命名空间
- 如何检查两个单独函数的执行结果
- 在两个单独的页面之间创建上滑过渡
- Td 高度在两个单独的桌子上
- 如何组合两个单独的Uint8Array的颜色数据(JPEG)和透明度数据(PNG)
- 在 Three.JS 中对齐来自两个单独对象的面时出现问题
- 将两个单独的元素附加到一个动画脚本
- 在一个字符串中用括号替换两个单独的正则表达式
- 将两个单独的数组组合成一个带有对象的数组
- php或javascript正则表达式-将第一个字母和剩余字符串作为两个单独的值返回
- 对两个单独的图元应用相同的切换