CSS使用position:sticky 实现粘性布局的方法

这篇文章主要介绍了css使用position:sticky 实现粘性布局的方法的相关资料,内容挺不错的,现在分享给大家,也给大家做个参考。

简介

一般都知道下面几个常用的:

{position: static;position: relative;position: absolute;position: fixed;}

在https://developer.mozilla.org/zh-CN/docs/Web/CSS/position还说了下面这三个值:

/* 全局值 */position: inherit;position: initial;position: unset;

估计大部分都没有用过position:sticky吧。这个属性值还在试验阶段。怎样描述它呢?

立即学习“前端免费学习笔记(深入)”;

初窥 position:sticky

sticky 英文字面意思是粘,粘贴,所以姑且称之为粘性定位。下面就来了解下这个处于实验性的取值的具体功能及实用场景。

这是一个结合了 position:relative 和 position:fixed 两种定位功能于一体的特殊定位,适用于一些特殊场景。

什么是结合两种定位功能于一体呢?

元素先按照普通文档流定位,然后相对于该元素在流中的 flow root(BFC)和 containing block(最近的块级祖先元素)定位。

而后,元素定位表现为在跨越特定阈值前为相对定位,之后为固定定位。

这个特定阈值指的是 top, right, bottom 或 left 之一,换言之,指定 top, right, bottom 或 left 四个阈值其中之一,才可使粘性定位生效。否则其行为与相对定位相同。

sticky:对象在常态时遵循常规流。它就像是relativefixed的合体,当在屏幕中时按常规流排版,当卷动到屏幕外时则表现如fixed。该属性的表现是现实中你见到的吸附效果。

常用场景:当元素距离页面视口(Viewport,也就是fixed定位的参照)顶部距离大于 0px 时,元素以 relative 定位表现,而当元素距离页面视口小于 0px 时,元素表现为 fixed 定位,也就会固定在顶部。

代码:

{    position: -webkit-sticky;    position: sticky;    top: 0;}

如下图表现方式:

距离页面顶部大于20px,表现为 position:relative;

CSS使用position:sticky 实现粘性布局的方法

距离页面顶部小于20px,表现为 position:fixed;

CSS使用position:sticky 实现粘性布局的方法

运用 position:sticky 实现头部导航栏固定

html代码:

标题一

这是一段文本

科威旅游管理系统
科威旅游管理系统

该软件是以php+MySQL进行开发的旅游管理网站系统。系统前端采用可视化布局,能自动适应不同尺寸屏幕,一起建站,不同设备使用,免去兼容性烦恼。系统提供列表、表格、地图三种列表显示方式,让用户以最快的速度找到所需行程,大幅提高效率。系统可设置推荐、优惠行程,可将相应行程高亮显示,对重点行程有效推广,可实现网站盈利。系统支持中文、英文,您还可以在后台添加新的语言,关键字单独列出,在后台即可快速翻译。

科威旅游管理系统 0
查看详情 科威旅游管理系统

这是一段文本

这是一段文本

标题二

这是一段文本

这是一段文本

这是一段文本

标题三

这是一段文本

这是一段文本

这是一段文本

标题四

这是一段文本

这是一段文本

这是一段文本

标题五

这是一段文本

这是一段文本

这是一段文本

标题五六

这是一段文本

这是一段文本

这是一段文本

CSS代码:

.samecon h2{    position: -webkit-sticky;    position: sticky;    top: 0;    background:#ccc;    padding:10px 0;}

同理,也可以实现侧边导航栏的超出固定。

生效规则

须指定 top, right, bottom 或 left 四个阈值其中之一,才可使粘性定位生效。否则其行为与相对定位相同。

并且 top bottom 同时设置时,top 生效的优先级高,left right 同时设置时,left 的优先级高。

设定为 position:sticky 元素的任意父节点的 overflow 属性必须是 visible,否则 position:sticky 不会生效。这里需要解释一下:

如果 position:sticky 元素的任意父节点定位设置为 overflow:hidden,则父容器无法进行滚动,所以 position:sticky 元素也不会有滚动然后固定的情况。

如果 position:sticky 元素的任意父节点定位设置为 position:relative | absolute | fixed,则元素相对父元素进行定位,而不会相对 viewprot 定位。

达到设定的阀值。这个还算好理解,也就是设定了 position:sticky 的元素表现为 relative 还是 fixed 是根据元素是否达到设定了的阈值决定的。兼容性

CSS使用position:sticky 实现粘性布局的方法

这个属性的兼容性还不是很好,目前仍是一个试验性的属性,并不是W3C推荐的标准。

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

关于CSS中animation属性的使用方法

如何使用CSS3的box-reflect来制作倒影效果

以上就是CSS使用position:sticky 实现粘性布局的方法的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1610333.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
关于CSS的display:inline-block属性的使用
上一篇 2025年12月24日 01:23:47
如何使用CSS3的box-reflect来制作倒影效果
下一篇 2025年12月24日 01:23:55

相关推荐

  • 如何实现JavaScript元素平滑滚动?

    优雅的JavaScript滚动:告别生硬跳转 在JavaScript中操控元素的scrollLeft属性时,常常会遇到滚动效果过于生硬的问题。本文将介绍如何为scrollLeft的数值变化添加动画效果,打造更流畅、更舒适的滚动体验。 关键在于避免直接修改scrollLeft值造成的突兀感。直接赋值会…

    2026年9月1日
    700
  • Piti插件怎样添加过渡动画效果_Piti插件添加过渡动画效果步骤

    首先启用Piti插件动画模块,再设置元素初始与目标状态,接着配置过渡时间及缓动函数,然后绑定悬停或点击等触发事件,最后导出CSS或JSON代码用于开发或在Figma中预览动画效果。 如果您在使用Piti插件进行页面元素设计时,希望增强视觉流畅性,可以通过添加过渡动画效果来实现元素状态变化的平滑呈现。…

    2026年9月1日
    1400
  • 如何优化网站性能:使用Minify库的经验与教训

    可以通过一下地址学习composer:学习地址 在开发网站的过程中,提升页面加载速度一直是我的首要任务之一。曾经,我尝试使用 minify 库来压缩和合并 css 及 javascript 文件,以期提升网站的性能。然而,使用过程中遇到了不少问题和挑战,最终让我意识到 minify 可能不再是最佳选…

    用户投稿 2026年9月1日
    100
  • 如何实现元素背景图任意点为中心的平移缩放?

    基于JavaScript和CSS的元素背景图平移缩放详解 许多开发者在处理元素背景图片的平移和缩放时,会遇到一个棘手的问题:缩放中心点总是固定在图像的左上角(0,0),无法自定义。本文将提供一个基于JavaScript和CSS的解决方案,实现以任意点为中心的背景图片缩放。 问题: 使用backgro…

    2026年9月1日
    100
  • 如何解决前端开发中的响应式设计问题?使用Composer可以引入Bootstrap5框架!

    可以通过以下地址学习 Composer:学习地址 在处理前端开发的响应式设计时,我遇到了一个棘手的问题:网站的布局在手机和平板上显示得并不理想。无论我如何调整 css,总是无法完美地适应所有设备。尝试了多种方法后,我决定使用 bootstrap 5 框架来解决这个问题。 Bootstrap 是一个非…

    用户投稿 2026年9月1日
    100
  • Element Plus弹框内Three.js渲染出现空白区域,如何解决?

    Element Plus弹框中集成Three.js渲染3D场景时,底部出现空白区域,这并非Three.js渲染问题,而是CSS样式冲突导致。文章标题为“Element Plus和Three.js构建3D预览窗口,出现底部空白区域”,核心问题是Three.js渲染容器(#container)未能完全填…

    2026年8月31日
    100
  • Element Plus与Three.js结合使用时,3D预览窗口出现空白区域该如何解决?

    Element Plus和Three.js结合使用:3D预览窗口空白区域问题排查与解决 在使用Element Plus和Three.js构建3D预览窗口时,可能会遇到意想不到的空白区域问题(如下图所示)。本文将分析此问题,并提供解决方案。 问题描述: 使用Element Plus的el-dialog…

    2026年8月31日
    100
  • 如何用JavaScript实现JSON数据中AssessingStatus字段值的条件颜色替换?

    前端javascript数据处理与颜色替换 本文将探讨如何使用javascript处理json数据,并根据特定条件将数据中的值替换为带有颜色标识的值。 问题源于一个json数组,包含多个对象,每个对象代表一位评估员的信息,其中assessingstatus字段的值需要根据特定逻辑进行替换,并用颜色进…

    用户投稿 2026年8月31日
    200
  • 网页底部光标样式失效了?如何排查及解决?

    网页底部光标样式失效了?如何排查及解决?网页底部光标样式失效了?如何排查及解决?网页底部光标样式失效了?如何排查及解决?网页底部光标样式失效了?如何排查及解决?

    网页底部鼠标指针样式异常:诊断与修复 在网页设计中,自定义鼠标指针样式能显著提升用户体验。然而,有时会出现底部区域鼠标指针样式失效的情况,即使该区域没有被其他元素遮挡。本文将分析此问题,并提供有效的解决方法。 问题表现为:开发者已正确设置cursor样式,但网页底部区域仍显示默认指针,且排查后确认无…

    2026年8月31日 用户投稿
    200
  • 开发中如何选择合适的Emoji表情库?

    寻找合适的emoji表情库? 在开发过程中,我们常常需要用到Emoji表情来增强用户体验,提升应用的趣味性。那么,有哪些好用的Emoji表情库可以选择呢?本文将介绍几个常用的库,帮助你找到合适的工具。 Emoji Mart:这是一个功能强大的Emoji表情库,它提供了丰富的表情符号,并且支持多种编程…

    用户投稿 2026年8月31日
    100
  • 如何用CSS绘制任意形状的圆弧线?

    利用css绘制任意形状圆弧线的技巧 许多前端开发者在CSS页面设计中,常常需要绘制各种形状,其中,创建特定形状的圆弧线是一个常见的挑战。本文将通过一个案例分析,讲解如何使用CSS实现复杂的圆弧效果。 文中探讨了使用CSS实现曲线效果的方法。 提问者尝试使用border-radius属性: img {…

    2026年8月31日
    100
  • CSS如何实现图片底部圆弧边框效果?

    CSS打造图片底部圆弧边框:高效技巧详解 在网页设计中,灵活运用CSS创建各种形状的边框是提升页面美观度的关键。本文将详细讲解如何使用CSS高效地实现图片底部圆弧边框效果,解决开发者在实际应用中常遇到的难题。 问题: 如何仅用CSS为图片底部创建圆弧边框?单纯使用border-radius属性似乎无…

    2026年8月31日
    000
  • VSCode怎么贴小图_VSCode插入图片与Markdown图片预览教程

    VSCode怎么贴小图_VSCode插入图片与Markdown图片预览教程VSCode怎么贴小图_VSCode插入图片与Markdown图片预览教程VSCode怎么贴小图_VSCode插入图片与Markdown图片预览教程VSCode怎么贴小图_VSCode插入图片与Markdown图片预览教程

    答案:在VSCode中插入Markdown图片需使用语法,路径推荐用相对路径,预览依赖内置功能或扩展;可通过HTML 标签调整大小,常见问题为路径错误,建议使用Paste Image等扩展提升效率,高级效果如图文混排需结合HTML与CSS,但需注意平台兼容性。 VSCode中插入图片,特别是Mark…

    2026年8月31日 用户投稿
    100
  • CSS如何实现图片中所示的底部弧形边框?

    CSS打造底部弧形边框:巧妙运用border-radius 在网页设计中,创建特定形状的边框,例如图片所示的底部弧形边框,常常需要一些技巧。单纯的border-radius属性难以直接实现这种效果。本文将详细讲解如何通过CSS技巧,精确绘制出这种底部弧形边框。 许多开发者尝试使用border-rad…

    2026年8月31日
    100
  • 解决Laravel项目中CSS文件无法加载的问题

    解决Laravel项目中CSS文件无法加载的问题,需要具体代码示例 在开发Laravel项目的过程中,有时候会遇到CSS文件无法加载的问题,这可能会导致页面样式混乱或者无法正常显示页面内容。这个问题通常是由于文件路径配置或者缓存导致的,接下来我们将介绍几种常见的解决方法,并提供具体的代码示例。 一、…

    2026年8月31日
    000
  • 如何用Flexbox和JavaScript实现父元素内子元素的两行排列及展开显示?

    如何利用Flexbox和JavaScript在一个父元素内实现子元素的两行排列,并支持点击展开显示全部内容? 本文将演示如何使用Flexbox和JavaScript,在一个父容器中将多个子元素排列成两行,初始状态隐藏超出部分,点击按钮后显示所有内容并启用水平滚动条。 关键在于巧妙地结合CSS的Fle…

    2026年8月31日
    100
  • 如何解决Laravel无法加载CSS样式的情况

    标题:如何解决Laravel无法加载CSS样式的情况 在使用Laravel进行Web开发的过程中,有时候会遇到CSS样式无法加载的情况,这可能会导致页面显示效果不正常。本文将介绍一些常见的原因以及解决方法,同时提供具体的代码示例供大家参考。 1. 检查CSS文件路径是否正确 首先要确保CSS文件路径…

    2026年8月31日
    100
  • Tailwind CSS hocus 变体失效:为什么按钮焦点状态下样式不生效?

    Tailwind CSS hocus 变体失效排查:焦点样式覆盖问题 使用 Tailwind CSS 时,变体(variants)用于控制样式在不同状态下的应用。然而,有时变体可能失效,例如 hocus 变体在按钮获得焦点时样式不生效。本文分析一个实际案例,解释 hocus 变体未能正确应用样式的原…

    2026年8月31日
    200
  • VSCode用户代码片段管理_VSCode自定义模板快速创建入口

    VSCode通过用户代码片段和自定义模板显著提升开发效率。1. 可通过“文件 > 首选项 > 用户代码片段”为特定语言或全局创建代码片段,使用prefix触发、body定义代码结构、description标注用途。2. 合理管理需区分语言特定与全局片段,避免prefix冲突,善用desc…

    2026年8月31日
    700
  • 使用Chart.js在React项目中实现响应式图表的方法

    实现chart.js在react中的响应式图表,关键在于配置responsive: true和maintainaspectratio: false,并通过useeffect监听窗口resize事件动态更新chartoptions;2. 避免渲染问题需确保数据初始化、合理管理useeffect依赖项、…

    2026年8月30日
    000

发表回复

登录后才能评论
关注微信