javascript - 如何使用 jQuery 修复视差平滑滚动?

标签 javascript jquery html css

我想创建一个视差效果,但是滚动有问题;它在跳跃。我想顺利滚动。请帮忙。

let READY = {
  onReady: function() {
    $(window).scroll(READY.doScrollAction);
  },
  doScrollAction: function() {
    let wScroll = $(this).scrollTop();
    let scrollingBackground = (50 + (wScroll / 10));

    if (scrollingBackground < 101) {
      $('header').css({
        'background': 'linear-gradient(to right, #0DA7E9 ' + scrollingBackground + '%, #f1f6f6 50%)'
      });

      $('header').css({
        'position': 'fixed',
        'min-height': '100vh',
        'width': '100%',
        'z-index': '9999'
      });
    } else {
      $('header').css({
        'position': 'static',
        'z-index': '0'
      })
    }
  }
};

$(document).ready(READY.onReady);
html,
body {
  padding: 0;
  margin: 0;
}

header {
  min-height: 100vh;
  background: linear-gradient(to right, #0DA7E9 50%, #f1f6f6 50%);
}

.aboutme {
  min-height: 100vh;
  background-color: red;
  padding-top: 500px;
  padding-bottom: 500px;
}

h1 {
  text-align: center;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<header class="header">
</header>
<section class="aboutme d-flex  align-items-center">
  <h1>
    CONTENT
  </h1>
</section>

jsFiddle

最佳答案

只需像这样编辑 css:http://jsfiddle.net/21kof8tp/

let READY = {
    onReady: function () {
        //Scroll
        $(window).scroll(READY.doScrollAction);
    },

    doScrollAction: function () {
        let wScroll = $(this).scrollTop();
        let scrollingBackground = (50 + (wScroll / 100));

        if (scrollingBackground < 101) {
            $('header').css({
                'background': 'linear-gradient(to right, #0DA7E9 ' + scrollingBackground + '%, #f1f6f6 50%)'
            });

            $('header').css({
                'position': 'fixed',
                'min-height': '100vh',
                'width': '100%',
                'z-index': '9999'
            });

        } else {
            $('header').css({
                'position': 'static',
                'z-index': '0'
            })
        }
    }
};



$(document).ready(READY.onReady);
html,
body {
  padding:0;
  margin:0;
}

header{
  min-height:1000vh;
   background: linear-gradient(to right, #0DA7E9 50%, #f1f6f6 50%);
}

.aboutme{
  min-height:1000vh;
background-color: red;
padding-top:500px;
padding-bottom:500px;
}

h1{
  text-align:center;
}

html {
  scroll-behavior: smooth;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<header class="header">
</header>
<section class="aboutme d-flex  align-items-center">
<h1>
CONTENT
</h1>
</section>

只需编辑滚动的大小。

关于javascript - 如何使用 jQuery 修复视差平滑滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57819384/

相关文章:

javascript - 纯 HTML AJAX 网站中的页面加载替代方案

html - 灯塔错误 : "Form elements do not have associated labels"

javascript - Highcharts:在一个系列中改变气泡的颜色

javascript - Travis-CI Node 构建随机失败

jquery - 组合两个函数来隐藏元素

javascript - IE8强制使用兼容性 View 刷新网页

jquery - 如何在标题中添加单独的列以在 jqgrid 中垂直滚动

javascript - 如何从分层数据生成 Kendo Treeview ? AngularJS

javascript - 如何重构这个重复的 jQuery 代码

WordPress 上的 Jquery 仍在 header 中加载