想要让某些元素(例如导航,概要)滚动到顶部后就悬停在顶部固定,可以通过postion:sticky纯css简单实现,而不用使用js使得代码很复杂。
关于postion: sticky
MSDN关于sticky的描述是这样的:
元素按照文档的正常流定位,然后相对于其最近的滚动父元素和包含块(nearest block-level ancestor)进行偏移,包括表格相关的元素,基于top、right、bottom、 离开。 偏移量不会影响任何其他元素的位置。
这个值总是创建一个新的堆叠上下文。 粘性元素“粘附”到其最近的具有“滚动机制”的父元素(当溢出被隐藏、滚动、自动或覆盖时创建),即使该父元素不是最近的实际滚动父元素。
简单理解是:
粘性定位可以被认为是相对定位和固定定位的混合。元素在跨越特定阈值前为相对定位,之后为固定定位。
再直白一点就是:
当给元素设置里sticky ,在屏幕的范围内,该元素不受定位的影响,当该元素的位置将要移出偏移的范围时,该元素的会变成 fixed 定位,根据设置的left ,top值等属性成固定定位的效果。
sticky用法
div {
position: sticky;
position: -webkit-sticky;
top: 0;
}
很简单三行代码就能实现了,比通过js监测滚动效率高多了。
实际效果直接看本站右侧栏,将本文往下滚动的时候可以看到效果。只在PC浏览器大屏上生效。
Sticky生效条件
父元素不能设置为overflow:hidden或者overflow:auto。
必须指定top bottom left right 4个值之一。
父元素的高度不能低于sticky元素的高度。
如果Sticky没有生效可以排查这几个原因。
3

站心网
想要让某些元素(例如导航,概要)滚动到顶部后就悬停在顶部固定,可以通过postion:sticky纯css简单实现,..
为您推荐
JS 中彻底删除 JSON 对象组成的数组中的元素
前端开发
2025年03月15日
在 JS 中,对于某个由 JSON 对象组成的数组,例如:var test = [{ "a": "1", "b": "2" }, { "a": "3", "b": "4" }, { "a": "5", "b": "6" }];如果我们想要删除其中的第二个json对象,应该怎么做呢?其实方法和操作数..

使用 html2canvas 实现截图功能
程序笔记
2025年01月20日
html2canvas 是一个开源的 JavaScript 库,用于将网页上的 HTML 元素渲染成图像。它通过遍历页面的 DOM 树和计算样式,然后将其绘制到 <canvas> 元素上,最终生成图片。该库不依赖服务器端,而是通过浏览器端的 Java..
网站统计中的访问信息收集的前端实现
程序笔记
2025年01月18日
网站数据统计分析工具是网站站长和运营人员经常使用的一种工具,比较常用的有谷歌分析、百度统计和腾讯分析等等。所有这些统计分析工具的第一步都是网站访问数据的收集。目前主流的数据收集方式基本都是基于javascri..
使用SuperWebSocket实现Web消息推送
程序笔记
2025年01月12日
在大部分Web系统中,我们可能遇到需要向客户端推送消息的需求。SuperWebSocket第三方库能让我们轻松的完成任务。SuperWebSocket第三方库可以从网上下载,不过通过Visual Studio Nuget安装更快。引用SuperWebSocket相..
.NET C# 使用Hook钩子实现全局监听键盘和鼠标
程序笔记
2025年01月08日
C# 是一种面向对象的编程语言,具有丰富的类库和工具支持,适用于各种类型的应用程序开发。Windows 提供了一种称为"钩子"(Hook)的机制,允许拦截并处理系统级别的事件,如键盘按键和鼠标移动。通过结合 C# 和 Hook..
.NET C#连接FTP实现文件上传下载
程序笔记
2025年01月07日
在 .NET 中可以使用 System.Net.FtpWebRequest 类来连接 FTP 服务器,实现文件上传和下载。以下是实现文件上传和下载的完整代码示例。1. 上传文件到 FTP 服务器using System;using System.IO;using System.Net;class..
C#使用 Attribute 实现 AOP 功能
程序笔记
2025年01月07日
在 C# 中,通过自定义 Attribute 并结合一些技术(如动态代理、反射等)可以实现 AOP(面向切面编程)。AOP 通常用于日志记录、性能监控、权限验证等横切关注点。以下是一个使用 C# Attribute 实现 AOP 功能的示例。..

使用CSS columns-visibility实现砌体布局
程序笔记
2024年12月30日
CSS的 columns 属性(如 columns、column-count 和 column-width)通常用于多列文本布局,而不是直接用于砌体布局。然而,结合 columns 和 visibility 属性,可以在某些情况下实现类似砌体布局的效果,虽然它并不完..

chrome 开发者工具如何查看元素:hover时的样式
程序笔记
2024年11月06日
在 Chrome 开发者工具中查看元素的 :hover 样式,可以通过以下步骤实现:打开开发者工具:右键点击页面中的元素,然后选择“检查(Inspect)”或按下 F12 或 Ctrl + Shift + I (Windows) / Cmd + Option +..
js使用IntersectionObserver实现锚点在当前页面视口时导读高亮
程序笔记
2024年11月01日
在 JavaScript 中可以通过监听页面滚动事件,检查每个锚点的位置,并根据当前滚动位置高亮相应的导航项,从而实现页面内锚点链接的导读高亮效果。交叉观察器 API(Intersection Observer API)提供了一种异步检测目..
js使用scroll事件实现锚点滚动到页面顶部时导航高亮
程序笔记
2024年11月01日
在 JavaScript 中,可以通过监听页面滚动事件,并判断页面顶部与各个锚点的距离来实现导航高亮效果。当某个锚点的内容块滚动到页面顶部时,自动高亮相应的导航项。以下是实现方式:1. HTML 结构假设我们有多个内容区..
ASP.NET Core实现多语言本地化Web应用程序
程序笔记
2024年10月21日
构建全球可访问的网站和应用程序需要对内容进行适当的本地化,以吸引来自不同文化和地区的用户。ASP.NET Core 提供强大的本地化支持,以用户首选的语言和格式呈现内容。在本综合指南中,我们将探索 ASP.NET Core 中..
支付宝第三方支付平台对接原理和实现
程序笔记
2024年10月17日
如果把商户网站使用第三方支付平台(比如支付宝)的原理搞清楚,那编程就变得简单多了。 整个过程大致这样: 1、商户与支付宝签约。 2、在商户网站购买商品,填写数量,确定购买后跳转到结账页面。结账页面可能包括订..
类似php iconv的函数功能,C#实现方法
程序笔记
2024年10月16日
在与一个第三方接口对接时,发现对方无法用GZip解压我发过去的数据,看了对方PHP的示例代码,发现对方使用的是PHP的$file = iconv("IOS-8859-1","UTF-8",gzencode($data_json));大致意思是要先压缩,在把压缩的数组..
c#实现与Java无差异的GZip压缩和GZip解压缩
程序笔记
2024年10月16日
c#实现与Java无差异的GZip压缩和GZip解压缩,其中有个坑就是GZip压缩的时候,只有在GZipStream在Dispose后调应对应MemoryStream.ToArray()所得到的结果才是正确的压缩数据。如果在zipStream.Write(bytes, 0, bytes.L..

.NET Core 管道模型中间件及管道模拟实现
程序笔记
2024年10月15日
管道,PipelineASP.NET Core 路由,认证,绘画,缓存,都是由管道来处理的中间件。MVC WEB API,都是建立在某个特殊的中间件之上。MVC,路由的中间件,请求地址和控制器之间的映射,在此基础上实现了实例化控制器,..
Linq to Object的Where和Select实现原理
程序笔记
2024年10月15日
Linq的Where是一个基于委托的代码封装,把数据筛选的通用逻辑完成,把判断逻辑交给委托传递。Select是基于委托的代码封装,把数据转换的通用逻辑完成,把转换逻辑交给委托传递。Linq还有很多方法,这些方法大多都是..
ASP.NET MVC4/5实现asp-append-version为css/js带上版本号
程序笔记
2024年10月13日
.NET Core MVC/Razor Page中使用TagHelpers的asp-append-version属性就可以为css或者js文件加上版本号。例如:<linkrel="stylesheet"href="~/css/site.min.css"asp-append-version="true"/>这样输出的Html是这样的:..
什么是微服务架构?它与单体应用程序架构有什么区别?如何在.NET中实现微服务架构?
程序笔记
2024年10月08日
微服务架构是一种软件架构风格,通过将应用程序拆分为一组小型、自治的服务来构建应用程序。每个服务都专注于解决特定的业务功能,并通过轻量级的通信机制进行交互。这些服务可以独立开发、部署和扩展,可以使用不同..
依赖注入(Dependency Injection)和控制反转(Inversion of Control)是软件开发中两个相关的概念。依赖注入(Dependency Injection):依赖:在软件开发中,一个对象可能依赖于其他对象来完成其工作。这些依赖关系..