HTML+CSS+JavaScript实现书本翻页效果

img


(图1)

img

(图2)

img


(图3)
当鼠标悬停在书本边缘是会有一个书页准备翻页的动画(如图3),然后在点击左右两侧的按钮时书本会翻页(如图1)(这里要是能将左右两侧的按钮效果作用在书页上就更好了)最终的效果如图2(本人js初学者,如有需要用到js代码,请各位答主能做好备注,不胜感激)

题注这个实际就是jBooklet翻书效果。源代码提取出来如下


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>

<head>

    <title>jquery实现左右翻书效果</title>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <base href="https://www.jq22.com/demo/jquery-fanshu-150325215701/" />


    <script src="https://www.jq22.com/jquery/1.4.4/jquery.min.js"></script>

    <script src="booklet/jquery.easing.1.3.js" type="text/javascript"></script>

    <script src="booklet/jquery.booklet.1.1.0.min.js" type="text/javascript"></script>



    <link href="booklet/jquery.booklet.1.1.0.css" type="text/css" rel="stylesheet" media="screen" />

    <link rel="stylesheet" href="css/style.css" type="text/css" media="screen" />



    <script src="cufon/cufon-yui.js" type="text/javascript"></script>

    <script src="cufon/ChunkFive_400.font.js" type="text/javascript"></script>

    <script src="cufon/Note_this_400.font.js" type="text/javascript"></script>

    <script type="text/javascript">/*

            Cufon.replace('h1,p,.b-counter');

            Cufon.replace('.book_wrapper a', {hover:true});

            Cufon.replace('.title', {textShadow: '1px 1px #C59471', fontFamily:'ChunkFive'});

            Cufon.replace('.reference a', {textShadow: '1px 1px #C59471', fontFamily:'ChunkFive'});

            Cufon.replace('.loading', {textShadow: '1px 1px #000', fontFamily:'ChunkFive'});*/

    </script>

</head>

<body>

    <div class="book_wrapper">
        <a id="next_page_button"></a>
        <a id="prev_page_button"></a>
        <div id="loading" class="loading">Loading pages...</div>
        <div id="mybook" style="display:none;">
            <div class="b-load">
                <div>
                    <img src="images/1.jpg" alt="" />
                    <h1>Slider Gallery中文</h1>
                    <p>
                        This tutorial is about creating a creative gallery with a

                        slider for the thumbnails. The idea is to have an expanding

                        thumbnails area which opens once an album is chosen.

                        The thumbnails will scroll to the end and move back to

                        the first image. The user can scroll through the thumbnails

                        by using the slider controls. When a thumbnail is clicked,

                        it moves to the center and the full image preview opens.
                    </p>

                    <a href="#" class="article">Article</a>

                    <a href="#" class="demo">Demo</a>

                </div>

                <div>

                    <img src="images/2.jpg" alt="" />

                    <h1>Animated Portfolio Gallery</h1>

                    <p>
                        Today we will create an animated portfolio gallery with jQuery.

                        The gallery will contain a scroller for thumbnails and a

                        content area where we will display details about the portfolio

                        item. The image can be enlarged by clicking on it, making

                        it appear as an overlay.
                    </p>

                    <a href="#" class="article">Article</a>

                    <a href="#" class="demo">Demo</a>

                </div>

                <div>

                    <img src="images/3.jpg" alt="" />

                    <h1>Annotation Overlay Effect</h1>

                    <p>
                        Today we will create a simple overlay effect to display annotations in e.g. portfolio

                        items of a web designers portfolio. We got the idea from the wonderful

                        portfolio of www.rareview.com where Flash is used to create the

                        effect. We will use jQuery.
                    </p>

                    <a href="#" class="article">Article</a>

                    <a href="#" class="demo">Demo</a>

                </div>

                <div>

                    <img src="images/4.jpg" alt="" />

                    <h1>Bubbleriffic Image Gallery</h1>

                    <p>
                        In this tutorial we will create a bubbly image gallery that

                        shows your images in a unique way. The idea is to show the

                        thumbnails of albums in a rounded fashion allowing the

                        user to scroll them automatically by moving the mouse.

                        Clicking on a thumbnail will zoom in a big circle and

                        the full image which will be automatically resized to

                        fit into the screen.
                    </p>

                    <a href="#" class="article">Article</a>

                    <a href="#" class="demo">Demo</a>

                </div>

                <div>

                    <img src="images/5.jpg" alt="" />

                    <h1>Collapsing Site Navigation</h1>

                    <p>
                        Today we will create a collapsing menu that contains vertical

                        navigation bars and a slide out content area. When hovering

                        over a menu item, an image slides down from the top and a

                        submenu slides up from the bottom. Clicking on one of the

                        submenu items will make the whole menu collapse like a card

                        deck and the respective content area will slide out.
                    </p>

                    <a href="https://www.jq22.com" target="_blank" class="article">Article</a>

                    <a href="#" class="demo">Demo</a>

                </div>

                <div>

                    <img src="images/6.jpg" alt="" />

                    <h1>Custom Animation Banner</h1>

                    <p>
                        In today’s tutorial we will be creating a custom animation banner with jQuery.

                        The idea is to have different elements in a banner that will

                        animate step-wise in a custom way.
                    </p>

                    <p>
                        We will be using the jQuery Easing Plugin and the jQuery 2D

                        Transform Plugin to create some nifty animations.
                    </p>

                    <a href="#" class="article">Article</a>

                    <a href="#" class="demo">Demo</a>

                </div>

                <div>

                    <img src="images/7.jpg" alt="" />

                    <h1>Full Page Image Gallery</h1>

                    <p>
                        In this tutorial we are going to create a stunning full page

                        gallery with scrollable thumbnails and a scrollable full

                        screen preview. The idea is to have a thumbnails bar at

                        the bottom of the page that scrolls automatically when

                        the user moves the mouse. When a thumbnail is clicked,

                        it moves to the center of the page and the full screen

                        image is loaded in the background.
                    </p>

                    <a href="#" class="article">Article</a>

                    <a href="#" class="demo">Demo</a>

                </div>

                <div>

                    <img src="images/8.jpg" alt="" />

                    <h1>Hover Slide Effect</h1>

                    <p>
                        Today we will create a neat effect with some images using

                        jQuery. The main idea is to have an image area with several

                        images that slide out when we hover over them, revealing

                        other images. The sliding effect will be random, i.e.

                        the images will slide to the top or bottom, left or

                        right, fading out or not. When we click on any area,

                        all areas will slide their images out.
                    </p>

                    <a href="#" class="article">Article</a>

                    <a href="#" class="demo">Demo</a>

                </div>

                <div>

                    <img src="images/9.jpg" alt="" />

                    <h1>Merging Image Boxes</h1>

                    <p>
                        Today we will show you a nice effect for images with jQuery.

                        The idea is to have a set of rotated thumbnails that,

                        once clicked, animate to form the selected image.

                        You can navigate through the images with previous

                        and next buttons and when the big image gets clicked

                        it will scatter into the little box shaped thumbnails again.
                    </p>

                    <a href="#" class="article">Article</a>

                    <a href="#" class="demo">Demo</a>

                </div>

                <div>

                    <img src="images/10.jpg" alt="" />

                    <h1>Compact News Previewer</h1>

                    <p>
                        Today we will create a news previewer that let’s you

                        show your latest articles or news in a compact way.

                        The news previewer will show some list of articles

                        on the left side and the preview of the article with a

                        longer description on the right. Once a news on the left

                        is clicked, the preview will slide in.
                    </p>

                    <a href="#" class="article">Article</a>

                    <a href="#" class="demo">Demo</a>

                </div>

                <div>

                    <img src="images/11.jpg" alt="" />

                    <h1>Overlay Effect Menu</h1>

                    <p>
                        In this tutorial we are going to create a simple menu

                        that will stand out once we hover over it by covering

                        everything except the menu with a dark overlay.

                        The menu will stay white and a submenu area will

                        expand. We will create this effect using jQuery.
                    </p>

                    <a href="#" class="article">Article</a>

                    <a href="#" class="demo">Demo</a>

                </div>

                <div>

                    <img src="images/12.jpg" alt="" />

                    <h1>Polaroid Photobar Gallery</h1>

                    <p>
                        In this tutorial we are going to create an image gallery

                        with a Polaroid look. We will have albums that will expand

                        to sets of slightly rotated thumbnails that pop out on hover.

                        The full image will slide in from the bottom once a thumbnail

                        is clicked. In the full image view the user can navigate

                        through the pictures or simply choose another thumbnail

                        to be displayed.
                    </p>

                    <a href="#" class="article">Article</a>

                    <a href="#" class="demo">Demo</a>

                </div>

                <div>

                    <img src="images/13.jpg" alt="" />

                    <h1>Pull Out Content Panel</h1>

                    <p>
                        In this tutorial we will create a content panel that

                        slides out at a predefined scroll position. It will

                        reveal a teaser with related content and it can be

                        expanded to full page size to show more. A custom

                        slider allows to scroll through many items in the

                        panel.
                    </p>

                    <a href="#" class="article">Article</a>

                    <a href="#" class="demo">Demo</a>

                </div>

                <div>

                    <img src="images/14.jpg" alt="" />

                    <h1>Thumbnails Navigation Gallery</h1>

                    <p>
                        In this tutorial we are going to create an extraordinary

                        gallery with scrollable thumbnails that slide out from a

                        navigation. We are going to use jQuery and some CSS3

                        properties for the style. The main idea is to have a

                        menu of albums where each item will reveal a horizontal

                        bar with thumbnails when clicked.
                    </p>

                    <a href="#" class="article">Article</a>
                    <a href="#" class="demo">Demo</a>
                </div>
            </div>
        </div>
    </div>


    <!-- The JavaScript -->



    <script type="text/javascript">
        $(function () {
            var $mybook = $('#mybook');
            var $bttn_next = $('#next_page_button');
            var $bttn_prev = $('#prev_page_button');
            var $loading = $('#loading');
            var $mybook_images = $mybook.find('img');
            var cnt_images = $mybook_images.length;
            var loaded = 0;
            //preload all the images in the book,

            //and then call the booklet plugin



            $mybook_images.each(function () {
                var $img = $(this);
                var source = $img.attr('src');
                $('<img/>').load(function () {
                    ++loaded;
                    if (loaded == cnt_images) {
                        $loading.hide();
                        $bttn_next.show();
                        $bttn_prev.show();
                        $mybook.show().booklet({
                            name: null,                            // name of the booklet to display in the document title bar
                            width: 800,                             // container width
                            height: 500,                             // container height
                            speed: 600,                             // speed of the transition between pages
                            direction: 'LTR',                           // direction of the overall content organization, default LTR, left to right, can be RTL for languages which read right to left
                            startingPage: 0,                               // index of the first page to be displayed
                            easing: 'easeInOutQuad',                 // easing method for complete transition
                            easeIn: 'easeInQuad',                    // easing method for first half of transition
                            easeOut: 'easeOutQuad',                   // easing method for second half of transition
                            closed: true,                           // start with the book "closed", will add empty pages to beginning and end of book
                            closedFrontTitle: null,                            // used with "closed", "menu" and "pageSelector", determines title of blank starting page
                            closedFrontChapter: null,                            // used with "closed", "menu" and "chapterSelector", determines chapter name of blank starting page
                            closedBackTitle: null,                            // used with "closed", "menu" and "pageSelector", determines chapter name of blank ending page
                            closedBackChapter: null,                            // used with "closed", "menu" and "chapterSelector", determines chapter name of blank ending page
                            covers: false,                           // used with  "closed", makes first and last pages into covers, without page numbers (if enabled)
                            pagePadding: 10,                              // padding for each page wrapper
                            pageNumbers: true,                            // display page numbers on each page
                            hovers: true,                            // enables preview pageturn hover animation, shows a small preview of previous or next page on hover
                            overlays: true,                            // enables navigation using a page sized overlay, when enabled links inside the content will not be clickable
                            tabs: false,                           // adds tabs along the top of the pages
                            tabWidth: 60,                              // set the width of the tabs
                            tabHeight: 20,                              // set the height of the tabs
                            arrows: false,                           // adds arrows overlayed over the book edges
                            cursor: 'pointer',                       // cursor css setting for side bar areas
                            hash: false,                           // enables navigation using a hash string, ex: #/page/1 for page 1, will affect all booklets with 'hash' enabled
                            keyboard: true,                            // enables navigation with arrow keys (left: previous, right: next)
                            next: $bttn_next,                      // selector for element to use as click trigger for next page
                            prev: $bttn_prev,                      // selector for element to use as click trigger for previous page
                            menu: null,                            // selector for element to use as the menu area, required for 'pageSelector'
                            pageSelector: false,                           // enables navigation with a dropdown menu of pages, requires 'menu'
                            chapterSelector: false,                           // enables navigation with a dropdown menu of chapters, determined by the "rel" attribute, requires 'menu'
                            shadows: true,                            // display shadows on page animations
                            shadowTopFwdWidth: 166,                             // shadow width for top forward anim
                            shadowTopBackWidth: 166,                             // shadow width for top back anim
                            shadowBtmWidth: 50,                              // shadow width for bottom shadow
                            before: function () { },                    // callback invoked before each page turn animation
                            after: function () { }                     // callback invoked after each page turn animation
                        });
                        Cufon.refresh();

                    }
                }).attr('src', source);
            });
        });

    </script>

</body>

</html>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<style>
    .containerBox{
        width: 100%;
        height: 100vh;
        overflow-y: scroll;
    }
    .containerBox::-webkit-scrollbar{
        width: 0;
        height: 0;
    }
    .listItem{
        height: 100px;
        border-radius: 20px;
        margin: 10px;
        background-color: #0db4ff;
        text-align: center;
        color: #ffffff;
    }
</style>
<body>
<div class="containerBox">
   <div class="listItem">1</div>
   <div class="listItem">2</div>
   <div class="listItem">3</div>
   <div class="listItem">4</div>
   <div class="listItem">5</div>
   <div class="listItem">6</div>
   <div class="listItem">7</div>
   <div class="listItem">8</div>
   <div class="listItem">9</div>
   <div class="listItem">10</div>
</div>
<script>
    var box = document.querySelector('.containerBox')
    var contentH  = box.clientHeight  //可视区域的高度
    var scrollHight  = box.scrollHeight    //获取全文高度
    var scrollTop  = box.scrollTop    //滚动条的高度
    //监听滚动
    box.onscroll = function(){
       if(contentH - scrollTop- scrollHight -30 <=0.5){
          box.insertAdjacentHTML('beforeEnd',`<div class="listItem">12</div>`)
       }
    }
 
</script>
</body>
</html>