CSS之包含块(contatining block)

可能了解包含块的人很少,但有这么个问题,大家可以看看。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.grand {width: 500px;height: 500px;background-color: skyblue;position: relative;}.fa {width: 300px;height: 300px;border: 5px solid black;margin-left: 100px;transform: rotate(0deg);}.son {width: 100px;height: 100px;position: absolute;background-color: red;left: 20px;height: 20px;}</style>
</head><body><div class="grand"><div class="fa"><div class="son"></div></div></div>
</body></html>

 在爷爷元素上添加了相对定位,给孙子元素上添加了绝对定位

以正常的一个理解来讲,孙子元素最后是相对爷爷元素来进行位偏移的,但结果却不是

可能有点丑,但结果是显而易见的,孙子元素是相对父元素来进行定位的,那么究竟是为什么呢,这里就需要了解一些包含块的知识点了。

一、什么是包含块

CSS规范中有明确书写(以下是部分截图)

 简单理解:就是元素的尺寸和位置,会受它的包含块所影响。对于一些属性,例如width,height,padding,margin,绝对定位元素的偏移值(比如position被设置为absolute或dixed),当我们对其赋予百分比值时,这些值的计算值,就时通过元素的包含块计算得来。

二、分类

1.跟元素所在包含块(初始包含块)

根元素(HTML元素)所在的包含块,被称为初始包含块(initial containing block)。对于浏览器而言,初始包含块的大小等于视口的大小,几点在画布的原点(视口左上角)。它是作为元素绝对定位和固定定位的参照物。

2.非根元素所在包含块

1).前三种可能

另一种是对于非根元素,对于非根元素的包含块判定就有大致三种不同情况:

  • 如果元素的positiion是relative或static(相对定位或静态定位),那么包含块由离它最近的块容器(block container)的内容去与(content area)的边缘建立;
  • 如果position的属性是fixed(固定定位),那么包含块由视口建立;
  • 如果元素使用了absolute(绝对定位),则包含块由它的最近的position的值不是static(也就是值为fixed、absolute、relative或sticky)的祖先元素的内边距区的边缘组成。

但大家看到这里会发现,这里所说的跟自己最一开始所想的结果应该是一样的啊,那么下面就是另外一种可能。

2).另一种可能

那就是如果position属性是absolute或fised,包含块也可能是满足以下条件的最近副局元素的内边距区的边缘组成的:

  • transform或perspective的值不是none;
  • will-change的值是transform或perspective;
  • filter的值不是none或will-change的值是filter(值在Firefox下生效);
  • contain的值是paint(例如:cantain: paint;)

相信大叫看完这些就明白产生这个结果的原因了,下面在附加一道例题:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>#div1 {position: absolute;left: 50px;top: 50px}#em1 {position: absolute;left: 100px;top: 100px}</style>
</head><body><div id="div1"><p id="p1">This is text in the first paragraph...</p><p id="p2">This is text<em id="em1">in the<strong id="strong1">second</strong>paragraph.</em></p></div>
</body></html>

大家可以试着分析以下每个元素的包含块(会在评论区附上答案)

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

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

相关文章

【架构】GPU架构总结

文章目录 GPU架构GPU渲染内存架构Streaming Multiprocessor(SM)CUDA CoreTensor CoreRT CoreCPU-GPU异构系统GPU资源管理模型 GPU架构演进G80 架构Fermi 架构Maxwell架构Tesla架构Pascal架构Volta 架构Turing架构Ampere 架构Hopper架构 参考文献 GPU架构 主要组成包括&#xf…

报错:org.springframework.jdbc.BadSqlGrammarException:

//报错 2024-02-24 19:44:10.814 ERROR 6184 --- [nio-9090-exec-5] c.e.exception.GlobalExceptionHandler : 异常信息&#xff1a; org.springframework.jdbc.BadSqlGrammarException: GPT&#xff1a; 根据异常信息&#xff0c;这是一个Spring框架抛出的BadSqlGrammar…

MATLAB:数组与矩阵

2.1 数组运算 数组运算时MATLAB计算的基础。由于MATLAB面向对象的特性&#xff0c;这种数值数组称为MATLAN最重要的一种内建数据类型&#xff0c;而数组运算就是定义这种数据结果的方法。 2.1.1 数组的创建和操作 在MATLAB中一般使用方括号“[]”、逗号“,”、空格和分号“;…

openssl3.2 - crypto-mdebug被弃用后, 内存泄漏检查的替代方法

文章目录 openssl3.2 - crypto-mdebug被弃用后, 内存泄漏检查的替代方法概述笔记查看特性列表openssl3.2编译脚本 - 加入enable-crypto-mdebug看看有没有替代内存诊断的方法?main.cppmy_openSSL_lib.hmy_openSSL_lib.c备注备注END openssl3.2 - crypto-mdebug被弃用后, 内存泄…

选座位 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 200分 题解&#xff1a; Java / Python / C 题目描述 疫情期间&#xff0c;需要大家保证一定的社交距离&#xff0c;公司组织开交流会议&#xff0c;座位有一排共N个座位&#xff0c;编号分别为[0…N-1]&#xff0c;要…

onnx 1.16 doc学习笔记一:ONNX概念

onnx作为一个通用格式&#xff0c;很少有中文教程&#xff0c;因此开一篇文章对onnx 1.16文档进行翻译与进一步解释&#xff0c; onnx 1.16官方文档&#xff1a;https://onnx.ai/onnx/intro/index.html](https://onnx.ai/onnx/intro/index.html)&#xff0c; 如果觉得有收获&am…

STL - 图

1、图的基本概念 图是由顶点集合及顶点间的关系组成的一种数据结构&#xff1a;G (V&#xff0c; E)&#xff0c;其中&#xff1a; 顶点集合 V {x|x属于某个数据对象集}是有穷非空集合&#xff1b; 边的集合 E {(x,y)|x,y属于V}或者E {<x&#xff0c;y>|x,y属于V …

牛客周赛 Round 33 解题报告 | 珂学家 | 思维场

前言 整体评价 感觉这场更偏思维&#xff0c;F题毫无思路&#xff0c;但是可以模拟骗点分, E题是dij最短路. A. 小红的单词整理 类型: 签到 w1,w2 input().split() print (w2) print (w1)B. 小红煮汤圆 思路: 模拟 可以从拆包的角度去构建模拟 注意拆一包&#xff0c;可以…

Python爬虫进阶:爬取在线电视剧信息与高级检索

简介&#xff1a; 本文将向你展示如何使用Python创建一个能够爬取在线电视剧信息的爬虫&#xff0c;并介绍如何实现更高级的检索功能。我们将使用requests和BeautifulSoup库来爬取数据&#xff0c;并使用pandas库来处理和存储检索结果。 目录 一、爬取在线电视剧信息 …

数据结构二叉树顺序结构——堆的实现

二叉树顺序结构——堆的实现 结构体的创建以及接口函数结构体的创建堆的初始化交换函数堆的插入向上调整删除向下调整返回堆的个数返回堆顶数据判断堆是否为空 该文章以大堆作为研究对象 结构体的创建以及接口函数 typedef int HPDateType;//定义动态数组的数据类型 typedef s…

020—pandas 根据历史高考分段推断当前位次的分数

前言 每年各省都会公布高考「一分一段」表&#xff0c;它是是以「一分」为单位&#xff0c;统计考得该分数的考生人数和累计人数&#xff0c;每一个分数段上有多少人一目了然。考生通过分数分布表可以查询到相关成绩在全市的排名位次&#xff0c;方便对自己进行定位。本例中&a…

Vue packages version mismatch 报错解决

问题 npm run dev 运行项目的过程中&#xff0c;报错 Vue packages version mismatch 解决方法 根据报错不难看出是 vue 与 vue-template-compiler 版本产生了冲突&#xff0c;vue 与 vue-template-compiler 的版本是需要匹配的。所以解决的办法就是先修改其中一个的版本将 v…

【深度学习笔记】3_14 正向传播、反向传播和计算图

3.14 正向传播、反向传播和计算图 前面几节里我们使用了小批量随机梯度下降的优化算法来训练模型。在实现中&#xff0c;我们只提供了模型的正向传播&#xff08;forward propagation&#xff09;的计算&#xff0c;即对输入计算模型输出&#xff0c;然后通过autograd模块来调…

mysql的日志文件在哪?

阅读本文之前请参阅----MySQL 数据库安装教程详解&#xff08;linux系统和windows系统&#xff09; MySQL的日志文件通常包括错误日志、查询日志、慢查询日志和二进制日志等。这些日志文件的位置取决于MySQL的安装和配置。以下是一些常见的日志文件位置和如何找到它们&#xff…

电子签证小程序系统源码后台功能列表

基于ThinkPhp8.0uniapp 开发的电子签证小程序管理系统。能够真正帮助企业基于微信公众号H5、小程序、wap、pc、APP等&#xff0c;实现会员管理、数据分析,精准营销的电子商务管理系统。可满足企业新零售、批发、分销、预约、O2O、多店等各种业务需求&#xff0c;快速积累客户、…

从专业到大众:Sora如何颠覆传统视频制作模式

随着科技的飞速进步&#xff0c;人工智能(AI)技术正逐渐渗透到我们生活的方方面面。在视频制作领域&#xff0c;OpenAI推出的Sora模型为这一传统行业带来了前所未有的变革。Sora不仅改变了视频制作的技术门槛&#xff0c;更将视频制作从专业人士的手中解放出来&#xff0c;推向…

【线程池项目(三)】线程池CACHED模式的实现

在上一篇【线程池项目&#xff08;二&#xff09;】线程池FIXED模式的实现 中我们了解到到线程池fixed模式的大致实现原理&#xff0c;但对于一个比较完整的项目来说&#xff0c;我们还需要考虑到可能会发生的各种情况&#xff0c;比如用户提交的任务数可能在某一时刻急剧增加&…

贪心算法---前端问题

1、贪心算法—只关注于当前阶段的局部最优解,希望通过一系列的局部最优解来推出全局最优----但是有的时候每个阶段的局部最优之和并不是全局最优 例如假设你需要找给客户 n 元钱的零钱&#xff0c;而你手上只有若干种面额的硬币&#xff0c;如 1 元、5 元、10 元、50 元和 100…

【数据结构】排序(1)

目录 一、概念&#xff1a; 二、直接插入排序&#xff1a; 三、希尔排序&#xff1a; 四、直接选择排序&#xff1a; 五、堆排序&#xff1a; 六、冒泡排序&#xff1a; 一、概念&#xff1a; 排序的概念&#xff1a; 使一串记录&#xff0c;按照其中的某个或某些关键字…

Canvas实现打砖块

一.预览 二.代码 <!DOCTYPE html> <html lang"en"> <head><title>打砖块</title><style>#myCanvas {background: #eee; /* 设置画布的背景颜色为浅灰色 */display: block;margin: 0 auto; /* 使画布在页面中居中显示 */}</s…