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

怎么用css实现基于用户滚动应用

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

北京

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

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

看不清楚,换张图片

免费获取短信验证码

怎么用css实现基于用户滚动应用

这篇文章主要介绍怎么用css实现基于用户滚动应用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

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

  这是我们将使用的HTML,<header>当我们向下滚动时,我们希望在内容之上浮动的一个很好的组件。

  <header>I'mthepageheader</header>

  <p>Lot'sofcontenthere...</p>

  <p>Morebeautifulcontent...</p>

  <p>Content...</p>

  首先,我们将监听该'scroll'事件,document并且scrollY每次用户滚动时我们都会请求当前位置。

  document.addEventListener('scroll',()=>{

  document.documentElement.dataset.scroll=window.scrollY;

  });

  我们将滚动位置存储在html元素的数据属性中。如果您使用开发工具查看DOM,它将如下所示。

  <htmldata-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:00.5emrgba(0,0,0,.5);

  }

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

  仍有一些改进,主要是在性能领域。

  但首先,我们必须修复脚本,以适应页面加载时滚动位置不在顶部的情况。在这些情况下,标题将呈现错误。

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

  //Readsoutthescrollpositionandstoresitinthedataattribute

  //sowecanuseitinourstylesheets

  conststoreScroll=()=>{

  document.documentElement.dataset.scroll=window.scrollY;

  }

  //Listenfornewscrollevents

  document.addEventListener('scroll',storeScroll);

  //Updatescrollpositionforfirsttime

  storeScroll();

  接下来我们将看一些性能改进。如果我们请求该scrollY位置,浏览器将必须计算页面上每个元素的位置,以确保它返回正确的位置。如果我们不强迫它每次滚动互动都这样做是最好的。

  要做到这一点,我们需要一个debounce方法,这个方法会将我们的请求排队,直到浏览器准备好绘制下一帧,此时它已经计算了页面上所有元素的位置,所以它不会再来一遍。

  //Thedebouncefunctionreceivesourfunctionasaparameter

  constdebounce=(fn)=>{

  //ThisholdstherequestAnimationFramereference,sowecancancelitifwewish

  letframe;

  //Thedebouncefunctionreturnsanewfunctionthatcanreceiveavariablenumberofarguments

  return(...params)=>{

  //Iftheframevariablehasbeendefined,clearitnow,andqueuefornextframe

  if(frame){

  cancelAnimationFrame(frame);

  }

  //Queueourfunctioncallforthenextframe

  frame=requestAnimationFrame(()=>{

  //Callourfunctionandpassanyparamswereceived

  fn(...params);

  });

  }

  };

  //Readsoutthescrollpositionandstoresitinthedataattribute

  //sowecanuseitinourstylesheets

  conststoreScroll=()=>{

  document.documentElement.dataset.scroll=window.scrollY;

  }

  //Listenfornewscrollevents,herewedebounceour`storeScroll`function

  document.addEventListener('scroll',debounce(storeScroll));

  //Updatescrollpositionforfirsttime

  storeScroll();

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

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

以上是“怎么用css实现基于用户滚动应用”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!

免责声明:

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

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

怎么用css实现基于用户滚动应用

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

下载Word文档

猜你喜欢

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

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

如何使用CSS实现无滚动条滚动

小编给大家分享一下如何使用CSS实现无滚动条滚动,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!第一种:伪对象选择器在webkit内核的浏览器里可以定义滚动条样式。
2023-06-08

怎么用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

css滚动条怎么使用

css 滚动条允许用户在超出容器的内容上滚动,并可以通过以下属性进行控制:overflow-x:控制水平滚动条overflow-y:控制垂直滚动条此外,滚动条还可通过 css 进行自定义,包括颜色、宽度和样式,以增强用户界面并满足设计需求。
css滚动条怎么使用
2024-05-23

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

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

基于vue-seamless-scroll怎么实现无缝滚动效果

这篇文章主要介绍了基于vue-seamless-scroll怎么实现无缝滚动效果的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇基于vue-seamless-scroll怎么实现无缝滚动效果文章都会有所收获,下面
2023-06-29

如何用CSS实现平滑滚动效果

如何用CSS实现平滑滚动效果在网页设计与开发中,滚动效果是一种非常常见且炫酷的效果,能够为用户带来更好的体验。而实现平滑滚动效果,可以通过CSS的一些技巧来实现。本文将介绍如何使用CSS来实现平滑滚动效果,并提供具体的代码示例。一、使用锚点
如何用CSS实现平滑滚动效果
2023-11-21

基于原生JavaScript怎么实现SPA单页应用

这篇文章主要介绍“基于原生JavaScript怎么实现SPA单页应用”,在日常操作中,相信很多人在基于原生JavaScript怎么实现SPA单页应用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”基于原生Jav
2023-07-05

css如何实现滚动条不占用高度

这篇文章主要讲解了“css如何实现滚动条不占用高度”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“css如何实现滚动条不占用高度”吧!css实现滚动条不占用高度的方法:1、打开相应的HTML文
2023-07-05

Android应用中的标题滚动效果怎么利用Support Library 实现

这篇文章给大家介绍Android应用中的标题滚动效果怎么利用Support Library 实现,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。布局文件代码在布局文件中,CoordinatorLayout作为布局文件根节
2023-05-31

基于SpringBoot怎么应用ApplicationEvent

这篇文章主要介绍“基于SpringBoot怎么应用ApplicationEvent”,在日常操作中,相信很多人在基于SpringBoot怎么应用ApplicationEvent问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希
2023-07-05

怎么用vue实现无缝滚动效果

今天小编给大家分享一下怎么用vue实现无缝滚动效果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。安装NPMnpm insta
2023-07-04

怎么在Android应用中利用RecyclerView实现一个分页滚动功能

怎么在Android应用中利用RecyclerView实现一个分页滚动功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、需求分析最近公司项目要实现一个需求要满足以下功能
2023-05-31

编程热搜

  • 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动态编译

目录