HTML + CSS 核心知识点- 定位
简述:
补充固定定位也会脱离文档流、不会占据原先位置
1、什么是文档流
文档流是指HTML文档中元素排列的规律和顺序。在网页中,元素按照其在HTML文档中出现的顺序依次排列,这种排列方式被称为文档流。文档流决定了元素在页面上的位置和互相之间的关系。
2、具体代码和效果
(1)未设置定位前
代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Position 示例</title>
<style>.container {width: 500px;margin: 50px auto;border: 1px solid black;position: relative;}.sticky-box {width: 100px;height: 100px;background-color: purple;}.absolute-box {width: 100px;height: 100px;background-color: blue;}.relative-box {width: 100px;height: 100px;background-color: green;}.static-box {width: 100px;height: 100px;background-color: gray;}.fixed-box {width: 100px;height: 100px;background-color: orange;}.spacer {height: 1000px;}
</style>
</head>
<body>
<div class="container"><div class="sticky-box">Sticky</div><div class="static-box">Static</div><div class="relative-box">Relative</div><div class="absolute-box">Absolute</div><div class="fixed-box">Fixed</div>
</div>
<div class="spacer"></div>
</body>
</html>
效果
效果说明
基于文档正常流显示
(2)给static-box设置静态定位(static),并给left和top值后
代码
.static-box {width: 100px;height: 100px;background-color: gray;position: static;left: 1000px;top: 1000px;}
效果
效果说明
基于文档正常流显示、无任何变化
(3)给relative-box设置相对定位(relative),并给left和top值后
代码
.relative-box {width: 100px;height: 100px;background-color: green;position: relative;left: 100px;top: 100px;}
效果
效果说明
元素会保持原本占据空间、并基于自身进行偏移。
(4)给absolute-box设置绝对定位(absolute),并给left和top值后
代码
.relative-box {width: 100px;height: 100px;background-color: green;position: relative;left: 100px;top: 100px;}
效果
效果说明
脱离了文档流、并未占原先位置、并基于最近的非static的父元素盒子偏移。
(5)给fixed-box设置绝对定位(fixed),并给left和top值后
代码
.fixed-box {width: 100px;height: 100px;background-color: orange;position: fixed;top: 100px;left: 100px;}
效果
效果说明
脱离了文档流、并未占原先位置、并基于视窗偏移。
(6)给父容器盒子加上滚动条、sticky-box设置绝对定位(sticky),并给left和top值后
代码
.container {width: 500px;height: 500px;margin: 100px auto;border: 1px solid black;position: relative;overflow: scroll;}.sticky-box {width: 100px;height: 200px;background-color: purple;position: sticky;left: 100px;top: 100px;}
<div class="container"><div class="sc" style="height: 300px;"></div><div class="sticky-box">Sticky</div><div class="static-box">Static</div><div class="relative-box">Relative</div><div class="absolute-box">Absolute</div><div class="fixed-box">Fixed</div><div class="sc" style="height: 1000px;"></div>
</div>
效果
未滑动前
效果说明
此时盒子为相对定位
效果
滚动条向下滑动后、但是盒子距离父盒子顶部大于200px
效果说明
此时盒子也会向上滑动、盒子依旧为相对定位
效果
滚动条向下滑动后、盒子距离父盒子顶部小于或等于200px
效果说明
此时盒子会具体在距离顶部200px的位置、盒子为绝对定位
3、和定位的知识有关考查题与回答
-
什么是 CSS 定位?
回答:在 CSS 中,定位是一种用来控制元素在页面中位置的方式。通过设置position
属性,可以将元素相对于文档流或特定父级元素进行定位。 -
请解释 CSS 中的
回答:position
属性有哪些值,它们分别代表什么?sticky
:在特定条件下表现为相对定位和固定定位的混合效果。fixed
:相对于视窗定位,元素固定在页面上某个位置,不随滚动而移动。absolute
:相对于最近的非 static 定位父元素进行定位,如果没有,则相对于文档流。relative
:相对于元素自身原本位置进行偏移,但仍占据原本空间。static
:默认属性,元素遵循正常文档流。
-
如何让一个元素水平垂直居中显示?
回答:可以使用多种方法实现,比如使用 Flexbox 布局或者 Grid 布局,也可以结合使用绝对定位和transform
属性来实现。 -
什么是堆叠上下文(stacking context)?
回答:堆叠上下文是指在 HTML 元素在垂直方向上重叠时的一个概念,它定义了元素如何在垂直方向上叠加显示。元素的堆叠顺序由其堆叠上下文和z-index
属性决定。 -
如何创建一个元素的堆叠上下文?
回答:可以通过设置元素的position
属性为relative
、absolute
、fixed
或sticky
,或者设置opacity
属性不为 1、transform
属性不为none
、filter
属性不为none
等方式来创建堆叠上下文。 -
什么是浮动(float)?它与定位有何区别?
回答:浮动是一种布局方式,使元素脱离文档流向左或向右浮动。与定位不同,浮动元素仍占据文档流中的位置,而定位可以使元素完全脱离文档流并定位到指定位置。 -
在什么情况下会出现定位偏移量(offset)失效的情况?
回答:定位偏移量(offset)失效通常发生在相对定位元素的父级元素也设置了定位属性且定位值不为static
的情况下。这时子元素的偏移量是相对于父级定位元素的位置而非文档流。 -
如何实现一个元素在页面滚动时固定在顶部?
回答:可以通过给元素设置position: fixed; top: 0;
来实现元素在页面滚动时固定在顶部。 -
回答:z-index
属性的作用是什么?如何影响元素的堆叠顺序?z-index
属性用于控制元素在堆叠上下文中的堆叠顺序。具有较高z-index
值的元素会覆盖具有较低z-index
值的元素。 -
如何实现一个元素相对于视口垂直居中显示?
回答:可以给元素设置position: fixed; top: 50%; transform: translateY(-50%);
来实现元素相对于视口垂直居中显示。
相关文章:

HTML + CSS 核心知识点- 定位
简述: 补充固定定位也会脱离文档流、不会占据原先位置 1、什么是文档流 文档流是指HTML文档中元素排列的规律和顺序。在网页中,元素按照其在HTML文档中出现的顺序依次排列,这种排列方式被称为文档流。文档流决定了元素在页面上的位置和互相之…...

Spring MVC(二)-过滤器与拦截器
过滤器和拦截器在职责和使用场景上存在一些差异。 过滤器 拦截器 作用 对请求进行预处理和后处理。例如过滤请求参数、设置字符编码。 拦截用户请求并进行相应处理。例如权限验证、用户登陆检查等。 工作级别 Servlet容器级别,是Tomcat服务器创建的对象。可以…...
python vtk读取vtk文件
参考: https://cloud.tencent.com/developer/ask/sof/101993637 方法一:使用pyvtk 要使用Python读取VTK文件,可以使用pyvtk库。首先,确保已经安装了pyvtk。如果没有安装,可以通过pip安装: csharp pip ins…...
LeetCode 2671.频率跟踪器:俩计数哈希表
【LetMeFly】2671.频率跟踪器:俩计数哈希表 力扣题目链接:https://leetcode.cn/problems/frequency-tracker/ 请你设计并实现一个能够对其中的值进行跟踪的数据结构,并支持对频率相关查询进行应答。 实现 FrequencyTracker 类:…...
NAT笔记
NAT 用于实现内网和外网之间的互访。 静态NAT 静态NAT实现内网地址和外网地址的一对一转换。 有2种配置方法: 全局模式下设置静态NAT [R1]nat static global 172.10.10.10 inside 192.168.10.10 [R1]int g0/0/1 #外网接口 [R1-GigabitEthernet0/0/1]nat static…...
MySQL 数据库的备份和还原
1.命令行 备份语法 mysqldump -u用户名 -p密码 数据库名称 > 保存的路径还原语法 1.登陆数据库 2.创建数据库 3.使用数据库 4.执行文件 source 文件路径2.图形化(太简单了不写了) 点击返回 MySQL 快速学习目录...
初识CSS样式 与 文本背景样式
目录 前言: 1.什么是CSS: 2.关于css的主要特性: 2.1层叠性: 2.2继承性: 2.3优先级: 2.4.CSS的组成结构: 3.css样式的三种写法: 3.1内联样式: 3.1.2存在的优点和缺点: 3.2内部样式表: 3.2.2存在的优点和缺点:…...

JSR380验证框架
依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId> </dependency>demo Size(min10,max200 ,message"描述需要控制在10到200字符") Min(valu…...

百度paddleocr GPU版部署
显卡:NVIDIA GeForce RTX 4070,Nvidia驱动程序版本:537.13 Nvidia驱动程序能支持的最高cuda版本:12.2.138 Python:python3.10.11。试过python3.12,安装paddleocr失败,找不到相关模块。 飞桨版本…...
node.js 常用命令
Node.js的常用命令包括多种类型,从运行JavaScript文件到管理Node.js的模块和包。以下是一些主要的Node.js常用命令: 运行JavaScript文件: node filename.js 这个命令会调用Node.js程序来运行指定的JavaScript文件。 查看文件和目录…...
Easypoi实现导出Excel(简单高效)
今天做报表导出,网上找了很多导出的方法,最后总结发现以下方法是最简便,更易维护的导出方法,下面来分享给大家。 1、首先引入相关依赖 <!--EasyPoi 报表--><dependency><groupId>cn.afterturn</groupId>…...
python之pathlib库使用介绍
pathlib 是 Python 标准库中用于处理文件路径的模块。它提供了一种面向对象的方式来操作文件和目录路径,简化了路径操作的编码和跨平台的兼容性。下面是 pathlib 库的基本介绍和使用方法: 1.导入 pathlib 模块 from pathlib import Path 2.创建路径对…...

Java:设计模式
文章目录 参考简介工厂模式简单工厂模式工厂方法模式抽象工厂模式总结 单例模式预加载懒加载线程安全问题 策略模式 参考 知乎 简介 总体来说设计模式分为三类共23种。 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模…...

【链表】Leetcode 19. 删除链表的倒数第 N 个结点【中等】
删除链表的倒数第 N 个结点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5] 解题思路 1、使用快慢指针找到要删除节点的前一个节点。2、删…...
亚马逊认证考试系列 - 知识点 - 安全组简介
AWS安全组是一种虚拟防火墙,用于控制实例进出网络流量。安全组是一个实例级别的防火墙,可以定义哪些流量可以进入或离开特定的EC2实例。 功能:安全组可以用于限制特定类型的流量,如HTTP或SSH,允许特定IP地址范围的流量…...
同向双指针合集(力扣)
283. 移动零 代码 class Solution { public:void moveZeroes(vector<int>& nums) {int n nums.size();int l 0, r 0;while(r < n){if(nums[r]){swap(nums[l],nums[r]);l;}r;}} };209. 长度最小的子数组 代码 class Solution { public:int minSubArrayLen(i…...

G - Find a way
题目分析 1.双重bfs,遍历两个起点求最短路再计算总和即可 2.唯一的坑点在于对于一个KFC,两人中可能有一个到不了,所以还要对到不了的点距离做处理 #include <bits/stdc.h> using namespace std; using ll long long; const int N 220;struct pos…...

AJAX 02 案例、Bootstrap框架
AJAX 学习 AJAX 2 综合案例黑马 API01 图书管理Bootstrap 官网Bootstrap 弹框图书管理-渲染列表图书管理-添加图书图书管理-删除图书图书管理 - 编辑图书 02 图片上传03 更换图片04 个人信息设置信息渲染头像修改补充知识点:label扩大表单的范围 AJAX 2 综合案例 黑…...

SinoDB客户端工具dbaccess
类似Oracle的客户端工具sqlplus,Mysql的客户端工具mysql,SinoDB数据库也有自带的命令行客户端工具dbaccess。 dbaccess 识别用户输入,将用户输入的 SQL 语句打包发送给 SinoDB 数据库服务器执行,然后接收服务器的执行结果…...
postman学习
一、如何学习postman工具 1、下载和安装 Postman: 首先,从 Postman 官方网站(https://www.postman.com)下载并安装 Postman 应用程序。 2、了解基本概念: 在开始学习之前,了解一些基本概念,…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
Windows 下端口占用排查与释放全攻略
Windows 下端口占用排查与释放全攻略 在开发和运维过程中,经常会遇到端口被占用的问题(如 8080、3306 等常用端口)。本文将详细介绍如何通过命令行和图形化界面快速定位并释放被占用的端口,帮助你高效解决此类问题。 一、准…...

【笔记】AI Agent 项目 SUNA 部署 之 Docker 构建记录
#工作记录 构建过程记录 Microsoft Windows [Version 10.0.27871.1000] (c) Microsoft Corporation. All rights reserved.(suna-py3.12) F:\PythonProjects\suna>python setup.py --admin███████╗██╗ ██╗███╗ ██╗ █████╗ ██╔════╝…...
GB/T 43887-2024 核级柔性石墨板材检测
核级柔性石墨板材是指以可膨胀石墨为原料、未经改性和增强、用于核工业的核级柔性石墨板材。 GB/T 43887-2024核级柔性石墨板材检测检测指标: 测试项目 测试标准 外观 GB/T 43887 尺寸偏差 GB/T 43887 化学成分 GB/T 43887 密度偏差 GB/T 43887 拉伸强度…...

react-pdf(pdfjs-dist)如何兼容老浏览器(chrome 49)
之前都是使用react-pdf来渲染pdf文件,这次有个需求是要兼容xp环境,xp上chrome最高支持到49,虽然说iframe或者embed都可以实现预览pdf,但为了后续的定制化需求,还是需要使用js库来渲染。 chrome 49测试环境 能用的测试…...