跟随屏幕滚动后固定导航到顶端

html+css+js实现网页滚动到特定位置后显示顶部导航栏 在日常开发动态网页时,我们往往需要当页面滚动到某一特定位置后执行一些特殊的操作,例如实现当网页滚动到特定位置后显示顶部导航栏,下面让我们来看具体的案例。 阅读详情

From: http://blog.youkuaiyun.com/zerlinda_c/article/details/50436920

在浏览网站的时候看到许多不错的效果,比如导航栏滚动一定距离后固定到某一位置。最近做手机端的页面比较多,就想如果多个导航栏叠加能否也将导航栏固定在不同位置呢?其实代码很简单,看一下实际效果:
        这里写图片描述

            这里写图片描述
  思路很简单,首先将页面整体结构确定下来,最外层套一个div是常识,然后就是导航和内容的分离。由于html整个文档默认从上到下渲染,而我们要做的是在对象滑到顶端的时候将其固定到顶端,所以要将其position属性设置为fixed,于是其就脱离普通文档流而固定在页面了。
  但这样会有一个问题,脱离了文档流以后页面会空出一个距离,这就导致后面的元素会向上移动从而补充这个空位,这样看起来就会给浏览用户摸不着头脑的感觉,为什么页面会突然一下往上跑了?
  怎样不让后面的元素往上移呢?答案很简单,把空出来的位置固定一个元素占位不就好了,比如原来的导航占位的高度是100px,当它脱离文档流的时候我们在原位置加100px不就好了,这样是可行的吧。所以有了这个思路就开始动手了: 结果是我们在原来的导航标签外再套一个div,高度固定跟导航的高度一样。这样,问题就解决了,不管导航跑到哪里整个页面的布局都是一定的。
  那么怎样切换元素的fixed属性?当元素滚动到页面的一定位置,我们想要它固定,而当页面再滑动回来的时候,我们又想要它回归到普通的文档流跟随页面滚动。这样想,我们设定一个条件,当元素满足条件的时候是一个状态,而不满足的时候是另一个状态。说到这里,就明白了,我们要为元素添加两个类,每个类代表一个状态,一个是position: fixed, 而另一个自然是static了。对于状态的切换对应到类的切换。jq的addClass和removeClass是很方便的。
  再解释一下 :
  

$.fn.fixedDiv = function(actCls, i)

  .fn.fixedDiv是对jq对象扩展的一种方法,所有jq对象将共同拥有该方法,所以我们可以直接使用 (‘#fix1’).fixedDiv(‘fix-div’, 0);
  如果你的导航栏只有一行,那么其中的参数i 是0,i的意义是方便计算元素固定的位置。因为scrollTop=offsetTop时,元素是处于页面顶端的。假设要让元素固定到距离视口顶端100px,那么只需要页面滚动到scrollTop = offsetTop - 100即可。
代码写的并不严谨,还有许多不足之处:
html

<div class = "wraper">
    <div class = "target">
        <div class = "clear">
            <div class = "toggle" id = "fix1">1</div>
        </div> 
        <div id = "div1"></div>
    </div>
    <div class = "target">
        <div class = "clear">
            <div class = "toggle" id = "fix2">2</div>
        </div>
        <div id = "div2"></div>
    </div>
    <div class = "target">
        <div class = "clear">
            <div class = "toggle" id = "fix3">3</div>            
        </div>
        <div id = "div3"></div>
    </div>
    <div class = "target">
        <div class = "clear">
            <div class = "toggle" id = "fix4">4</div>           
        </div>
         <div id = "div4"></div>
    </div>
    <div class = "target">
        <div class = "clear">
            <div class = "toggle" id = "fix5">5</div>            
        </div>
        <div id = "div5"></div>
    </div>
</div>

css

body {
    margin: 0;
    padding: 0;
    text-align: center;
}
.wraper {
    width: 80%;
    display: inline-block;
    border: 2px solid #CC9;
    border-top: none;
}
.toggle {
    height: 50px;
    line-height: 50px;
    border-top: 2px solid #CC9;
    background: #3FF;
}
.clear {
    width: 100%;
    height: 52px;
}
#div1, #div2, #div3, #div4, #div5 {
    width: 100%;
    height: 500px;
    background: #666;
}
.fix-div{ 
    margin: 0 auto;
    position: fixed;
    width: 80%; 
    left: 0; 
    right: 0;
    z-index: 99999;
}

jq

$.fn.fixedDiv = function(actCls, i){
        var that = $(this),
            h = that.height(),
            topVal = (h + 2) * i,
            offsetTop = that.offset().top,
            scrollTop;
        function fix(){
            scrollTop = $(document).scrollTop();   
            console.log("offsetTop: " + offsetTop);
            console.log("scroll: " + screenTop);
            if (scrollTop > (offsetTop - topVal)) {
                that.addClass(actCls);
                that.css("top", topVal + "px");                
            } else {
                that.removeClass(actCls);
            }
        }
        fix();
        $(window).scroll(fix);
    }
    $('#fix1').fixedDiv('fix-div', 0);
    $('#fix2').fixedDiv('fix-div', 1);
    $('#fix3').fixedDiv('fix-div', 2);
    $('#fix4').fixedDiv('fix-div', 3);
    $('#fix5').fixedDiv('fix-div', 4);

如果你只有一个顶部的导航,那么代码就更简单了,只需简单更改一下:

.fix-div{ 
    margin: 0 auto;
    position: fixed;
    width: 80%; 
    top: 0;       //只有一个导航所以top值固定
    left: 0; 
    right: 0;
    z-index: 99999;
}
$.fn.fixedDiv = function(actCls){
        var that = $(this),
            offsetTop = that.offset().top,
            scrollTop;
        function fix(){
            scrollTop = $(document).scrollTop();   
            if (scrollTop > offsetTop ) {
                that.addClass(actCls);
            } else {
                that.removeClass(actCls);
            }
        }
        fix();
        $(window).scroll(fix);
    }
    $('#fix1').fixedDiv('fix-div');
CSS position: sticky 实现吸顶效果:原理、实战与避坑指南 在网页布局中,CSS定位是实现元素位置控制的核心技术之一。position属性定义了元素的定位方式,其中sticky定位结合了相对定位和固定定位的特性,允许元素在滚动到特定阈值时固定在视口中。这一特性通过浏览器原生支持,无需JavaScript干预即可实现高性能的吸顶效果,显著提升了开发效率和页面性能。在工程实践中,sticky定位广泛应用于导航栏、表格表头、列表分类标题等需要持久可见的UI组件,优化了长内容页面的用户体验。本文将深入解析sticky定位的工作原理,并通过实战演示如何构建健壮的吸顶组件,同时 阅读详情

相关推荐

STM32CubeIDE入坑指南

一 前言 在科技日新月异的今天,作为从事效率为先的苦逼 IT 行业,秉承着我不入地狱谁入地狱的伟大革命精神,我决定再一次做第一个吃螃蟹的人,通过自身的入坑过程,为大家测试STM32CubeIDE这款新式工具。(其实是为了我能省点时间,快点做完项目,多挣点钱买几瓶肾气丸) 二 看一看别人是如何入坑的 二 手把手带你入坑 三 相关资料 ...

CH的博客 1万+

实现某元素上滑至顶端时固定悬浮

.afix{ position:fixed; top:45px; z-index:100; } .fix{ position:fixed; top:0px; z-index:100; } .parent { background: white; width: 100%...

weixin_30897079的博客 791

普源精电DHO系列示波器选购指南:从学生党到工程师的完整对比

本文深入评测普源精电DHO系列示波器,从DHO800到DHO4000各型号的核心参数、功能特点及适用场景进行全面对比,帮助学生党和工程师根据实际需求选择最佳型号。重点分析带宽、采样率、存储深度等关键指标,并提供实用的选购建议和进阶使用技巧,帮助用户充分发挥示波器性能。

weixin_30485379的博客 167

Html标题随滚动条移动(标题栏始终保持在顶端)

Lurke团队: HTML如何保持标题栏置顶上 1、标题栏置顶并固定 position:fixed; 定义和用法: position 属性规定元素的定位类型。 位置被设置为 fixed 的元素,可定位于相对于浏览器窗口的指定坐标。 可能的值 可能的值描述: absolute 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。 元素的位置通过 “left”, “t......

wangscaler的博客 1万+

ali140滑块

ali 140滑块采用补环境的方式进行逆向,需要的文件主要为这两个,其中collina.js是最主要的环境校验和参数加密的逻辑,这两个文件放本地进行补环境。然后挂上代理,先保证能够正常运行代码,补了些许后能够正常运行了,我们打印最主要的加密函数看看:n值就是得到:挂上代理看看鼠标事件,不管加密逻辑,关心入参即可:收集一些鼠标事件传进记录的函数。其余就是处理一些环境值,一些resetSA的逻辑就行。截图记录:

bboysteed的博客 1677

全同态加密:CKKS

不论是 LSB 编码的 BGV,还是 MSB 编码的 BFV,它们的同态运算都是对 $\mathbb Z_t$ 上明文的**精确计算**,因为**密文中的明文空间和噪声空间是分离的**。例如,在 BGV 中是 $te+m$,在 BFV 中是 $\delta m+e$。但是,这种精确计算是在同余意义下的,如果将明文视为实数,那么实际上同态运算时的噪声破坏了明文的 MSB $\lfloor m/t \rfloor$,仅保留了 LSB $[m]_t$,

weixin_44885334的博客 7544

position:sticky 实现 按钮固定到页面顶部——基础积累

position:sticky 实现 按钮固定到页面顶部——基础积累

yehaocheng520的博客 1798

解密TMS320F28377D双核工程中的内存分配艺术:从CMD文件到实战优化

本文深入解析TMS320F28377D双核DSP的内存管理艺术,从CMD文件配置到实战优化技巧。详细介绍了SARAM、GSRAM等内存类型的特性与配置方法,提供双核协同、性能优化及高级调试的实用方案,帮助开发者提升系统实时性和稳定性。

weixin_29190651的博客 663

JavaScript 实用效果 - 导航区域跟随窗口滚动!

我们经常可以看到这样的页面,页面的主体部分采用左右布局,靠左的为导航,靠右的为页面主要内容。而当左边的导航高度不够、而右边的内容很多时,页面往下拉会发现左边空出了一大块,导致主体内容显得窄小且页面整体不对称,如下图: 解决的办法之一是在窗口滚动时,左边的区域也跟着一起移动,这不但解决了上述问题,也一定程度上地增强了用户体验,因为此时用户能够随时地导航到其他页面而不需要回到页面顶部...

敏而好学 —— Eric6的专栏 5436

学习海康VisionMaster之顶点检测

2:应用场景:海康VisionMaster的顶点检测功能在工业视觉检测中具有广泛的应用场景,尤其在精密制造、电子元件检测和机械加工等领域,其通过高精度定位物体的关键点(如角点、交点或边缘顶点)来实现自动化测量与质量控制。基本参数这里就是画ROI,设定跟踪参数和之前的工具是一样的方法,这里画的方向需要注意,如下图所示,边缘的扫描方向正好对应需要查找的边缘点。一个不是很规则的物体需要检测一个凸台的顶角坐标,其实靠边缘与边缘交点是不太稳定的,如下图所示,边缘很短,很容易产生误抓边缘。1:什么是顶点检测?

yuhouxiyang的专栏 1524

PCL 三次均匀B样条曲线拟合

PCL 三次均匀B样条曲线拟合

dayuhaitang1的博客 400

【小程序】固定导航栏在顶部,跟随下滑

【小程序】固定导航栏在顶部,跟随下滑一、效果演示二、实现原理三、相关代码1.说明(一定要看)1.wxml2.wxss3.js 一、效果演示 二、实现原理 在js中有一个函数是用来监听页面的滑动的,这个函数叫做onPageScroll,下面是我从官网上面查到的有关信息 我们可以利用这个函数的功能,获取页面在垂直方向已经滚动的距离,当滚动的距离达到一定数值时,我们通过js来改变样式,让原有的模块固定住不再移动 三、相关代码 1.说明(一定要看) 我把整个页面的代码全部拷过来了,wxml中最上面的部分是导航栏

Z_hongli的博客 3701

第4章 部署负载均衡 Keepalived + HAProxy

本章在所有 Master 节点部署 Keepalived + HAProxy,为 kube-apiserver 提供高可用入口。Keepalived 实现 VIP(192.168.3.59)漂移,HAProxy 轮询转发请求至三个 Master 的 6443 端口(监听 6444 避免冲突)。健康检查脚本连续 5 次失败则停止 Keepalived,触发 VIP 自动切换。本章还包含配置详解、日常运维和问题排查。

幸福街--linux技术分享 120

CSS+DIV固定顶部导航代码-不跟随页面滚动,附源文件,经典收藏

固定顶部导航,不跟随滚动,固定页面顶部纯div+css; 以下代码经测试兼容IE6 7 8 9 google firefox HTML代码: &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt...

ansiblexxxxxxxxxxx 1131

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【Axure教程】锚点导航菜单

锚点导航菜单又沉锚点菜单或者锚链接菜单,当一个页面较长时,往往都需要使用锚点导航菜单,我们最常使用的锚点导航菜单,其实就是word里面的导航菜单,他能够快速帮我们找到对应的内容,提高我们的浏览效率。 所以本期就教大家如何在Axure里面制作一个高保真的锚点菜单。 一、制作完成后应具备以下效果 固定效果:锚点导航菜单固定在屏幕,无论页面在什么位置,都可以快速点击 锚点效果:点击锚点导航菜单,页面快熟滚动到对应的位置 回显效果:页面滚动到对应内容时,在锚点导航菜单中显示,可以清

mushe93的博客 1673

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

定位(position)

2、设置偏移量,偏移量的相对位置是相对于元素原来在文档流中的位置(left:0;(2)占有原来位置(体现相对定位特点),不会脱离文档流,元素性质也不会发生变化;2、设置绝对定位后,元素的性质就会发生变化,就不会再区分块还是行内了。-当元素的position属性设置为sticky时,则开启了元素的粘滞定位。3、设置绝对定位后,如果不设置偏移量,元素的位置也不会发生变化。元素的position属性设置fixed时,则开启了元素的固定定位。(3)固定定位不占有原来的位置,即脱离标准流 ,更改元素的性质。...

cs007711的博客 480

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【HarmonyOS NEXT】FAQ之应用框架(ArkUI-11)

目前ArkTs语法不支持这种链式调用,组件本身不是一个class对象,无法像普通对象一样调用方法,只能在组件声明的时候在参数里面,传递回调方法去修改组件的参数,无法直接通过链式调用方法。自定义组件在创建之后,会默认给整个组件外面包裹一层不可见的容器。在声明自定义组件的时候,这些属性和样式是作用在这个不可见容器上。而不是自己作用在内部的根组件上,所以两者效果不同。

qq_45789342的博客 473

html页面自动滑动,html实现页面滑动

html5页面左右滑动是怎么实现的?左右滑动是由触摸事件定义的,触摸事件(touch)会在用户手指放在屏幕上面的时候、在屏幕上滑动的时候或者是从屏幕上移开的时候触发。下面具体说明:touchstart事件:当手指触摸屏幕时候触发,即使已经有一个手指放在屏幕上也会触发。html5怎么实现页面左右滑动(下图区域),可以左右创建两个html文件,一个test一个test2。打开test页面,在里面创建一...

weixin_42305648的博客 7128

WPS Excel打印全攻略:从核心原理到六大实战技巧,告别打印翻车

在数据处理与办公场景中,表格打印是文档输出与信息共享的关键环节。其核心原理在于将屏幕上的无限数字画布,精准映射到固定尺寸的物理纸张上,这涉及到页面布局、缩放适配与打印逻辑的协调。掌握这一技术,能极大提升工作效率与文档的专业性,避免因打印格式错乱导致的信息传达失误。无论是制作财务报表、销售清单还是项目计划,清晰美观的打印输出都至关重要。本文聚焦于WPS Excel这一主流办公软件,深入解析其打印功能,并提供一套涵盖打印区域设置、打印标题、缩放调整等核心技巧的完整解决方案,帮助你高效应对长表格、宽表格等常见场景

chulilang8944的博客 382

地球Online逃生指南(上卷)

本书是一部系统探讨人类意识困境的哲学著作。全书通过七卷本的结构,依次解构人类认知牢笼、自我本质、世界实相、痛苦根源,最终指向自由、慈悲与终极实相。第一卷揭示大脑建构的认知幻象;第二卷剖析"自我"的神经机制;第三卷以系统论阐释世界空性;第四卷建立痛苦的数学模型;第五卷提出觉知训练体系;第六卷论证利他主义的科学基础;第七卷超越逻辑束缚直指存在本质。著作融合现代神经科学、量子物理、复杂性理论与东方哲学,构建了一个从认识到解脱的完整认知框架,最终指向无条件的临在与宇宙层面的觉知。

weixin_45747731的博客 832

获取对象到顶部的offsetTop值

获取对象到顶部的offsetTop值

weixin_44296999的博客 557

taro将页面滚动到指定位置

背景 实现点击一个按钮可以滚动到当前页面的指定位置。 问题 首先想到使用taro自己的api (pageScrollTo)实现滚动,查看文档发现selector 参数刚好是自己需要的。(https://taro-docs.jd.com/taro/docs/2.x/apis/ui/scroll/pageScrollTo) 然后就写了一个简单的函数 function scrollIntoView (id) { Taro.pageScrollTo({ selector: '#id', })

weixin_43398820的博客 6868

html 导航栏固定,实现滑动页面导航栏固定在网页顶部

导航栏固定在网页顶部*{ margin: 0; padding: 0; }.header-wrap{ width: 100%; }.header-hd{ width: 980px; height: 150px; margin: 0 auto; background-color: #ccc; }.header-bd{ width: 980px; height: 40px; margin: 0 aut...

weixin_39535349的博客 2442

如何使导航栏一直浮在顶部(html实现)

思路是: 我设置一个header标签,里面的整体内容作为我的导航栏的内容 为了验证,你可以设置一张图片,高度高于页面的高度,需要有下滑栏 (因为我在做网页模仿,可以直接看到效果) 设置header样式 如下代码(header里面的div可以忽视,不影响) css style: .head { position: fixed; height: 6rem; width: 100%; right: 0;

Sumbo_Z的博客 2万+

taro ScrollView 实现页面内容增加自动上滑到最顶部

移动端内容自动滚动

weixin_43886340的博客 2405
上一篇: 小米扫地机器人 改装加简单拖地功能
下一篇: 浅谈Vue下的components模板
天意pt
博客等级 码龄14年 10粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值