1

無限スクロールを実装しています。すべてが機能しますが、スクロールバックしようとすると、フローティングバーが本体の上部にジャンプします。これは、作業セクションに相対位置がないためですが、追加すると、別の問題が発生します。フローティングバーが作業セクションの下部にジャンプします(上部オフセットは、本体ではなく作業セクションの上部から計算されるため) )。

例: http: //jsfiddle.net/XC6Tz/3/

HTML:

<div id="wrapper">
    <section id="about">
         <h2>About Me</h2>

</div>
<section id="work">
    <!-- <div id="bar-wrap"> -->
    <div id="floating-bar">
         <h2>Floating bar</h2>

        <p id="echo1"></p>
    </div>
    <!-- </div> -->
    <div id="work-prieview">
         <h2>Work preview</h2>

    </div>
    <div id="works">
         <h2>Works</h2>

        <p id="echo2"></p>
    </div>
    </div>
    <section id="contact">
         <h2>Contact Me</h2>

        </div>
        </div>

CSS

    /* GLOBAL */

    /* -------------------------------------------------------------- */
     html, body, div, span, img, ul, li, h1, h2, h3, h4, h5, h6, p, a, hr, form, label, input, textarea, button, header, footer, nav, section {
        margin: 0;
        padding: 0;
        border: 0;
        font-size: 100%;
        font: inherit;
        vertical-align: baseline;
    }
    header, footer, nav, section {
        display: block;
    }
    h1, h2, h3, h4, h5, h6 {
        font-weight: normal;
    }
    body {
        font: 14px"Helvetica Neue", Helvetica, Arial, Sans-Serif;
        color: #FFFFFF;
    }
    section h2 {
        font-size: 54px;
        padding: 50px 0 0 50px;
    }
    section p {
        font-size: 30px;
        margin: 0 0 50px 50px;
    }
    /* CONTENT */

    /* -------------------------------------------------------------- */
     #about {
        height: 800px;
        background-color: #0054a6;
    }
    #work {
    }
    #bar-wrap {
        position: absolute;
        width: 100%;
    }
    #floating-bar {
        position: absolute;
        width: 100%;
        height: 180px;
        background: #00a651;
    }
    #work-prieview {
        padding-top: 180px;
        height: 1600px;
        background-color: #ed1c24;
    }
    #works {
        height: 800px;
        background: #0054a6;
    }
    #contact {
        height: 1600px;
        background: #ed1c24;
    }

Javascript

   $(document).ready(function () {

       var top = $('#floating-bar').offset().top;
       var bottom = $('#works').offset().top - 180;

       $(window).scroll(function () {

           y = $(window).scrollTop();

           $('#echo1').text(y);

           if (y > top) {
               $('#floating-bar').css({
                   position: 'fixed',
                   top: 0
               });

               if (y > bottom) {
                   $('#floating-bar').css({
                       position: 'absolute',
                       top: $('#works').offset().top - 180
                   });
               }

           } else {
               $('#floating-bar').css({
                   position: 'absolute',
                   // top: 0
               });
           }

       });

       $('#echo2').text(bottom);

   });
4

0 に答える 0