gpt4 book ai didi

php - Webkit 转换使用 jquery

转载 作者:太空宇宙 更新时间:2023-11-04 04:17:08 25 4
gpt4 key购买 nike

使用 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);
}

最佳答案

您可以使用 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 声明。

http://jsfiddle.net/X8SYg/

更新

作为对您评论的回应,您可以使用不同的方法来提供多个参数,以及将多个动画阶段链接在一起。我将引导您完成它,最后有一个最终演示:

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,

我创建了一个函数来环绕动画 block ,这样我就可以随时调用它,将新值传递给动画。初始对象使用变量设置起点,这些变量存储每个属性的当前值。结束状态对象使用通过函数调用传入的值,持续时间也是如此。

        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声明..但是这次我们也使用了step函数的fx对象补给品。此函数基本上分别遍历每个属性,因此您可以使用 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 函数的第一次调用,它使事情开始运动。

查看整个演示,全部放在此处:

http://jsfiddle.net/5GWxX/3/

请注意,我根据您的百分比停止点设置持续时间。 3700 代表 10 秒的 37%。

我已经稍微更改了您的数字,以使动画更加引人注目。请记住,转换百分比与元素的大小有关,因此除非您的元素非常大,否则移动 10% 左右并不是很多。我假设您已经测试过 CSS 动画并且知道它们在做什么!

希望对您有所帮助,祝您好运!

关于php - Webkit 转换使用 jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19749961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com