【发布时间】:2013-10-27 23:35:46
【问题描述】:
好吧,这将是艰难的......希望大师们提出解决方案!
这很难解释,但这里是..
我有两个元素:
<style>
#elem1 {
position:absolute;
left:-1400px;
z-index:1000;
width:100%;
}
.anim {
-webkit-transition: -webkit-transform 0.5s ease;
-moz-transition: -moz-transform 0.5s ease;
-ms-transition: transform 0.5s ease;
-o-transition: -o-transform 0.5s ease;
transition: transform 0.5s ease;
}
.overr {
transform:translate(1400px,0);
-ms-transform:translate(1400px,0);
-webkit-transform:translate(1400px,0);
-webkit-backface-visibility: hidden;
-webkit-perspective: 1000;
}
</style>
<script>
$('#btn a').click(function(){
currentPos = $(window).scrollTop();
$('#elem1).toggleClass('overr');
$('#elem1).attr('style', 'top:' + currentPos + 'px;');
setTimeout(function() {
$('#elem2').toggle(0);
$('#elem1').attr('style', 'top:0');
$(window).scrollTop( 0 );
}, 500)
});
</script>
<div id="elem1" class="anim">content here</div>
<div id="elem2">content 2 here></div>
我想在这里实现的是: 元素 2 根本没有样式,只是一个普通的元素。 单击按钮,获得#elem2 位置,将#elem1 像抽屉一样从左侧拉出,使其顶部位于屏幕的当前位置,然后隐藏#elem2,#elem1 到顶部并且屏幕向上滚动。
结果是,我在同一页面上,在底部的顶部加载完全不同的内容,我可以滚动而不会过度滚动(这在 iphone 上非常需要 - 移开顶部和底部栏 - 实际上这就是我需要这个的原因)。
问题:
问题是屏幕在最后一个 $(window).scrollTop( 0 ) 处闪烁 - 该死的屏幕闪烁。如果我在页面顶部启动脚本,它不会闪烁。
a) 我尝试更改脚本的顺序,但更改内容并没有给我所需的结果。 b) 将过渡效果更改为“线性”会更好,但您仍然可以看到它。
我知道这件事很难,但希望有人能帮我解决这个问题!
edit:看起来像 $('#elem2').toggle(0) 和 $(window).scrollTop(0) 同时触发,所以在它闪烁的瞬间看起来它也带来了#elem2 在顶部,这就是它闪烁的原因...:/ 到目前为止,我在这上面浪费了大约 4 个小时 :(
edit2:即使完全删除动画过渡,仍然会闪烁。我去睡觉了,不能再保持清醒了..希望我能得到一份早间礼物:/
【问题讨论】:
-
如果你有这个直播(不是 jsfiddle,所以我们可以在 iOS 上尝试实际的网站),人们可以检查链接,你可能会得到你正在寻找的响应。如果这不可能,一个 jsfiddle 总比没有好。
-
我意识到这一点,但不幸的是,我还不能分享有关现场网站的任何信息。我暂时找到了一种解决方法(完全取代了上述操作),但我真的很想知道有关此的解决方案。我已将问题缩小到:stackoverflow.com/questions/19469988/…。这是导致问题的原因,同时运行 2 个功能
-
此问题是否出现在实际的 iOS 设备上,或者您是否在桌面浏览器版本中进行测试?请提供有关出现此问题的平台和浏览器的信息。
-
它出现在我的 iphone 4s 上的 IOS7 上。
标签: jquery iphone ios css flicker