Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ECSS scrollspy油门不工作_Javascript_Html_Materialize_Scrollspy - Fatal编程技术网

Javascript ECSS scrollspy油门不工作

Javascript ECSS scrollspy油门不工作,javascript,html,materialize,scrollspy,Javascript,Html,Materialize,Scrollspy,我正在用materializecss制作一个单页网站,并使用scrollspy在各个部分之间滚动 这一切都很好,但我希望它滚动慢一点。然而,这个选项似乎不起作用 看看我的问题代码笔 HTML 将throttle设置为10(默认值100)应该会使滚动速度变慢,但默认速度会一直应用。您是否尝试过materialize初始化 这似乎对我有用: <script type="text/javascript" src="js/materialize.js"> document.addEv

我正在用materializecss制作一个单页网站,并使用scrollspy在各个部分之间滚动

这一切都很好,但我希望它滚动慢一点。然而,这个选项似乎不起作用

看看我的问题代码笔

HTML


将throttle设置为10(默认值100)应该会使滚动速度变慢,但默认速度会一直应用。

您是否尝试过materialize初始化

这似乎对我有用:

<script type="text/javascript" src="js/materialize.js">
    document.addEventListener('DOMContentLoaded', function() {
        var elems = document.querySelectorAll('.scrollspy');
        var instances = M.ScrollSpy.init(elems, options);
        throttle: 50;
    });
</script>

document.addEventListener('DOMContentLoaded',function(){
var elems=document.querySelectorAll('.scrollspy');
var instances=M.ScrollSpy.init(元素、选项);
油门:50;
});

首先要道歉的是,这并不是对您问题的回答,materialize throttle似乎已损坏,因为您的示例在文档中看起来不错,或者我也遗漏了一些东西:)

所以我的问题是,你们为什么要用materialcss来滚动到id页面

这是基本的浏览器功能-如果您在
中有
href=“#someid”
,我还没有这个问题的答案,但我仔细研究了一下,发现我们有两个问题之一:

1)节流选项确实已断开

2)节流并不意味着控制滚动的速度

如果查看scrollspy组件:

您将看到它使用了下划线.js中的throttle():

  • throttle()和getTime()取自下划线.js*

谁说:

throttle\ throttle(函数,等待,[options])创建并返回 传递函数的新的限制版本,在调用时 重复地,实际上最多只调用一次原始函数 每等待一毫秒。适用于以下速率限制事件: 发生的速度比你能跟上的要快

默认情况下,throttle将在您调用它时立即执行该函数 第一次,如果你再叫它几次 在等待期内,一旦等待期结束。如果你愿意 要禁用前沿调用,请传递{leading:false},如果 要禁用后缘上的执行,请传递{training: 错}

var throttled=u0.throttle(更新位置,100); $(窗口)。滚动(限制)

一般来说,当我过去使用throttle时,就是在短时间内停止重复调用同一个函数。如上所述。因此,它可能不是为了控制滚动的速度


我将在打开一个问题,并试图得到一些澄清。请注意此处。

这有两个问题:如果您将此代码复制到提供的代码笔中(即用您的代码笔替换其初始化),则会完全破坏scrollspy的功能。其次,您有作为参数传递的选项,但没有声明任何选项。这将在生产中引发错误。您完全正确!,我为我的错误贡献感到抱歉,我是一个新手。事实上,发生的事情是,我毫不客气地使用了Pegla所说的基本浏览器功能。这是文档的问题,而不是你,每个人都会被它抓住——我已经向开发人员提出了这个问题,但还没有得到承认。99%的gitter频道是我说的“外卖选项”,提问者是“用materializecss制作一个单页网站”——他不仅仅是用materialize来平滑滚动,这将是荒谬的。Scrollspy提供的不仅仅是平滑滚动,例如,根据askers codepen演示,根据位置更新当前链接。
*{
    margin: 0!important;
    padding: 0;
}

.onepager {
    height: 100vh;
}

#page1 {
    background: green;
}

#page2 {
    background: yellow;
}

#page3 {
    background: blue;
}

a.active {
  background-color: #222;
}
<script type="text/javascript" src="js/materialize.js">
    document.addEventListener('DOMContentLoaded', function() {
        var elems = document.querySelectorAll('.scrollspy');
        var instances = M.ScrollSpy.init(elems, options);
        throttle: 50;
    });
</script>
html {
  scroll-behavior: smooth;
}
  $(document).ready(function(){
    $("#nav-mobile>li>a").on('click', function(event) {
      if (this.hash !== "") {
        event.preventDefault();
        var hash = this.hash;
        $('html, body').animate({ 
          scrollTop: $(hash).offset().top
        }, 
        2300, //time in miliseconds to scroll
        function(){
          window.location.hash = hash;
        });
      }
    });
  });