CSS 粘性布局sticky:使用方法+代码示例

还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技术开发,欢迎加底部微信(gis-dajianshi),一起交流。

在这里插入图片描述

No.大剑师精品GIS教程推荐
0地图渲染基础- 【WebGL 教程】 - 【Canvas 教程】 - 【SVG 教程】
1Openlayers 【入门教程】 - 【源代码+示例 300+】
2Leaflet 【入门教程】 - 【源代码+图文示例 150+】
3MapboxGL【入门教程】 - 【源代码+图文示例150+】
4Cesium 【入门教程】 - 【源代码+综合教程 200+】
5threejs【中文API】 - 【源代码+图文示例200+】
6Shader 编程 【图文示例 100+】
7Geoserver 【配置教程 100+】
8卫星应用开发教程 【配置+应用教程 100+】
9GIS数字孪生与大模型 【应用实战 100+】
10报表与数字大屏 【Echarts 实战示例】 - 【D3 综合教程】 - 【其他大屏】

在这里插入图片描述

什么是CSS的sticky

CSS 中的 position: sticky 是一种混合了相对定位(relative positioning)和固定定位(fixed positioning)特性的定位模式。当一个元素设置了 position: sticky 后,它在正常文档流中的行为类似于相对定位,但在满足特定滚动条件时,它会变为相对于其最近的滚动祖先(通常是带有滚动条的父容器,如果没有这样的祖先,则相对于视口)固定在某个位置。

使用条件

  1. 元素的 position 属性需要设置为 sticky
  2. 必须为元素指定至少一个非 auto 的偏移量(例如 top, bottom, left, 或 right),这样才能决定在滚动到哪个位置时元素开始固定。
  3. 元素的最近的滚动容器(ancestor)不能有 overflow 设置为 hiddenauto 且内容不足以滚动(即父容器高度不足时,sticky可能不会生效)。
  4. 元素要在其滚动容器内可见,也就是说,直到元素到达其滚动容器的顶部(或底部,取决于你设置的偏移方向)时才会固定。

示例效果图

在这里插入图片描述

示例源代码:

/*
* @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN)
* @此源代码版权归大剑师兰特所有,可供学习或商业项目中借鉴,未经授权,不得重复地发表到博客、论坛,问答,git等公共空间或网站中。
* @Email: 2909222303@qq.com
* @weixin: gis-dajianshi
* @First published in CSDN
* @First published time: 2024-03-14
*/

<template>
	<div class="djs-box">
		<div class="topBox">
			<h3>css的sticky功能演示</h3>
			<div>大剑师兰特, 还是大剑师兰特,gis-dajianshi</div>
		</div>
		<div class="dajianshi">           
				 <p v-for="(item,index) in restaurants" :key="index">
					 {{ item.name }}
				 </p>
			<div class="sticky-header"> sticky滚动到位置后,固定在某位置 </div>
			<p v-for="(item,index) in restaurants" :key="index">
								 {{ item.name }}
			</p>
		</div>
	</div>
</template>

<script>
	export default {
		data() {
			return {
				state1: '',
				restaurants: [
					{"name": "三全鲜食(北新泾店)",},
					{"name": "Hot honey 首尔炸鸡(仙霞路)",},
					{"name": "唦哇嘀咖",},
					{"name": "爱茜茜里(西郊百联)",},
					{"name": "爱茜茜里(近铁广场)",},
					{"name": "鲜果榨,汁(金沙江路和美广店)",},
					{"name": "开心丽果(缤谷店)",},
					{"name": "超级鸡车(丰庄路店)",},
					{"name": "三全鲜食(北新泾店)",},
					{"name": "Hot honey 首尔炸鸡(仙霞路)",},
					{"name": "唦哇嘀咖",},
					{"name": "爱茜茜里(西郊百联)",},
					{"name": "爱茜茜里(近铁广场)",},
					{"name": "鲜果榨,汁(金沙江路和美广店)",},
					{"name": "开心丽果(缤谷店)",},
					{"name": "超级鸡车(丰庄路店)",},
					{"name": "三全鲜食(北新泾店)",},
					{"name": "Hot honey 首尔炸鸡(仙霞路)",},
					{"name": "唦哇嘀咖",},
					{"name": "爱茜茜里(西郊百联)",},
					{"name": "爱茜茜里(近铁广场)",},
					{"name": "鲜果榨,汁(金沙江路和美广店)",},
					{"name": "开心丽果(缤谷店)",},
					{"name": "超级鸡车(丰庄路店)",}
				],

			}
		},
		mounted() {

		},
		methods: {


		}

	}
</script>
<style scoped>
	.djs-box {
		width: 1000px;
		height: 650px;
		margin: 50px auto;
		border: 1px solid black;
	}

	.topBox {
		margin: 0 auto 0px;
		padding: 10px 0 20px;
		background: black;
		color: #fff;
	}

	.dajianshi {
		width: 98%;
		margin: 0 auto;
		height: 520px; /* 仅为演示,设置一个有限高度以触发滚动 */
		overflow-y: auto; /* 必须允许滚动 */
		border: 1px solid #369;
		background-color: cde;
		position: relative;
	}

	
	.sticky-header {
	  position: sticky;
	  top: 0; /* 当元素滚动到距离顶部0px时开始固定 */
	  background-color: #f8f9fa;
	  width: 100%;
	  height: 40px;
	  padding: 10px 0;
	  color: red;
	  z-index: 1; /* 为了保证粘性元素不被其他浮动元素覆盖 */
	}
</style>

在这个例子中,.sticky-header 元素会在用户滚动 .dajianshi 内容,且 .sticky-header 达到距离顶部0像素时,固定在 .dajianshi 的顶部,如同页面顶部的固定导航栏。当向上滚动并越过 .sticky-header 的原始位置时,它就会保持在视口顶部,直到再次滚动回其自然位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还是大剑师兰特

打赏一杯可口可乐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值