【发布时间】:2015-01-27 10:45:09
【问题描述】:
我正在处理this experiment,但我遇到了问题。
我在 Chrome (40) 和 Windows 上工作,一切都像一个魅力,而不是我的 Mac 与 Chrome (41dev) 相比,过渡不如 Windows 上的顺利。
我真的不明白为什么会这样。
也许是因为我是这种动画的新手。
编辑:
我已将动画放在 requestAnimationFrame 中,但一切都发生了变化。
编辑 2:
我添加了一个条件来尝试触发动画ONCE,它触发正确,但在mac中仍然不流畅,有点小故障
那是我的 js:(最好在 codepen 上检查)
function move(){
var title = $('h1');
title
.css({
transform: "translate3d(0px,0px, 0px)",
WebkitTransform: "translate3d(0px,0px, 0px)",
MozTransform: "translate3d(0px,0px, 0px)",
msTransform: "translate3d(0px,0px, 0px)"});
}
function scrolling(lastScrollTop){
var vh =$(window).height();
vh = vh - 300;
var title = $("h1");
var posTitle = $("h1").offset().top;
var scrolled = $(window).scrollTop();
var leftTitle = $("h1").offset().left;
var moveY = -(posTitle - 300);
var moveX = -(leftTitle - 150);
var fired = false;
/* SCROLL DOWN*/
if (scrolled > lastScrollTop && scrolled < vh){
if( $('html,body').is(':not(:animated)') && fired == false ){
fired = true;
$('html,body').stop().animate({scrollTop : vh}, 700, function(){fired = false});
console.log("triggerato scende");
move();
title.removeClass("opening");
}
}
/* SCROLL UP*/
else{
if(scrolled < vh){if( $('html,body').is(':not(:animated)') ){
fired = true;
$('html,body').stop().animate({scrollTop : 0}, 700, function(){fired = false});
console.log("triggerato su");
title
.css({
transform: "translate3d("+ moveX + "px," + moveY + "px, 0px) scale3d(1.33,1.33,1)",
WebkitTransform: "translate3d("+ moveX + "px," + moveY + "px, 0px) scale3d(1.33,1.33,1)",
MozTransform: "translate3d("+ moveX + "px," + moveY + "px, 0px) scale3d(1.33,1.33,1)",
msTransform: "translate3d("+ moveX + "px," + moveY + "px, 0px) scale3d(1.33,1.33,1)" });
title.addClass("opening");
}
}
}
lastScrollTop = scrolled;
return lastScrollTop;
}
$(document).ready(function(){
var vh =$(window).height();
vh = vh - 300;
var title = $("h1");
var posTitle = title.offset().top;
var lastScrollTop = 0;
var scrolled;
var leftTitle = title.offset().left;
var moveY = -(posTitle - 300);
var moveX = -(leftTitle - 150);
$(title)
.css({
transform: "translate3d("+ moveX + "px," + moveY + "px, 0px) scale3d(1.33,1.33,1)",
WebkitTransform: "translate3d("+ moveX + "px," + moveY + "px, 0px) scale3d(1.33,1.33,1)",
MozTransform: "translate3d("+ moveX + "px," + moveY + "px, 0px) scale3d(1.33,1.33,1)",
msTransform: "translate3d("+ moveX + "px," + moveY + "px, 0px) scale3d(1.33,1.33,1)" });
setTimeout(function(){
$(title)
.css({"transition" : "all 0.7s",
"-webkit-transition" : "all 0.7s",
"-moz-transition" : "all 0.7s",
"-o-transition" : "all 0.7s"}
);
}, 300);
$(window).scroll(function(){
requestAnimationFrame(function(){
lastScrollTop = scrolling(lastScrollTop)});
});
});
有什么想法吗?谢谢大家。
【问题讨论】:
标签: javascript jquery html animation jquery-animate