使用wordpress,我有一个页面模板(所以我可以在PHP中工作),我添加了一个样式标记。我需要使用变量控制高度和宽度,以便我的网站响应。我知道下面的内容不起作用,但我想解释一下我的心态。如果我可以在php中创建一个变量,那么每次为高度回显变量并在下面修改那将是完美的 - 除了我遇到明显的问题,我无法通过php得到窗口高度,因为它是服务器端,我不能包括jquery在样式标记内。对任何愚蠢的道歉,我只是想解释我的思考过程,并欢迎指出任何方向!感谢
@-webkit-keyframes custom_animation {
<?php $test = '<script>$(window).height()</script>'; ?>
0% {
-webkit-transform: translate(0%, <?php echo $test; ?> ) scale(.7);
}
37% {
-webkit-transform: translate(17%, 171%) scale(1);
}
44% {
-webkit-transform: translate(19%, 175%) scale(1);
}
50% {
-webkit-transform: translate(15%, 161%) scale(1);
}
100% {
-webkit-transform: translate(20%, 151%) scale(1);
}
答案 0 :(得分:2)
您可以使用jQuery的animate()
属性来设置CSS样式的动画。你会注意到这个属性不能自己处理某些更近期/高级的CSS样式(比如转换)......你可以通过动画其他东西来解决这个问题,比如数字,然后用这个数字应用CSS ,反复,整个动画过程:
var elem = $('.element-class');
$({num: 0}).animate({num: 100}, {
duration: 1000,
step: function(now) {
elem.css({
transform: 'translate(0%, '+now+'%)'
});
}
});
这允许您在对象中创建值,然后使用step
在动画的每个“步骤”设置CSS声明。
<强>更新强>
在回复你的评论时,你可以使用不同的方法来提供多个参数,以及将多个动画阶段链接在一起。我将引导你完成它,最后的最后一个演示:
var x, y, s, count;
x = 0;
y = $(window).height();
s = 0.7;
count = 1;
你需要一些变量来存储东西......你正在操作的每个属性都有一个变量,还有一个变量来存储你所在的动画的哪一步。
function animate(newX,newY,newS,duration){
$({x: x, y: y, s: s}).animate({x: newX, y: newY, s: newS}, {
duration: duration,
我创建了一个包围动画块的函数,这样我可以随时调用它,将新值传递给动画。初始对象使用变量设置起始点,这些变量存储每个属性的当前值。结束状态对象使用通过函数调用传入的值,以及持续时间。
complete: function(){
if(count < aq.length){
animate(aq[count][0],aq[count][1],aq[count][2],aq[count][3]);
count++;
}
},
我还添加了这个回调函数,该函数在动画的每个步骤完成后运行。这个函数基本上用我已经存储在数组中的新变量重新调用动画函数。我将循环回来在最后解释这个。
step: function(now,fx) {
if(fx.prop == 'x')
x = now;
if(fx.prop == 'y')
y = now;
if(fx.prop == 's')
s = now;
$('div').css({
transform: 'translate('+x+'%, '+y+'%) scale('+s+')'
});
}
与以前一样,step
函数设置了css声明..但这次我们还使用fx
函数提供的step
对象。此函数基本上分别遍历每个属性,因此您可以使用fx.prop
查看当前正在运行的属性,然后相应地更新变量。
// animation queue
var aq = [
[17,171,1,3700],
[150,75,2,700],
[15,261,1,600],
[200,51,4,5000]
];
您可以将动画队列构建为多维数组。基本上,一个数组存储一组数组,这些数组反过来存储动画每一步的所有值(x,y,s,持续时间)。
如果你回头看回调函数,你现在可以看到它们是如何实现的......每次调用它时,它都使用count
变量来查看我们在哪一步,然后抓取该数组中的所有值并将它们传递给函数。我在这做同样的事情:
animate(aq[0][0],aq[0][1],aq[0][2],aq[0][3]);
这是对animate
函数的第一次调用,它启动了一些动作。
查看整个演示,全部放在一起:
请注意,我根据您的百分比停止点设置了持续时间。 3700代表10秒的37%。
我已经改变了你的数字,使动画更加引人注目。请记住,平移百分比是相对于元素的大小,所以移动10%左右并不是很多,除非你的元素非常大。我假设你已经测试了你的CSS动画,并知道它们在做什么!
希望有所帮助,祝你好运!