百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Html之position粘性定位

zhezhongyun 2025-05-27 19:12 29 浏览

这几天刚开始写一个Vue项目,遇到了一个定位问题,觉得挺有意思的,这里分享给大家。

其实就是一个首页顶部固定的问题,一提到顶部固定,相信大家都第一反应是想到了

position:fixed;

下面来看一下这个页面

这个页面看起来挺正常的,其实是下面内容区添加了margin-top:60px样式,如果把margin-top去掉就会变成下图这样

发现上面的Welcome to Your Vue.js App字样被顶部导航栏遮盖,这里大家可能会说,覆盖后下面内容设置一个margin-top不就行了,其实前面我就设置过margin-top为60px,这个60px实际上是顶部导航栏的高度;

导航栏高度基本上都是固定的,有时候除了导航栏需要固定,也会碰到一下其他的高度不固定的元素需要固定,如果margin-top单纯设置一个固高当然不行 ;

有人会说这个高度可以根据需要固定元素的高度动态设置,其实这是一种办法,通过js动态获取顶部导航栏的高度,然后给下面内容区margin-top赋值;

今天我想说的是另一种方法,就是position定位属性sticky粘性定位,大家听到这个可能并不陌生,sticky是CSS3提供的一个新属性,相当于是相对定位relative和固定定位fixed的结合体

它主要用在对scroll事件的监听上,简单说在滑动过程中,某个元素的距离其父元素的距离达到 sticky 粘性定位 要求时;position:sticky 这时的效果就相对于 fixed 定位,固定到适当的位置。

但是sticky也需要满足一些条件才能生效

使用条件:

1. 父元素不能设置 overflow:hidden; 或者 overflow:auto; 属性;

2. 必须制定 top、bottom 、left 、 right 4个值之一,否则只会处于相对定位;

3. 元素的高度不能低于sticky 元素的高度;

4. sticky 元素仅在其父元素内生效

相关推荐

perl基础——循环控制_principle循环

在编程中,我们往往需要进行不同情况的判断,选择,重复操作。这些时候我们需要对简单语句来添加循环控制变量或者命令。if/unless我们需要在满足特定条件下再执行的语句,可以通过if/unle...

CHAPTER 2 The Antechamber of M de Treville 第二章 特雷维尔先生的前厅

CHAPTER1TheThreePresentsofD'ArtagnantheElderCHAPTER2TheAntechamber...

CHAPTER 5 The King'S Musketeers and the Cardinal'S Guards 第五章 国王的火枪手和红衣主教的卫士

CHAPTER3TheAudienceCHAPTER5TheKing'SMusketeersandtheCardinal'SGuard...

CHAPTER 3 The Audience 第三章 接见

CHAPTER3TheAudienceCHAPTER3TheAudience第三章接见M.DeTrévillewasatt...

别搞印象流!数据说明谁才是外线防守第一人!

来源:Reddit译者:@assholeeric编辑:伯伦WhoarethebestperimeterdefendersintheNBA?Here'sagraphofStea...

V-Day commemorations prove anti-China claims hollow

People'sLiberationArmyhonorguardstakepartinthemilitaryparademarkingthe80thanniversary...

EasyPoi使用_easypoi api

EasyPoi的主要特点:1.设计精巧,使用简单2.接口丰富,扩展简单3.默认值多,writelessdomore4.springmvc支持,web导出可以简单明了使用1.easypoi...

关于Oracle数据库12c 新特性总结_oracle数据库12514

概述今天主要简单介绍一下Oracle12c的一些新特性,仅供参考。参考:http://docs.oracle.com/database/121/NEWFT/chapter12102.htm#NEWFT...

【开发者成长】JAVA 线上故障排查完整套路!

线上故障主要会包括CPU、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如jstack、jmap等工具也是不囿于一个方面的问题...

使用 Python 向多个地址发送电子邮件

在本文中,我们将演示如何使用Python编程语言向使用不同电子邮件地址的不同收件人发送电子邮件。具体来说,我们将向许多不同的人发送电子邮件。使用Python向多个地址发送电子邮件Python...

提高工作效率的--Linux常用命令,能够决解95%以上的问题

点击上方关注,第一时间接受干货转发,点赞,收藏,不如一次关注评论区第一条注意查看回复:Linux命令获取linux常用命令大全pdf+Linux命令行大全pdf为什么要学习Linux命令?1、因为Li...

linux常用系统命令_linux操作系统常用命令

系统信息arch显示机器的处理器架构dmidecode-q显示硬件系统部件-(SMBIOS/DMI)hdparm-i/dev/hda罗列一个磁盘的架构特性hdparm-tT/dev/s...

小白入门必知必会-PostgreSQL-15.2源码编译安装

一PostgreSQL编译安装1.1下载源码包在PostgreSQL官方主页https://www.postgresql.org/ftp/source/下载区选择所需格式的源码包下载。cd/we...

Linux操作系统之常用命令_linux系统常用命令详解

Linux操作系统一、常用命令1.系统(1)系统信息arch显示机器的处理器架构uname-m显示机器的处理器架构uname-r显示正在使用的内核版本dmidecode-q显示硬件系...

linux网络命名空间简介_linux 网络相关命令

此篇会以例子的方式介绍下linux网络命名空间。此例中会创建两个networknamespace:nsa、nsb,一个网桥bridge0,nsa、nsb中添加网络设备veth,网络设备间...