广告
返回顶部
首页 > 资讯 > 精选 >使用CSS 怎么实现用户滚动位置应用样式
  • 441
分享到

使用CSS 怎么实现用户滚动位置应用样式

2023-06-08 07:06:58 441人浏览 泡泡鱼
摘要

今天就跟大家聊聊有关使用CSS 怎么实现用户滚动位置应用样式,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。通过将当前滚动偏移量添加到到 html 元素的属性上,我们可以根据当前滚动位

今天就跟大家聊聊有关使用CSS 怎么实现用户滚动位置应用样式,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

通过将当前滚动偏移量添加到到 html 元素的属性上,我们可以根据当前滚动位置设置页面上的元素样式。我们可以使用它来构建一个浮动在页面顶部的导航组件。

这是我们将使用的 HTML,<header> 组件是我们希望当我们向下滚动时,始终浮动在页面顶部的一个组件。

<header>I'm the page header</header><p>Lot's of content here...</p><p>More beautiful content...</p><p>Content...</p>

首先,我们将监听 document 上的 'scroll' 事件,并且每次用户滚动时我们都会取出当前的 scrollY 值。

document.addEventListener('scroll', () => {  document.documentElement.dataset.scroll = window.scrollY;});

我们将滚动位置存储在 html 元素的数据属性中。如果您使用开发工具查看 DOM,它将如下所示:<html data-scroll="0">
现在我们可以使用此属性来设置页面上的元素样式。

header {  min-height: 3em;  width: 100%;  background-color: #fff;}html:not([data-scroll='0']) body {  padding-top: 3em;}html:not([data-scroll='0']) header {  position: fixed;  top: 0;  z-index: 1;    box-shadow: 0 0 .5em rgba(0, 0, 0, .5);}

基本上就是这样,当用户向下滚动时,header 标签将自动从页面中分离并浮动在内容之上。javascript 代码并不关心这一点,它的任务就是将滚动偏移量放在数据属性中。这很完美,因为 JavaScript 和 CSS 之间没有紧密耦合。

但仍有一些可以改进的地方,主要是在性能方面。

首先,我们必须修改 JavaScript 脚本,以适应页面加载时滚动位置不在顶部的情况。在这样的情况下,header 标签将呈现错误的样式。

页面加载时,我们必须快速获取当前的滚动偏移量,这样确保了我们始终与当前的页面的状态同步。

// 读出当前页面的滚动位置并将其存入 document 的 data 属性中// 因此我们就可以在我们的样式表中使用它const storeScroll = () => {  document.documentElement.dataset.scroll = window.scrollY;}// 监听滚动事件document.addEventListener('scroll', storeScroll);// 第一次打开页面时就更新滚动位置storeScroll();

接下来我们将看一些性能方面改进。如果我们想要获取 scrollY 滚动位置,浏览器将必须计算页面上每个元素的位置,以确保它返回正确的位置。如果我们不强制它每次滚动都取值才是最好的做法。

要做到这一点,我们需要一个 debounce(防抖动)方法,这个方法会将我们的取值请求加入一个队列中,在浏览器准备好绘制下一帧之前都不会重新取值,此时它已经计算出了页面上所有元素的位置,所以它不会不断重复相同的工作。

// 防抖动函数接受一个我们自定义的函数作为参数const debounce = (fn) => {  // 这包含了对 requestAnimationFrame 的引用,所以我们可以在我们希望的任何时候停止它  let frame;    // 防抖动函数将返回一个可以接受多个参数的新函数  return (...params) => {        // 如果 frame 的值存在,那就清除对应的回调    if (frame) {       cancelAnimationFrame(frame);    }    // 使我们的回调在浏览器下一帧刷新时执行    frame = requestAnimationFrame(() => {            // 执行我们的自定义函数并传递我们的参数      fn(...params);    });  } };// Reads out the scroll position and stores it in the data attribute// so we can use it in our stylesheetsconst storeScroll = () => {  document.documentElement.dataset.scroll = window.scrollY;}// Listen for new scroll events, here we debounce our `storeScroll` functiondocument.addEventListener('scroll', debounce(storeScroll));// Update scroll position for first timestoreScroll();

通过标记事件为 passive 状态,我们可以告诉浏览器我们的滚动事件不会被触摸交互阻止(例如与谷歌地图等插件交互时)。这允许浏览器立即滚动页面,因为它现在知道该事件不会被阻止。

document.addEventListener('scroll', debounce(storeScroll), { passive: true });

解决了性能问题后,我们现在可以通过稳定的方式使用 JavaScript 将获取的数据提供给 CSS,并可以使用它来为页面上的元素添加样式。

看完上述内容,你们对使用CSS 怎么实现用户滚动位置应用样式有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网精选频道,感谢大家的支持。

--结束END--

本文标题: 使用CSS 怎么实现用户滚动位置应用样式

本文链接: https://www.lsjlt.com/news/252523.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用CSS 怎么实现用户滚动位置应用样式
    今天就跟大家聊聊有关使用CSS 怎么实现用户滚动位置应用样式,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。通过将当前滚动偏移量添加到到 html 元素的属性上,我们可以根据当前滚动位...
    99+
    2023-06-08
  • 怎么用css实现基于用户滚动应用
    这篇文章主要介绍怎么用css实现基于用户滚动应用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!   通过将当前滚动偏移映射到html元素上的属性,我们可以根据当前滚动位置设置页面上...
    99+
    2022-10-19
  • 使用javascript怎么设置滚动条位置
    这期内容当中小编将会给大家带来有关使用javascript怎么设置滚动条位置,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。javascript是一种什么语言javascript是一种动态类型、弱类型的语言...
    99+
    2023-06-14
  • 如何用CSS实现平滑滚动到锚点位置
    如何用CSS实现平滑滚动到锚点位置在网页设计中,锚点位置是指页面上的特定位置,当用户点击页面中的链接时,页面会平滑滚动到该位置。这种效果不仅可以带来良好的用户体验,还可以提升页面的美感。本文将介绍如何使用CSS实现平滑滚动到锚点位置,并给出...
    99+
    2023-11-21
    CSS 平滑滚动 锚点
  • 如何用CSS实现平滑滚动到指定位置
    如何用CSS实现平滑滚动到指定位置在网页设计和开发中,有时我们需要实现平滑滚动到页面的指定位置。这种滚动效果不仅能增加页面的动感和交互性,还能提升用户体验。本文将介绍如何使用CSS来实现这一功能,并提供具体的代码示例。一、使用scroll-...
    99+
    2023-11-21
    CSS平滑滚动
  • vue3怎么利用store实现记录滚动位置
    小编给大家分享一下vue3怎么利用store实现记录滚动位置,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!整体效果在首页列表进行滚动浏览时进入详情页后,切换回首页...
    99+
    2023-06-14
  • 使用css怎么修改浏览器scrollbar滚动条样式
    本篇文章给大家分享的是有关使用css怎么修改浏览器scrollbar滚动条样式,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。使用css修改浏览器滚动条样式::-webkit-s...
    99+
    2023-06-08
  • 怎么用css实现滚动效果
    使用css实现滚动效果的方法:1.通过“overflow”属性设置滚动条使网页元素的内容实现滚动效果,在css中添加样式代码,比如语法样式为:“overflow: scroll;”设置滚动条即可。css通过overflow属性设置滚动条示例...
    99+
    2022-10-12
  • 怎么用css实现滚动文字
    这篇文章主要介绍了怎么用css实现滚动文字,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。     代码  ...
    99+
    2022-10-19
  • 如何用CSS实现平滑滚动到指定元素位置
    在网站开发过程中,经常需要实现平滑滚动到指定的元素位置。这种效果可以提高网站的用户体验,让用户更加自然地浏览页面内容。实现这种效果的方式有很多,其中使用CSS是比较简单的一种。下面将介绍如何使用CSS实现平滑滚动到指定元素位置,并提供具体的...
    99+
    2023-11-21
    平滑滚动 指定元素 关键词:CSS
  • 怎么使用CSS实现滚动的图片栏
    这篇“怎么使用CSS实现滚动的图片栏”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“怎么使用CSS实现滚动的图片栏”,小编整理了以下知识点,请大家跟着小编的步伐...
    99+
    2022-10-19
  • css中怎么利用overflow属性控制滚动条样式
    css中怎么利用overflow属性控制滚动条样式,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 滚动条样式...
    99+
    2022-10-19
  • 怎么使用css实现文字循环滚动效果
    今天小编给大家分享一下怎么使用css实现文字循环滚动效果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。首先创建一个html文...
    99+
    2023-07-04
  • css怎么实现滚动条不占用高度
    本教程操作环境:Windows10系统、CSS3版、DELL G3电脑css:overlay使滚动条不占据位置css怎么实现滚动条不占用高度?原始代码:overflow-x: auto;原始效果:滚动条占了高度,位于表格的下方。 改动后的代...
    99+
    2023-05-14
    css 滚动条
  • 怎么用css实现不随滚动条效果
    CSS中的position属性可以用来设置元素在页面中的定位方式,其中有一个值叫做fixed。fixed值指定的元素会被固定在页面的某个位置,不会随着页面的滚动而移动,这就实现了CSS不随滚动条的效果。那么在哪些情况下需要使用CSS不随滚动...
    99+
    2023-05-14
  • 使用@media怎么实现移动端自适应样式
    本篇文章给大家分享的是有关使用@media怎么实现移动端自适应样式,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。通用手机端样式:@media all and (orientat...
    99+
    2023-06-08
  • 怎么在CSS中使用Reset重置样式
    本篇文章给大家分享的是有关怎么在CSS中使用Reset重置样式,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。html{     ...
    99+
    2023-06-08
  • 使用react怎么动态改变css样式
    本篇文章为大家展示了使用react怎么动态改变css样式,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。第一种:动态添加class,以点击按钮让文字显示隐藏为demoimport React...
    99+
    2023-06-14
  • 怎么用css样式实现3角型
    这篇文章主要介绍“怎么用css样式实现3角型”,在日常操作中,相信很多人在怎么用css样式实现3角型问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用css样式实现3角型”...
    99+
    2022-10-19
  • 怎么使用CSS样式设置字体间距
    小编给大家分享一下怎么使用CSS样式设置字体间距,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! CSS字间距单词:letter...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作