gpt4 book ai didi

jquery - CSS Transition 未被执行

转载 作者:太空宇宙 更新时间:2023-11-03 20:54:57 25 4
gpt4 key购买 nike

我目前正在尝试为轮播式容器中的两个 div 元素设置动画。这是出现在 DOM 中的标记:

<div id="transitioner" style="width: 2880px; height: 775px; left: -1440px; ">
<div id="view1" class="view active" style="width: 1440px; height: 775px; ">
<header>
<h1>This is page 1</h1>
</header>
<article style="height: 699px; ">
<p>Tap me anywhere to go to the next view</p>
</article>
<footer>
<p>This is my footer</p>
</footer>
</div>
<div id="view2" class="view" style="width: 1440px; height: 775px; ">
<header style="">
<h1>This is page 2</h1>
</header>
</div>
</div>

这是 #transitioner 元素的 CSS:

#transitioner {
position: absolute;
top: 0;
-webkit-transition: all 0.2s ease-in-out;
}

最后,JS:

function GotoView(view)
{
var roller = $('<div id="transitioner" />');
roller.width((viewport.width * 2)).height(viewport.height);
var current = $('.view.active').clone(true, true);
$('.view.active').remove();
current.prependTo(roller);

var new_view = view.clone(true, true);
view.remove();
new_view.appendTo(roller);

roller.appendTo($('body'));
$('body').addClass('transitioning');
//window.setTimeout(function() { roller.css({ left: 0 - viewport.width }) }, 2000);
roller.css({ left: 0 - viewport.width });
}

我更新了包含 div 的左侧位置(即 #transitioner),但除非我放入 setTimeout,否则 CSS 过渡不执行,而是包含 div 只是“跳转”到所需的新 left 偏移量。

我整理了一个 jsFiddle,这样你就可以看到症状 > http://jsfiddle.net/XPUPQ/

我的问题是:这是怎么回事,如果不使用 JS setTimeout() 是否有任何方法可以避免这种情况?

最佳答案

你需要触发浏览器重排

http://jsfiddle.net/XPUPQ/1/

例如,您可以使用 $("body")[0].offsetWidth; 来做到这一点。

这实际上是一种合法的技术 twitter bootstrap uses例如

关于jquery - CSS Transition 未被执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11569467/

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