在好例子网,分享、交流、成长!
您当前所在位置:首页js 开发实例高级JavaScript组件 → js 翻书效果 实例源码下载

js 翻书效果 实例源码下载

高级JavaScript组件

下载此实例
  • 开发语言:js
  • 实例大小:20.38M
  • 下载次数:25
  • 浏览次数:373
  • 发布时间:2016-09-07
  • 实例类别:高级JavaScript组件
  • 发 布 人:夏星夜
  • 文件格式:.rar
  • 所需积分:2
 相关标签: 翻书

实例介绍

【实例简介】很好的翻书效果,逼真有趣
【实例截图】
【核心代码】/* Steve jobs' book */

function updateDepth(book, newPage) {

    var page = book.turn('page'),
        pages = book.turn('pages'),
        depthWidth = 16*Math.min(1, page*2/pages);

        newPage = newPage || page;

    if (newPage>3)
        $('.sj-book .p2 .depth').css({
            width: depthWidth,
            left: 20 - depthWidth
        });
    else
        $('.sj-book .p2 .depth').css({width: 0});

        depthWidth = 16*Math.min(1, (pages-page)*2/pages);

    if (newPage<pages-3)
        $('.sj-book .p111 .depth').css({
            width: depthWidth,
            right: 20 - depthWidth
        });
    else
        $('.sj-book .p111 .depth').css({width: 0});

}

function loadPage(page) {

    $.ajax({url: 'pages/page' page '.html'}).
        done(function(pageHtml) {
            $('.sj-book .p' page).html(pageHtml.replace('samples/steve-jobs/', ''));
        });

}

function addPage(page, book) {

    var id, pages = book.turn('pages');

    if (!book.turn('hasPage', page)) {

        var element = $('<div />',
            {'class': 'own-size',
                css: {width: 460, height: 582}
            }).
            html('<div class="loader"></div>');

        if (book.turn('addPage', element, page)) {
            loadPage(page);
        }

    }
}

function numberOfViews(book) {

    return book.turn('pages') / 2 1;

}

function getViewNumber(book, page) {

    return parseInt((page || book.turn('page'))/2 1, 10);

}

function zoomHandle(e) {

    if ($('.sj-book').data().zoomIn)
        zoomOut();
    else if (e.target && $(e.target).hasClass('zoom-this')) {
        zoomThis($(e.target));
    }

}

function zoomThis(pic) {

    var    position, translate,
        tmpContainer = $('<div />', {'class': 'zoom-pic'}),
        transitionEnd = $.cssTransitionEnd(),
        tmpPic = $('<img />'),
        zCenterX = $('#book-zoom').width()/2,
        zCenterY = $('#book-zoom').height()/2,
        bookPos = $('#book-zoom').offset(),
        picPos = {
            left: pic.offset().left - bookPos.left,
            top: pic.offset().top - bookPos.top
        },
        completeTransition = function() {
            $('#book-zoom').unbind(transitionEnd);

            if ($('.sj-book').data().zoomIn) {
                tmpContainer.appendTo($('body'));

                $('body').css({'overflow': 'hidden'});
                
                tmpPic.css({
                    margin: position.top 'px ' position.left 'px'
                }).
                appendTo(tmpContainer).
                fadeOut(0).
                fadeIn(500);
            }
        };

        $('.sj-book').data().zoomIn = true;

        $('.sj-book').turn('disable', true);

        $(window).resize(zoomOut);
        
        tmpContainer.click(zoomOut);

        tmpPic.load(function() {
            var realWidth = $(this)[0].width,
                realHeight = $(this)[0].height,
                zoomFactor = realWidth/pic.width(),
                picPosition = {
                    top:  (picPos.top - zCenterY)*zoomFactor zCenterY bookPos.top,
                    left: (picPos.left - zCenterX)*zoomFactor zCenterX bookPos.left
                };


            position = {
                top: ($(window).height()-realHeight)/2,
                left: ($(window).width()-realWidth)/2
            };

            translate = {
                top: position.top-picPosition.top,
                left: position.left-picPosition.left
            };

            $('.samples .bar').css({visibility: 'hidden'});
            $('#slider-bar').hide();
            
        
            $('#book-zoom').transform(
                'translate(' translate.left 'px, ' translate.top 'px)'
                'scale(' zoomFactor ', ' zoomFactor ')');

            if (transitionEnd)
                $('#book-zoom').bind(transitionEnd, completeTransition);
            else
                setTimeout(completeTransition, 1000);

        });

        tmpPic.attr('src', pic.attr('src'));

}

function zoomOut() {

    var transitionEnd = $.cssTransitionEnd(),
        completeTransition = function(e) {
            $('#book-zoom').unbind(transitionEnd);
            $('.sj-book').turn('disable', false);
            $('body').css({'overflow': 'auto'});
            moveBar(false);
        };

    $('.sj-book').data().zoomIn = false;

    $(window).unbind('resize', zoomOut);

    moveBar(true);

    $('.zoom-pic').remove();
    $('#book-zoom').transform('scale(1, 1)');
    $('.samples .bar').css({visibility: 'visible'});
    $('#slider-bar').show();

    if (transitionEnd)
        $('#book-zoom').bind(transitionEnd, completeTransition);
    else
        setTimeout(completeTransition, 1000);
}


function moveBar(yes) {
    if (Modernizr && Modernizr.csstransforms) {
        $('#slider .ui-slider-handle').css({zIndex: yes ? -1 : 10000});
    }
}

function setPreview(view) {

    var previewWidth = 115,
        previewHeight = 73,
        previewSrc = 'pages/preview.jpg',
        preview = $(_thumbPreview.children(':first')),
        numPages = (view==1 || view==$('#slider').slider('option', 'max')) ? 1 : 2,
        width = (numPages==1) ? previewWidth/2 : previewWidth;

    _thumbPreview.
        addClass('no-transition').
        css({width: width 15,
            height: previewHeight 15,
            top: -previewHeight - 30,
            left: ($($('#slider').children(':first')).width() - width - 15)/2
        });

    preview.css({
        width: width,
        height: previewHeight
    });

    if (preview.css('background-image')==='' ||
        preview.css('background-image')=='none') {

        preview.css({backgroundImage: 'url(' previewSrc ')'});

        setTimeout(function(){
            _thumbPreview.removeClass('no-transition');
        }, 0);

    }

    preview.css({backgroundPosition:
        '0px -' ((view-1)*previewHeight) 'px'
    });
}

function isChrome() {

    // Chrome's unsolved bug
    // http://code.google.com/p/chromium/issues/detail?id=128488

    return navigator.userAgent.indexOf('Chrome')!=-1;

}

标签: 翻书

实例下载地址

js 翻书效果 实例源码下载

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

第 1 楼 lanyucao 发表于: 2017-12-12 17:10 57
感谢你发分享!!!

支持(0) 盖楼(回复)

发表评论

(您的评论需要经过审核才能显示)

查看所有1条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警