CSS翻页效果

时间:2013-10-14 13:37:27

标签: javascript css3 css-transitions css-transforms flipboard

我正在构建一个类似于FlipBoard的Web应用程序。

起初,我试图使用this open source。但我真的不喜欢它的实现方式(为每个页面创建重复项并在旋转时相互重叠)...另外,当我在每个页面中添加动态内容时,翻转效果变得非常不稳定......

所以现在我用css和javascript实现我自己的翻转效果..

页面结构就像这样

<div class="page" id="page1">
    <div class="inner"></div>
</div>
<div class="page" id="page2">
    <div class="inner"></div>
</div>

当触发翻转时...我做了以下...但我发现它不优雅,因为它应该是一个平滑的180度旋转而不是将动作分成两个...... 我有的问题是z-index ..旋转-90deg之后,我希望“返回”页面显示在顶部,否则它将始终是“前端”...

    var front = '<div class="front" style="clip: rect(0px, 2229px, 1315px, 1115px);">' + $('#page2').children('.megafolio-container').html() + '</div>';
    var back = '<div class="back megafolio-container" style="clip: rect(0px, 2229px, 1315px, 1115px);">' + $('#page3').children('.megafolio-container').html() + '</div>';
    var middle = '<div class="middle page"></div>';
    $('.container').append(middle);
    $('.middle').html(front + back);
    $('.middle').height($(window).height());
    $('.middle').width($(window).width());
    $('.middle').css('-webkit-transform', 'rotateY(-90deg)');
    $('.middle').css('-webkit-transition', '-webkit-transform 500ms linear');
    setTimeout(function(){
        $('.middle > .back').css('z-index', 10);
        $('.middle').css('-webkit-transform', 'rotateY(-180deg)');
        $('.middle').css('-webkit-transition', '-webkit-transform 500ms linear');
    }, 500);

1 个答案:

答案 0 :(得分:1)

试试这个“ Turnjs ”这是一个简单的Javascript API,可以实现翻页效果:

Turnjs

它非常易于使用,网站上提供的一个简单示例就是:

<div id="flipbook">
<div class="hard"> Turn.js </div>
<div class="hard"></div>
<div> Page 1 </div>
<div> Page 2 </div>
<div> Page 3 </div>
<div> Page 4 </div>
<div class="hard"></div>
<div class="hard"></div>

<script type="text/javascript">
    $("#flipbook").turn({
        width: 400,
        height: 300,
        autoCenter: true
    });
</script>