【问题标题】:jQuery windows scroll event not working in fullpage.jsjQuery Windows 滚动事件在 fullpage.js 中不起作用
【发布时间】:2016-12-08 02:08:21
【问题描述】:

我创建了一个页面,每个页面都是一个完整的页面。我正在使用 jQuery 库 fullpage.js 来做到这一点。

我的问题是:我想在滚动事件处于活动状态时更改 CSS。

Second SlideFour Slide,我想将'nav.nav-next' 的位置从35% 更改为65% 到直线。

当我滚动页面时,它什么也不做。

我的 JS 代码是否适用于Four Slide

目前,我的 JS 代码是这样的:

var $navscroll = $('nav.nav-next');
$(document).scroll(function() {
    alert($(this).scrollTop()); 
  $navscroll.css({left: $(this).scrollTop()>10 ? "65%":"35%"});
});

我之前问过这个问题,应该创建body的高度还是div。 但它不适用于我,因为我使用的是 fullpage.js

所以,你可以在这里看到我的笔:

http://codepen.io/r0ysy0301/pen/RoyJOd

【问题讨论】:

    标签: javascript jquery html css fullpage.js


    【解决方案1】:

    您好,您可以尝试以下内容,首先使用下面的代码使您的fulllpage.js scrollbar 可见,然后再次使用css 隐藏它,因此这有助于我们获取scrollbar positioning,然后使用jquery 您可以移动您的@987654327 @。您甚至需要将您的 css 图标位置更改为 fixed

    scrollBar: true,
    autoScrolling:false
    

    HTML:

    <ul id="menu">
        <li data-menuanchor="firstPage"><a href="#firstPage">First slide</a></li>
        <li data-menuanchor="secondPage"><a href="#secondPage">Second slide</a></li>
      <li data-menuanchor="3rdPage"><a href="#thirdPage">Third slide</a></li>
      <li data-menuanchor="4thpage"><a href="#finalPage">Four slide</a></li>
    </ul>
    
    <nav class="nav-next">
        <button type="button" id="btn-next" class="btn i-down" style="background: rgb(10, 49, 80);">
            <svg xmlns="http://www.w3.org/2000/svg" version="1.1" x="0" y="0" width="16" height="10" viewBox="0 0 16 10" enable-background="new 0 0 16 10" xml:space="preserve" style="fill: rgb(255, 255, 255);"><polygon points="14 0 8 6 2 0 0 2 8 10 16 2 "></polygon></svg>
            <span class="btn-bg"></span>
            <span class="btn-bg btn-bg-mask" style="background: rgb(10, 49, 80);"></span>
        </button>
    </nav>
    
    <div id="fullpage">
                <div class="section active" id="section0">
                <div class="contentfit">
                    <div class="left-content"></div>
                    <div class="right-content">
                        <p>
                            Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsam, earum animi impedit, qui nobis repudiandae natus omnis deleniti excepturi itaque similique saepe. Sequi animi dolorum eum tenetur fugiat sed molestias!
                        </p>
                    </div>
                </div>
            </div>
    
            <div class="section" id="section1">
                <div class="contentfit">
                    <div class="right-content">
                        <p>
                            Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsam, earum animi impedit, qui nobis repudiandae natus omnis deleniti excepturi itaque similique saepe. Sequi animi dolorum eum tenetur fugiat sed molestias!
                        </p>
                    </div>
                    <div class="left-content"></div>
                </div>
            </div>
    
        <div class="section" id="section2">
                <div class="contentfit">
                    <div class="left-content"></div>
                    <div class="right-content">
                        <p>
                            Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsam, earum animi impedit, qui nobis repudiandae natus omnis deleniti excepturi itaque similique saepe. Sequi animi dolorum eum tenetur fugiat sed molestias!
                        </p>
                    </div>
                </div>
            </div>
        <div class="section" id="section3">
          <div class="contentfit">
            <div class="right-content">
              <p>
                Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsam, earum animi impedit, qui nobis repudiandae natus omnis deleniti excepturi itaque similique saepe. Sequi animi dolorum eum tenetur fugiat sed molestias!
              </p>
            </div>
            <div class="left-content"></div>
          </div>
      </div>
    </div>
    

    CSS:

    ::-webkit-scrollbar{
      display:none;
    }
    .contentfit {
        height: 100%;
        position: relative;
    }
    .left-content {
        float: left;
        height: 100%;
        position: relative;
        width: 35%;
        background: url("http://www.studiometa.fr/assets/img/projets/94/idcampus__larger.jpg") no-repeat;
        background-size: cover;
      background-position: center;
    }
    
    .right-content {
        float: left;
        width: 65%;
    }
    
    /* Button Next
     * ------------------- */
    
    .nav-next {
      z-index: 99;
      position: fixed;
      left: 35%;
      top: 60%;
      /*display: none;*/
    }
    
    .i-down.btn {
        padding: 0;
        -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.19, 1, 0.22, 1);
        transition: transform 0.3s cubic-bezier(0.19, 1, 0.22, 1);
    }
    
    .btn:hover {
        color: white;
        -webkit-transition: all 0.6s cubic-bezier(0.19, 1, 0.22, 1);
        transition: all 0.6s cubic-bezier(0.19, 1, 0.22, 1);
    }
    
    .is-loaded .btn {
        -webkit-transition: all 1s cubic-bezier(1, 0, 0, 1);
        transition: all 1s cubic-bezier(1,0,0,1);
    }
    
    .i-down {
        width: 3.4em;
        height: 3.4em;
        margin-left: -1.7em;
        background: #292929;
        color: white;
        border: 0;
        border-radius: 50%;
        cursor: pointer;
    }
    
    .btn {
        display: inline-block;
        padding: 0.5em 1.33em;
        font-weight: 700;
        border: 2px solid;
        cursor: pointer;
        overflow: hidden;
        -webkit-transform: translateZ(0);
        transform: translateZ(0);
        will-change: border, color;
    }
    
    .i-down svg {
        z-index: 3;
        display: inline-block;
        vertical-align: middle;
        fill: #fff;
        width: 1em;
        height: .625em;
        -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.19, 1, 0.22, 1);
        transition: transform 0.3s cubic-bezier(0.19,1,0.22,1);
    }
    
    .nav-next .btn-bg:first-of-type {
        z-index: 1;
    }
    
    .nav-next .btn-bg {
        height: 100%;
        margin: 0;
    }
    
    .i-down .btn-bg {
        height: 100%;
        padding-top: 0;
    }
    
    .btn-bg:first-of-type {
        z-index: -2;
        background: currentColor;
        -webkit-transition: opacity 0.3s 0s cubic-bezier(0.19, 1, 0.22, 1), -webkit-transform 0.4s 0.05s cubic-bezier(0.19, 1, 0.22, 1);
        transition: opacity 0.3s 0s cubic-bezier(0.19, 1, 0.22, 1), transform 0.4s 0.05s cubic-bezier(0.19,1,0.22,1);
    }
    
    .btn-bg {
        position: absolute;
        top: 50%;
        left: 0;
        width: 100%;
        height: 0;
        padding-top: 100%;
        padding-top: calc(100% + 2.66em);
        border-radius: 100px;
        opacity: 0;
        -webkit-transform: translateY(-50%) scale(0);
        -ms-transform: translateY(-50%) scale(0);
        transform: translateY(-50%) scale(0);
        will-change: transform, opacity;
    }
    
    .nav-next .btn-bg:last-of-type {
        z-index: 2;
    }
    
    .nav-next .btn-bg {
        height: 100%;
        margin: 0;
    }
    
    .i-down .btn-bg {
        height: 100%;
        padding-top: 0;
    }
    
    .btn-bg:last-of-type {
        z-index: -1;
        background: #292929;
        -webkit-transition: opacity 0.4s 0.1s cubic-bezier(0.19, 1, 0.22, 1), -webkit-transform 0.4s 0s cubic-bezier(0.19, 1, 0.22, 1);
        transition: opacity 0.4s 0.1s cubic-bezier(0.19, 1, 0.22, 1), transform 0.4s 0s cubic-bezier(0.19,1,0.22,1);
    }
    
    .btn-bg {
        position: absolute;
        top: 50%;
        left: 0;
        width: 100%;
        height: 0;
        padding-top: 100%;
        padding-top: calc(100% + 2.66em);
        border-radius: 100px;
        opacity: 0;
        -webkit-transform: translateY(-50%) scale(0);
        -ms-transform: translateY(-50%) scale(0);
        transform: translateY(-50%) scale(0);
        will-change: transform, opacity;
    }
    

    jQuery:

    $(window).on('scroll',function(){
        var a = $("#section0").hasClass('active');
        var b = $("#section1").hasClass('active');
        var c = $("#section2").hasClass('active');
        var d = $("#section3").hasClass('active');;
        var navscroll = $('.nav-next');
        if(a){
          $(navscroll).css('left','35%');
        }
        if(b){
          $(navscroll).css('left','65%');
        }
      if(c){
          $(navscroll).css('left','35%');
        }
      if(d){
          $(navscroll).css('left','65%');
        }
    });
    
    $('#fullpage').fullpage({
      sectionsColor: ['#1bbc9b', '#4BBFC3', '#7BAABE', 'whitesmoke', '#ccddff'],
      anchors: ['firstPage', 'secondPage', '3rdPage', '4thpage', 'lastPage'],
      menu: '#menu',
      slidesNavigation: true,
      scrollBar: true,
      autoScrolling:false
    });
    

    【讨论】:

    • 我在codepen.io/r0ysy0301/pen/rWKxQB 尝试了你的代码。有任何一种滚动的方法(不像你的方法那样正常滚动——你的方法就是这样)。当用户操作滚动鼠标时,我的网站必须只显示一页。
    • @vanloc 我们需要一些事件来执行操作,所以替换你之前由jsfiddle.net/f4toopx4提供的 Jquery 和 CSS 代码
    • 这行得通。我认为这需要在向下滚动时添加延迟以显示nav-next。就像在firstPage 向下滚动一样:它应该被隐藏并在secondPage 部分出现时出现。滚动时删除nav-next。你有什么方法可以解决这个问题吗?谢谢
    • 欢迎@vanloc,是的,您可以用 animate() 替换 css() 甚至添加 opacity 属性以及 left。
    • @vanloc 太好了 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    • 2016-05-19
    • 2017-07-09
    相关资源
    最近更新 更多