面试官:介绍一下CSS定位?absolute和relative分别依据什么定位?

news2024/11/25 22:31:25

db931b034d3b4de3ac3c4edc33b4813f.png

能说服一个人的,从来不是道理,而是南墙。

一、position属性介绍

取值名称效果
static静态定位(默认值)元素按照标准流布局 (不脱标) , top、bottom、left 、right等属性不起作用
relative相对定位元素按照标准流布局 (不脱标) ,可以通过top、bottom、left 、right进行定位,定位参照对象是自身在标准流布局中的位置
absolute绝对定位元素脱离标准流 (脱标) ,可以通过top、bottom、left 、right进行定位,定位参照对象是最邻近的祖先定位元素, 如果找不到这样的父级元素,参照对象是视口。 定位元素(positioned element),position值不为static的元素, 也就是position值为relative、absolute、fixed的元素
fixed固定定位元素脱离标准流 (脱标) ,可以通过top、bottom、left 、right进行定位,定位参照对象是视口(viewport), 当画布(canvas)滚动时,固定不动
sticky粘性定位可以看做相对和固定定位的结合体;它允许被定位的元素表现得像相对定位一样,直到它滚动到某个阈值点; 当达到这个阈值点时, 就会变成固定定位; sticky是相对于最近的滚动祖先包含视口

1. 标准流(Normal Flow)

默认情况下,元素都是按照normal flow(标准流、常规流、正常流、文档流)进行排布的。

  • 排布顺序:在浏览器中从左到右,从上到下顺序摆放;
  • 默认情况下,元素互相之间不存在层叠现象

2. position: sticky;

又称为粘性定位,是css3新增的。

粘性定位的元素依赖于用户的滚动,在相对定位(relative)与固定定位(fixed)之间进行切换,基于位偏移的值进行偏移。

粘性定位可以被认为是相对定位和固定定位的混合
元素在跨越特定位偏移之前为相对定位,之后为固定定位。
 

示例:
.div{ position: sticky; top: 50px; }
设置了以上元素,在屏幕范围(viewport)视口滚动到元素top距离小于50px之前,div为相对定位。之后元素将固定在与顶部距离50px的位置,直到viewport视口回滚到50px以内。

特点:

  • 该元素并不脱离文档流,仍然保留元素原本在文档流中的位置。
  • 元素固定的相对偏移是相对于离它最近的具有滚动框的祖先元素,如果祖先元素都不可以滚动,那么是相对于viewport来计算元素的偏移量
  • 当元素在容器中被滚动超过指定的偏移值时,元素在容器内固定在指定位置。亦即如果你设置了 top:50px;  ,那么在sticky元素到达距离相对定位的元素顶部50px的位置时固定,不再向上移动。
  • 元素定位表现为在跨越特定阈值前为相对定位,之后为固定定位。

二、定位元素特点

  • 1.可以设置宽高(不管是块级元素还是行内元素)

  • 2.宽高默认由内容撑开

  • 4.不再给父元素汇报宽高数据

  • 5.脱标元素内部默认还是按照标准流布局

三、定位相关属性——z-index

z-index 属性 z : z轴; index : 指数;

x 轴代表水平方向,y 轴代表垂直方向,z 轴则代表我们的目光向页面(屏幕)看进去

format,png

z-index根据指数,设置元素在z轴上的层叠顺序(仅对定位元素有效)

取值可以是正整数、负整数、0;值越大,元素就离我们“越近”,值越小,元素自然也就离我们“越远”;

默认值为auto;

比较规则

        兄弟关系

                z-index越大,层叠在越上面

                z-index相等,写在后面的那个元素层叠在上面

        非兄弟关系

                各自从元素自己以及祖先元素中,找出最邻近的2个定位元素进行比较

                而且这2个定位元素必须有设置z-index的具体数值

四、常见使用技巧

1.子绝父相

在绝大数情况下,子元素的绝对定位都是相对于父元素进行定位

如果希望子元素相对于父元素进行定位,又不希望父元素脱标,常用解决方案是:

父元素设置position: relative(让父元素成为定位元素,而且父元素不脱离标准流)

子元素设置position: absolute

简称为“子绝父相”

2.绝对定位元素居中显示

绝对定位元素(absolutely positioned element)

——position取值为absolute或者fixed的元素

对于绝对定位元素来说,

定位参照对象的宽度 = left + right + margin-left + margin-right + 绝对定位元素的实际占用宽度

定位参照对象的高度 = top + bottom + margin-top + margin-bottom + 绝对定位元素的实际占用高度

如果希望绝对定位元素的宽高和定位参照对象一样,可以给绝对定位元素设置以下属性 left: 0、right: 0、top: 0、bottom: 0、margin:0

如果希望绝对定位元素在定位参照对象中居中显示,可以给绝对定位元素设置以下属性 left: 0、right: 0、top: 0、bottom: 0、margin: auto另外,还得设置具体的宽高值(宽高小于定位参照对象的宽高)

五、各定位属性区别

脱离标准流定位元素绝对定位元素定位参照对象
static 静态定位××××
relative 相对定位××元素自身在标准流中的位置
absolute 绝对定位最邻近的定位祖先元素(如果找不到这样的祖先元素,参照对象是视口)
fixed 固定定位视口

六、定位使用场景

定位带来的元素层叠性,经常用于一些特殊样式中。

(1)遮罩层 mask / cover

cfd149a2ef44435c81c76f513abe5ce0.png

(2)网页挂件 pendant / widget (部分信息屏蔽处理)

(3)stick粘性头部导航

aa4e286e9e3c4e958144acf8e4174275.gif

七、应答面试官

4ab401dbcf4842e7add461612a416a21.png

面试官:说一下定位?absolute和relative分别依据什么定位?

你: 

1.relative依据自身定位

2.absolute依据最近一层的定位元素定位

定位元素——position属性值为absolute、relative、fixed的元素

                      如果没有父级元素都不是定位元素,则依据body

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/969861.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Medium:做AB test需要多少时间?

文章链接:https://medium.com/alfredcamera/%E5%81%9A-ab-test-%E9%9C%80%E8%A6%81%E5%A4%9A%E5%B0%91%E6%99%82%E9%96%93-c401fbe00eb0 其中,最关键的是确定:总共需要多少样本数量。由以下2个指标决定: 由工具得到: 特…

监听器Listener -,钝化,活化,利用监听器实现简易版 统计网站在线用户功能

监听绑定到HttpSession域中某个对象状态 1.HttpSessionBindingListener 实体类 package com.etime.enetity;import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionBindingListener;//此处需要实现HttpSessionBindingListener接口&…

使用MDK5的一些偏僻使用方法和谋个功能的作用

程序下载后无法运行 需要勾选如下库,是优化后的库; MicroLib和标准C库之间的主要区别是: 1、MicroLib是专为深度嵌入式应用程序而设计的。 2、MicroLib经过优化,比使用ARM标准库使用更少的代码和数据内存。 3、MicroLib被设计成在没有操作…

科技成果鉴定之鉴定测试报告

鉴定测试 由于软件类科技成果的复杂、内部结构难以鉴别等特点,我们提供了软件类科技成果鉴定测试服务。软件类科技成果鉴定测试是依据其科研项目计划任务书或技术合同书,参照相应的国家标准对要申请鉴定的软件类科技成果进行的一种符合性测试&#xff0…

【100天精通Python】Day51:Python 数据分析_数据分析入门基础与Anaconda 环境搭建

目录 1 科学计算和数据分析概述 2. 数据收集和准备 2.1 数据收集 2.1.1 文件导入: 2.1.2 数据库连接: 2.1.3 API请求: 2.1.4 网络爬虫: 2.2 数据清洗 2.2.1 处理缺失值: 2.2.2 去除重复值: 2.2…

数学建模--Python绘图

目录 1.绘制散点图 1.1.绘制过程解释 1.2.绘制图像代码 1.3.绘制图像展示 2.绘制折线统计图 2.1.绘制过程解释 2.2.绘制图像代码 2.3.绘制图像展示 3.绘制柱形图 3.1.绘制图像解释 3.2.绘制图像代码 3.3.绘制图像展示 4.多种图形的综合绘制 4.1.绘制图像解释 4.2.绘制图像…

二级web操作题(1-6)

第二套 1.对数组排序 <html> <title>对数组排序</title> <body> <script> //生成一个m、n之间的整数 function rand(m,n){ /* **********Found********** */ var iMath.random(); /* **********Found********** */ return Math.round((n-m…

内存管理之:内存空间分布和栈攻击(黑客常用攻击手段)

目录 C语言内存管理及栈攻击 内存管理 Linux虚拟内存空间分布&#xff08;重要&#xff09; 栈溢出&#xff08;栈攻击&#xff09; 堆栈的特点 栈攻击 栈攻击的实现 原理 编译器选项 实现案例 linux修改栈空间大小方式 内存泄漏 如何避免野指针&#xff1f; 如何…

C++智能指针之weak_ptr(保姆级教学)

目录 C智能指针之weak_ptr 概述 作用 本文涉及的所有程序 使用说明 weak_ptr的常规操作 lock(); use_count(); expired(); reset(); shared_ptr & weak_ptr 尺寸 智能指针结构框架 常见使用问题 shared_ptr多次引用同一数据&#xff0c;会导致两次释放同一内…

Medium:How to check the correctness of the AB test?

有以下两种错误&#xff1a; 通常&#xff0c;type 1 error is more important&#xff01;因此我们type 2 error就是在“委曲求全”&#xff1a; The probability of Type II error can be adjusted to the desired value by changing the size of the groups or by reducing…

【LeetCode每日一题合集】2023.8.14-2023.8.20(⭐切披萨3n块披萨)

文章目录 617. 合并二叉树833. 字符串中的查找与替换&#xff08;模拟&#xff09;2682. 找出转圈游戏输家&#xff08;模拟&#xff09;1444. 切披萨的方案数&#xff08;⭐⭐⭐⭐⭐&#xff09;解法——从递归到递推到优化&#xff08;二维前缀和记忆化搜索&#xff09; 1388…

【LeetCode每日一题合集】2023.8.7-2023.8.13(动态规划分治)

文章目录 344. 反转字符串1749. 任意子数组和的绝对值的最大值&#xff08;最大子数组和&#xff09;1281. 整数的各位积和之差1289. 下降路径最小和 II解法1——动态规划 O ( n 3 ) O(n^3) O(n3)解法2——转移过程优化 O ( n 2 ) O(n^2) O(n2) ⭐ 1572. 矩阵对角线元素的和解法…

13.Redis 事务

Redis 事务 redis 事务事务操作multi 开启事务exec 执行事务discard 放弃当前事务watchunwatch redis 事务 Redis 的事务和 MySQL 的事务概念上是类似的。 都是把⼀系列操作绑定成⼀组。 让这⼀组能够批量执⾏。 Redis 的事务和 MySQL 事务的区别: 弱化的原⼦性: 这里指的是 …

Pinely Round 2 (Div. 1 + Div. 2) G. Swaps(组合计数)

题目 给定一个长度为n(n<1e6)的序列&#xff0c;第i个数ai(1<ai<n)&#xff0c; 操作&#xff1a;你可以将当前i位置的数和a[i]位置的数交换 交换可以操作任意次&#xff0c;求所有本质不同的数组的数量&#xff0c;答案对1e97取模 思路来源 力扣群 潼神 心得 感…

huggingface下载模型文件(基础入门版)

huggingface是一个网站&#xff0c;类似于github&#xff0c;上面拥有众多开源的模型、数据集等资料&#xff0c;人工智能爱好者可以很方便的上面获取需要的数据&#xff0c;也可以上传训练好的模型&#xff0c;制作的数据集等。本文只介绍下载模型的方法&#xff0c;适合新手入…

SpringBoot连接MySQL数据库,使用Mybatis框架(入门)

1. 说明 SpringBoot项目&#xff0c;连接MySQL数据库&#xff0c;使用Mybatis框架。 本篇文章作为 SpringBoot 使用 Mybatis 的入门。 2. 依赖 2.1. MySQL驱动依赖 MySQL驱动&#xff0c;使用SpringBoot版本对应的默认版本&#xff0c;不需要手动指定版本。 比如&#xf…

【狂神】Spring5 (三) 之Aop的实现方式

今天没有偷懒&#xff0c;只是忘了Mybatis&#xff0c;所以去补课了~ ┏━━━━━━━━━━━━━━━┓ NICE PIGGY PIG.. ┗━━━━━━━△━━━━━━━┛ ヽ(&#xff65;ω&#xff65;)&#xff89; | / UU 1.Aop实现方式一 1.1、什…

UG\NX CAM二次开发 查询工序所在的方法组TAG UF_OPER_ask_method_group

文章作者:代工 来源网站:NX CAM二次开发专栏 简介: UG\NX CAM二次开发 查询工序所在的方法组TAG UF_OPER_ask_method_group 效果: 代码: void MyClass::do_it() { int count=0;tag_t * objects;UF_UI_ONT_ask_selected_nodes(&count, &objects);for (i…

Multimedia-播放器-架构2

目录 引言 问题1&#xff1a; 数据缓冲区 多线程模型 缓冲区的特点&#xff1a; 点播和直播场景中的缓冲区&#xff1a; 问题2&#xff1a; 同步方式 同步实现过程 引言 上一篇梳理了播放器的基本工作与处理流程&#xff0c;本片内容主要梳理一下其中会遇到的问题&am…

桂理理工大题

#include <stdio.h> #include <stdlib.h>int getMax(int n); int getMin(int n); int range(int n); static int count1; //作为全局变量控制每次的序列号int main(){int num;int i,j;do{printf("输入黑洞数&#xff1a;\n");scanf("%d",&…