搜索
首页web前端js教程页面上下滚动改变顶部导航的定位方式
页面上下滚动改变顶部导航的定位方式Jul 22, 2017 am 09:22 AM
上下滑动顶部

 

 

最近碰到设计师的一个设计效果要求,其他网站也有实现:

state1:当网页向下滚动时,页面header栏消失,顶部nav往上靠;

state2:当网页向上滚动时,页面header栏出现,顶部nav顺着nav往下靠。

页面已经含有以下功能:

1、弹窗弹出时,弹窗层可滚动,但页面层不允许滚动。此时,页面中的body元素和html元素的overflow样式属性都被设置成了hidden;

 

页面结构如下:

头部

页面主体部分

页面底部

 

 

所碰到的问题是:scroll事件的监听太频繁(几乎移动一个像素就要执行一次监听事件),导致元素显示和隐藏时有闪动的问题,有时候甚至会导致某些元素来回切换。

在解决这样的问题的过程中,我的解决思路如下:

1、分别监听document的向下滚动和向上滚动事件

2、在监听的过程中,遇到弹窗弹出时不监听

3、在监听事件之外声明两个变量,分别为:permitMonitorScrollDown = true, permitMonitorScrollUp = true

4、

(1)、在监听document的向下滚动的流程中,在当前没有弹窗弹出的情况下,判断permitMonitorScrollDown的值是否为true,若为false,则直接return,跳出该监听流程;若为true,则将permitMonitorScrollDown设置为false,将状态切换到state1;设置定时器(js自带的setTimeout函数),在2000毫秒后恢复permitMonitorScrollDown为true。这种设置等价于每隔两秒允许监听一次向下滚动的事件。此处还隐藏有一点:当页面下滑,若切状态本身为state1时,不对状态做任何操作。

(2)、在监听document的向上滚动的流程中,在当前没有弹窗弹出的情况下,判断permitMonitorScrollUp的值是否为true,若为false,则直接return,跳出该监听流程;若为true,则将permitMonitorScrollUp设置为false,将状态切换到state2;设置定时器(js自带的setTimeout函数),在2000毫秒后恢复permitMonitorScrollUp为true。这种设置等价于每隔两秒允许监听一次向下滚动的事件。此处还隐藏有一点:当页面上滑,若切状态本身为state2时,不对状态做任何操作。

5、为了弥补上方两种情况发生的间歇期间页面滚动条已经触顶或者触底,所以需要用定时器单独处理这两种极端情况。

(1)、页面触顶(没有任何弹窗弹出且document的scrollTop为0),则状态必须切换到state1;

(2)、页面触底(没有任何弹窗弹出且document的scrollTop与$(window).height()的和刚好等于$(document).height()),则状态必须切换到state2;

 

我运用了jquery的filter函数,主要用于判断弹窗弹出时不监听滚动事件的情况(同时有一种等价的方式:当body的滚动条长度和滚动条本身的高度一样时,代表弹窗出现了。$("body")[0].scrollHeight==$(“body”).height()),同时运用了程序中排他锁的概念。

 

以上是页面上下滚动改变顶部导航的定位方式的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
手机屏幕不好滑动干涩怎么办手机屏幕不好滑动干涩怎么办Dec 04, 2023 pm 03:51 PM

手机屏幕不好滑动干涩的解决办法:1、给屏幕加湿;2、定期清洁屏幕;3、增加手指的滑动力度;4、使用手机膜;5、更换保护套;6、保持手部湿润;7、贴膜时处理干净;8、使用润滑剂;9、使用手套;10、调整屏幕亮度;11、更换手机。详细介绍:1、给屏幕加湿,在屏幕旁边放置一个加湿器或者喷一些水,让空气中的湿度增加,从而减少屏幕的干燥感;2、定期清洁屏幕,使用专业的屏幕清洁剂等等。

JavaScript 如何实现图片的上下滑动切换效果并加入淡入淡出动画?JavaScript 如何实现图片的上下滑动切换效果并加入淡入淡出动画?Oct 20, 2023 am 11:19 AM

JavaScript如何实现图片的上下滑动切换效果并加入淡入淡出动画?在网页开发中,经常需要实现图片的切换效果,可以通过JavaScript来实现上下滑动切换,并且加入淡入淡出的动画效果,下面我们来具体了解一下。首先,我们需要一个包含多张图片的容器,可以使用HTML中的div标签来承载图片。例如,我们创建一个id为"image-container"的div来

JavaScript 如何实现图片的上下拖动切换效果?JavaScript 如何实现图片的上下拖动切换效果?Oct 18, 2023 am 09:09 AM

JavaScript如何实现图片的上下拖动切换效果?随着互联网的发展,图片在我们生活和工作中扮演着重要的角色。为了提升用户体验,我们常常需要给图片增加一些特效或交互效果。其中,图片的上下拖动切换效果是一种很常见、简洁且实用的效果。本文将介绍如何使用JavaScript实现这一效果,并提供具体的代码示例。首先,我们需要创建一个HTML文件,来展示图片并实现拖

HTML、CSS和jQuery:实现滑动面板效果的技术指南HTML、CSS和jQuery:实现滑动面板效果的技术指南Oct 27, 2023 pm 04:39 PM

HTML、CSS和jQuery:实现滑动面板效果的技术指南随着移动设备的普及和Web应用的发展,滑动面板作为一种流行的交互方式,在网页设计中越来越常见。通过实现滑动面板效果,我们可以在有限的空间内展示更多的内容,提升用户体验。本文将详细介绍如何使用HTML、CSS和jQuery来实现滑动面板效果,并提供具体的代码示例。HTML结构首先,我们需要创建一个基本的

jQuery滑动事件解读:实现原理及注意事项jQuery滑动事件解读:实现原理及注意事项Feb 27, 2024 am 10:57 AM

jQuery滑动事件解读:实现原理及注意事项在前端开发中,滑动事件是常见且常用的交互操作之一,通过滑动事件,我们可以实现诸如轮播图的切换、页面的滚动加载等功能。而jQuery作为一款流行的JavaScript库,提供了丰富的滑动事件处理方法,方便我们实现各种交互效果。本文将深入探讨jQuery中的滑动事件实现原理及注意事项,并提供具体的代码示例。一、实现原理

react怎么实现滑动react怎么实现滑动Dec 30, 2022 am 11:09 AM

react实现滑动的方法:1、在onTouchStart事件找到touches,根据identifier中记录新的touch出现;2、在onTouchMove事件中根据identifier来记录每个touch经过的点的坐标;3、在onTouchEnd事件中,找到结束的touch事件,然后通过结束的touch事件划过的点来计算要执行的手势即可。

watchOS 10.2:如何通过轻扫更改表盘watchOS 10.2:如何通过轻扫更改表盘Dec 15, 2023 pm 11:15 PM

在watchOS10.2中,您可以启用轻扫手势以更轻松地在AppleWatch表盘之间切换,就像您以前在watchOS9中所做的那样。继续阅读以了解它是如何完成的。如果您是AppleWatch的长期用户,您可能还记得曾经有一段时间可以通过简单的滑动手势在显示屏上切换表盘。这是watchOS9中的默认交互,但随后Apple在升级到watchOS10时删除了该手势。苹果之所以改变互动方式,是因为用户抱怨不小心更换表盘太容易了。但对于从未遇到过这个问题的人来说,苹果只是让事情变得更难——在滑动之前需要

如何使用Css Flex 弹性布局实现滑动卡片布局如何使用Css Flex 弹性布局实现滑动卡片布局Sep 28, 2023 pm 01:16 PM

如何使用CssFlex弹性布局实现滑动卡片布局在现代的Web开发中,弹性布局(Flexbox)变得越来越流行。它是一种用于定位和布局元素的CSS模块,能够轻松地实现各种复杂的布局效果。本文将介绍如何使用Flex弹性布局实现滑动卡片布局,并提供具体的代码示例。滑动卡片布局是一种常用的UI设计模式,常用于展示图像或内容。每张卡片都可以通过滑动或点击来切换到下

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)