CSS 转换不会在没有 setTimeout 的情况下运行
css transform won't run without setTimeout
我正在为iPhone创建一个HTML5应用程序,使用Sencha Touch 2在UIWebview中运行。
我创建了几种方法来帮助自己制作css动画。其中一个确实为我翻译了 Y 轴。我已经在我的CSS中设置了诸如-webkit-backface-visibility之类的东西,以帮助平滑动画。我尝试过webkit perspective和webkit preserve-3d,但它们似乎没有帮助。
无论如何,我已经将动画制作到非常流畅的程度。问题是,如果我同时翻译一大组元素,其中一个不会翻译。
假设我向上翻译 A、B、C、D、E 和 F。F 将直接跳到最后 - 没有翻译。这几乎就像在 -webkit-transition-duration 之前设置了 -webkit-transform,这不是我的代码中发生的事情。此外,A、B、C、D 和 E 动画完美无缺。
我什至不确定这是否是我为一大组元素制作动画时独有的,但现在似乎就是这样。如果它发生在F身上,它将永远发生在F身上——所以它至少在这个意义上是一致的。
我甚至尝试通过动态创建一个具有等于转换和持续时间的新类样式的元素来修复它,将其嵌入到 DOM 中,然后将元素的类设置为等于样式的类。我遇到了同样的问题。
问题是,如果我在setTimeout函数中嵌入Animations.translateY的最后一行,即使是1毫秒的延迟,所有内容也将始终动画化。但是,这会导致屏幕在~33%的时间内闪烁,我猜这是由于设置超时太多?
至于浏览器的一致性,我看到我的PC上的chrome和iPhone设备上的UIWebview都缺少动画(没有setTimeout)。我只在iPhone设备上看到闪烁(使用setTimeout)。
Animations.translateY = function(element, measurement, duration, callback, easing)
{
Animations.setAnimationCallback(element,callback)
var css = "translate3d(0,"+measurement+",0)";
duration = parseFloat(duration);
element.style['-webkit-transition-duration'] = duration + 's';
element.style['-webkit-transform'] = css
}
动画回调代码..我觉得这无关紧要,因为回调实际上永远不会触发(取 0 的动画不会触发回调)
Animations.setAnimationCallback = function(element, callback)
{
//set callback handler
element.addEventListener('webkitTransitionEnd',
function(){
//set animation duration back to 0
this.style['-webkit-transition-duration'] = "0s";
if(callback != null)
{
callback();
}
this.removeEventListener('webkitTransitionEnd', arguments.callee, null);
});
}
它似乎适用于以下内容: http://jsfiddle.net/cuzzea/9WGGf/我刚刚更改了您的函数:
"translate3d(0,"+measurement+",0)"
自
"translate3d(0,"+measurement+"px,0)"
没有测量("px"),它不起作用。
- 如何在未直接触发的情况下停止事件
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 在不使用jquery的情况下查找页面中的所有锚点并附加函数
- setTimeout()在忽略间隔的情况下重复调用函数
- CSS转换获胜't在没有“setTimeout”的情况下运行
- CSS 转换不会在没有 setTimeout 的情况下运行
- setTimeout()是如何实现的,这样它就可以在不阻塞主线程的情况下跟踪经过的时间
- 使用 setTimeout 在不阻止输入的情况下运行大型任务,并使用 Promise 找出任务何时完成
- 在不完成当前循环的情况下立即停止setTimeout循环
- 如何在不使用setTimeout的情况下运行/构建一个简单的计时器
- 如何在不知道其ID的情况下清除所有setInterval()和setTimeOut()
- 为什么在这种情况下没有调用setTimeOut
- 在没有Javascript's setTimeout()的情况下刷新数据库条目后的页面
- javascript窗口.setTimeout在特定情况下执行两次
- 在这种情况下使用window.setTimeout()和window.setInterval()
- 在这种情况下如何使用JavaScript setTimeout()
- Nodejs如何在没有settimeout的情况下访问回调结果
- 是否可以在不使用setTimeout()函数的情况下获得粘贴的文本
- 在没有setTimeout的情况下模拟JavaScript中的文本键入效果
- 如果在没有警报的情况下使用,Jquery setTimeout将不起作用