当前位置:首页 > 技术分析 > 正文内容

实战网页实现平滑滚动(网页设计滚动效果)

ruisui881周前 (05-03)技术分析5


  • 在导航中,我们使用#简单的实现了,现在我们要实现,点击导航自动跳转指定的节去,通过id去选择
<ul class="main-nav-list">
          <li><a class="main-nav-link" href="#how">工作流程</a></li>
          <li><a class="main-nav-link" href="#meals">餐品展示</a></li>
          <li><a class="main-nav-link" href="#testimonials">用户案例</a></li>
          <li><a class="main-nav-link" href="#pricing">餐品价格</a></li>
          <li><a class="main-nav-link nav-cta" href="#cta">免费试用</a></li>
        </ul>

这样我们点击导航就能跳转到指定的节了


  • 但是这样跳转非常的生硬,我们可以添加一个参数让动画变得更加得流畅
html {
  font-size: 62.5%;
  overflow-x: hidden;
  scroll-behavior: smooth;    ##scroll-behavior: smooth;是CSS属性,用于控制浏览器滚动时的动画效果。当这个属性设置为smooth时,浏览器会以平滑的动画效果滚动到指定位置,而不是瞬间跳转。
}

但是,这个参数并不是所有浏览器都支持!


  • 当然我们可以使用js来实现平顺滑动的效果
const allLinks = document.querySelectorAll('a:link');
allLinks.forEach(function(link) {
  link.addEventListener('click', function(e) {
    e.preventDefault();
    const href = link.getAttribute('href');
    if (href === "#") window.scrollTo({
      top: 0,
      behavior: "smooth",
    });
    if (href !== "#" && href.startsWith('#')) {
       const sectionEl = document.querySelector(href); 
       sectionEl.scrollIntoView({
        behavior: "smooth"
       });
    }
      
  });
  
});
##这段JavaScript代码实现了一个简单的响应式导航栏。它为所有链接添加了一个点击事件监听器,当用户单击链接时,它会阻止默认行为并获取链接的href属性值。如果href属性值为“#”,则将窗口滚动到页面顶部。如果href属性值不为“#”,则检查它是否以“#”开头。如果是,则获取对应的页面元素,并将窗口滚动到该元素的位置,以实现平滑滚动效果。
  • 注意,这里我们在HTML引用了一段JS,为了解决不兼容的问题
<script defer src="https://unpkg.com/smoothscroll-polyfill@0.4.4/dist/smoothscroll.min.js"></script>
##这段JavaScript代码引入了一个名为"smoothscroll-polyfill"的JavaScript库,并将其设置为在文档加载时异步加载(defer属性)。这个JavaScript库的作用是在不支持平滑滚动的浏览器中实现平滑滚动效果。在某些较老的浏览器中,平滑滚动效果可能无法正常工作,这个JavaScript库可以解决这个问题。它通过在不支持平滑滚动的浏览器中使用JavaScript模拟平滑滚动效果来实现这一点。因此,当用户单击页面中的链接时,无论用户使用什么浏览器,都可以获得平滑的滚动效果。

这样就能实现平顺滑动的效果了;


现在还有一个问题

当我们用手机的时候,点击导航栏,跳转的时候,这个导航还是不会消失;我们可以用JS来实现跳转之后导航关闭


 if (link.classList.contains("main-nav-link"))
      headerEl.classList.toggle("nav-open");

这段代码是用来实现简单响应式导航栏的,当点击具有 "main-nav-link" 类的链接时,它会切换 "nav-open" 类在头部元素上的存在。这个类通常用于控制导航栏的显示和隐藏。具体来说,如果头部元素上已经有 "nav-open" 类,则它将被删除,否则它将被添加。这个类的存在与否决定了导航栏是否可见。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/3761.html

分享给朋友:

“实战网页实现平滑滚动(网页设计滚动效果)” 的相关文章

如何在 Linux 发行版中安装微信和 QQ?

很多人因为工作沟通的原因需要用到微信和 QQ,那么如何在 Linux 发行版中安装微信和 QQ 呢?以下是一些尝试的解决方法。QQ上一个版本的 QQ Linux 版还是在2009年,而在现在,基于 NT 架构的全新 QQ Linux版已经被正式推出,为所有用户提供下载。新版本提供了deb、rpm、A...

「2022」打算跳槽涨薪,必问面试题及答案——VUE篇

1、为什么选择VUE,解决了什么问题?vue.js 正如官网所说的,是一套构建用户界面的渐进式框架。与其它重量级框架不同的是,vue 被设计为可以自底向上逐层应用。vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另外一方面,当与现代化工具链以及各种支持类库结合使用时,vu...

Windows 下 Git 拉 Gitlab 代码

读者提问:『阿常你好,Windows 下 Git 拉 Gitlab 代码的操作步骤可以分享一下吗?』阿常回答:好的,总共分为五个步骤。一、Windows 下安装 Git官网下载链接:https://git-scm.com/download/winStandalone Installer(安装版)注意...

壹啦罐罐 Android 手机里的 Xposed 都装了啥

这是少数派推出的系列专题,叫做「我的手机里都装了啥」。这个系列将邀请到不同的玩家,从他们各自的角度介绍手机中最爱的或是日常使用最频繁的 App。文章将以「每周一篇」的频率更新,内容范围会包括 iOS、Android 在内的各种平台和 App。本期继续歪楼,由少数派撰稿作者@壹啦罐罐介绍他正在使用的...

美国民众负债累累 但今年假期消费者支出仍将创下新高

智通财经APP获悉,在迎接假期之际,许多美国人已经背负了创纪录的信用卡债务。然而,今年假期消费者支出仍将创下新高。根据美国零售联合会(NRF)上周发布的报告,预计今年11月1日至12月31日期间的消费总额将达到创纪录的9795亿至9890亿美元之间。NRF首席经济学家Jack Kleinhenz表示...

HTML5学习笔记三:HTML5语法规则

1.标签要小写2.属性值可加可不加””或”3.可以省略某些标签 html body head tbody4.可以省略某些结束标签 tr td li例:显示效果:5.单标签不用加结束标签img input6.废除的标签font center big7.新添加的标签将在下一HTML5学习笔记中重点阐述。...