CSS Transition未执行

Ben*_*enM 0 mobile jquery webkit css3 css-transitions

我目前正在尝试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>
Run Code Online (Sandbox Code Playgroud)

这是#transitioner元素的CSS :

#transitioner {
    position: absolute;
    top: 0;
    -webkit-transition: all 0.2s ease-in-out;
}
Run Code Online (Sandbox Code Playgroud)

最后,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 });
}
Run Code Online (Sandbox Code Playgroud)

我更新了包含div(ie #transitioner)的左侧位置,但除非我输入,否则setTimeoutCSS转换不会执行,而是包含div简单地"跳转"到所需的新left偏移量.

我已经把一个jsFiddle放在一起所以你可以看到症状> http://jsfiddle.net/XPUPQ/

我的问题是:这是怎么回事,没有使用JS setTimeout()有什么方法可以绕过这个?

Esa*_*ija 5

您需要触发浏览器重排

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

$("body")[0].offsetWidth;例如,您可以这样做.

这实际上是一个合法的技术,Twitter的引导使用例如