gpt4 book ai didi

javascript - Materializecss scrollspy throttle 不工作

转载 作者:行者123 更新时间:2023-12-03 11:26:09 26 4
gpt4 key购买 nike

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

一切正常,但我希望它滚动得慢一些。然而,选项 throttle 似乎不起作用。

查看我的问题的代码笔 here!

HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
<!-- MATERIALIZECSS CSS -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
</head>
<body>
<div class="navbar-fixed">
<nav>
<div class="nav-wrapper black">
<a href="#!" class="brand-logo">One Page</a>
<ul id="nav-mobile" class="right">
<li><a href="#page1">Page 1</a></li>
<li><a href="#page2">Page 2</a></li>
<li><a href="#page3">Page 3</a></li>
</ul>
</div>
</nav>
</div>
<section id="page1" class="scrollspy onepager"></section>
<section id="page2" class="scrollspy onepager"></section>
<section id="page3" class="scrollspy onepager"></section>


<!-- JQUERY & MATERIALIZECSS JS -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
<script>
$(document).ready(function(){
$('.scrollspy').scrollSpy({
scrollOffset: 64,
throttle: 10
});
});
</script>
</body>
</html>

CSS

*{
margin: 0!important;
padding: 0;
}

.onepager {
height: 100vh;
}

#page1 {
background: green;
}

#page2 {
background: yellow;
}

#page3 {
background: blue;
}

a.active {
background-color: #222;
}

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

最佳答案

首先道歉,这不是您问题的答案,因为您的示例在文档中看起来没问题,所以 materialize throttle 似乎坏了,或者我也遗漏了一些东西:)

所以关于你的问题,我的问题是你为什么使用 materialcss 滚动到 id 上的页面?

这是基本的浏览器功能 - 如果您有 href="#someid"<a>元素它将自动滚动到元素 id="someid" .

好吧,你缺少平滑效果,但是......如果你想要平滑效果,你可以只做 css:

html {
scroll-behavior: smooth;
}

或者,如果您使用的是 jquery,如果您想使事情更加顺利,这将适用于您的示例(删除 scrollspy init js 代码),前提是您保持 DOM 完好无损,因此选择器 $("#nav-mobile>li>a")作品:

  $(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;
});
}
});
});

如果您仅为实现此效果而使用实体化 - 您只是在页面加载时为自己节省了 177kb,否则它将在不与实体化发生任何冲突的情况下工作 - 只是不要初始化 scrollSpy。

查看此链接以获取更多信息:

https://www.w3schools.com/howto/howto_css_smooth_scroll.asp#section2

关于javascript - Materializecss scrollspy throttle 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57165412/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com