我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

今天就跟大家聊聊有关使用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 怎么实现用户滚动位置应用样式有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网行业资讯频道,感谢大家的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

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

下载Word文档

猜你喜欢

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

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

使用javascript怎么设置滚动条位置

这期内容当中小编将会给大家带来有关使用javascript怎么设置滚动条位置,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。javascript是一种什么语言javascript是一种动态类型、弱类型的语言
2023-06-14

如何用CSS实现平滑滚动到锚点位置

如何用CSS实现平滑滚动到锚点位置在网页设计中,锚点位置是指页面上的特定位置,当用户点击页面中的链接时,页面会平滑滚动到该位置。这种效果不仅可以带来良好的用户体验,还可以提升页面的美感。本文将介绍如何使用CSS实现平滑滚动到锚点位置,并给出
如何用CSS实现平滑滚动到锚点位置
2023-11-21

如何用CSS实现平滑滚动到指定位置

如何用CSS实现平滑滚动到指定位置在网页设计和开发中,有时我们需要实现平滑滚动到页面的指定位置。这种滚动效果不仅能增加页面的动感和交互性,还能提升用户体验。本文将介绍如何使用CSS来实现这一功能,并提供具体的代码示例。一、使用scroll-
如何用CSS实现平滑滚动到指定位置
2023-11-21

使用css怎么修改浏览器scrollbar滚动条样式

本篇文章给大家分享的是有关使用css怎么修改浏览器scrollbar滚动条样式,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。使用css修改浏览器滚动条样式::-webkit-s
2023-06-08

vue3怎么利用store实现记录滚动位置

小编给大家分享一下vue3怎么利用store实现记录滚动位置,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!整体效果在首页列表进行滚动浏览时进入详情页后,切换回首页
2023-06-14

如何用CSS实现平滑滚动到指定元素位置

在网站开发过程中,经常需要实现平滑滚动到指定的元素位置。这种效果可以提高网站的用户体验,让用户更加自然地浏览页面内容。实现这种效果的方式有很多,其中使用CSS是比较简单的一种。下面将介绍如何使用CSS实现平滑滚动到指定元素位置,并提供具体的
如何用CSS实现平滑滚动到指定元素位置
2023-11-21

使用@media怎么实现移动端自适应样式

本篇文章给大家分享的是有关使用@media怎么实现移动端自适应样式,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。通用手机端样式:@media all and (orientat
2023-06-08

怎么使用css实现文字循环滚动效果

今天小编给大家分享一下怎么使用css实现文字循环滚动效果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.首先创建一个htm
2023-07-04

怎么用css实现不随滚动条效果

CSS中的position属性可以用来设置元素在页面中的定位方式,其中有一个值叫做fixed。fixed值指定的元素会被固定在页面的某个位置,不会随着页面的滚动而移动,这就实现了CSS不随滚动条的效果。那么在哪些情况下需要使用CSS不随滚动条的效果呢?常见的场景是在页面中添加一些固定的元素,例如导航栏、广告位等。这些元素需要始终保持在页面的某个位置,不会因为用户滚动页面而移动。
2023-05-14

css怎么实现滚动条不占用高度

css实现滚动条不占用高度的方法:1、打开相应的HTML文件;2、查找原始代码“overflow-x: auto;”;3、将“overflow-x: auto;”属性中的值修改为“overflow-x: overlay;”即可使滚动条不占据位置。
2023-05-14

使用react怎么动态改变css样式

本篇文章为大家展示了使用react怎么动态改变css样式,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。第一种:动态添加class,以点击按钮让文字显示隐藏为demoimport React, { C
2023-06-14

怎么在CSS中使用Reset重置样式

本篇文章给大家分享的是有关怎么在CSS中使用Reset重置样式,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。html{ /* 标准字体大小可以,在移动端使用的rem适配的话
2023-06-08

怎么使用div实现自制滚动条

这篇文章将为大家详细讲解有关怎么使用div实现自制滚动条,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。滚动条是浏览器中最常见的组件了。然而,滚动条的颜值总是不能令人满意,特别是嵌入在页面中的滚动条:漂亮的
2023-06-08

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录