当前位置: 首页 > news >正文

CSS 包含块

CSS 中的包含块(Containing Block)是一个非常重要的概念,它定义了元素在布局中的参考框架。元素的尺寸、位置和偏移量通常都是基于其包含块来计算的。理解包含块的概念对于掌握 CSS 布局至关重要。

1. 包含块的作用

  • 定位元素:当使用 position: absolute; 或 position: fixed; 时,元素的定位是相对于其包含块进行计算的。
  • 百分比尺寸:如果元素的宽度、高度、外边距等属性使用了百分比值,则这些百分比值也是基于其包含块的尺寸计算的。
  • 其他属性:如 transform 的原点 (transform-origin) 和 clip-path 等也可能依赖于包含块。

2. 包含块的确定规则(重要)

一个元素的包含块是如何确定的,取决于该元素的 position 属性以及其祖先元素的特性。

(1) position: static 或 position: relative

  • 元素的包含块是其最近的块级祖先元素的内容区域(content box)。
  • 如果没有块级祖先,则默认为初始包含块。
<div class="container"><div class="child"></div>
</div>
.container {width: 300px;height: 200px;
}.child {position: relative;width: 50%; /* 相对于 .container 的内容区域 */
}

.child 的宽高是基于 .container 的内容区域计算的,因此 .container 是 .child 的包含块

(2) position: absolute

  • 元素的包含块是其最近的已定位祖先元素(即 position 值为 relativeabsolute 或 fixed 的祖先元素)的内边距边界(padding box)。
  • 如果没有已定位的祖先元素,则包含块是初始包含块(通常是 <html> 元素的视口)。
<div class="container"><div class="child"></div>
</div>
.container {position: relative;width: 300px;height: 200px;
}.child {position: absolute;top: 50px;left: 50px;width: 50%; /* 相对于 .container 的内边距边界 */
}

.child 的 position: absolute; 导致它相对于 .container 定位,因为 .container 是它的最近的已定位祖先元素。因此,.container 是 .child 的包含块

(3) position: fixed

  • 元素的包含块始终是初始包含块,即浏览器窗口的视口。
<div class="fixed-box"></div>
.fixed-box {position: fixed;top: 20px;left: 20px;width: 50%; /* 相对于视口的宽度 */
}

.fixed-box 的 position: fixed; 导致它相对于浏览器窗口(视口)定位,因此它的包含块是初始包含块。

(4) position: sticky

  • 元素的包含块是其最近的滚动容器(scroll container),如果没有滚动容器,则是初始包含块。
<div class="scroll-container"><div class="sticky-box"></div>
</div>
.scroll-container {overflow: auto;height: 200px;
}.sticky-box {position: sticky;top: 20px;
}

.sticky-box 的 position: sticky; 导致它相对于 .scroll-container 定位,因此 .scroll-container 是它的包含块

(5) 初始包含块(Initial Containing Block)

  • 初始包含块是整个文档的根元素(通常是 <html> 元素)的包含块。
  • 它的尺寸通常等于浏览器窗口的视口大小。
  • 对于 position: fixed; 和没有已定位祖先的 position: absolute; 元素,它们的包含块就是初始包含块。

3. 影响包含块的特殊情况

(1) transform 属性

如果某个祖先元素设置了 transform 属性(且值不是 none),那么该祖先元素会创建一个新的局部包含块,成为后代元素的包含块

<div class="container"><div class="child"></div>
</div>
.container {transform: scale(1); /* 创建新的局部包含块 */
}.child {position: absolute;top: 50px;left: 50px;
}

.container 的 transform 属性导致 .child 的包含块变为 .container,而不是更远的祖先元素。

(2) will-change 属性

类似于 transform,如果某个祖先元素设置了 will-change: transform;,也会创建一个新的局部包含块。

(3) filter 和 perspective 属性

类似的,filterperspective 属性也会导致祖先元素成为后代元素的局部包含块

4. 包含块的关键点总结

  1. 包含块决定了元素的定位和尺寸计算
  2. 包含块可以是:
    • 祖先元素的内容区域(content box)。
    • 祖先元素的内边距区域(padding box)。
    • 初始包含块(视口)。
  3. 特殊情况下
    • transformfilterperspective 等属性会创建新的局部包含块。
  4. 理解包含块的概念对于正确使用 position 和百分比布局至关重要。

相关文章:

CSS 包含块

CSS 中的包含块&#xff08;Containing Block&#xff09;是一个非常重要的概念&#xff0c;它定义了元素在布局中的参考框架。元素的尺寸、位置和偏移量通常都是基于其包含块来计算的。理解包含块的概念对于掌握 CSS 布局至关重要。 1. 包含块的作用 定位元素&#xff1a;当…...

嵌入式设备网络的动态ID分配机制实现

文章目录 前言一、系统设计要点二、核心数据结构2.1 设备唯一标识(DeviceUID)2.2 节点信息(Node)2.3 节点管理器(NodeManager) 三、核心算法实现3.1 初始化与清理3.1.1 初始化节点管理器3.1.2 清理节点管理器 3.2 动态ID分配策略3.2.1 查找最小可用ID3.2.2 ID使用检查 3.3 心跳…...

(论文阅读)RNNoise 基于递归神经网络的噪声抑制库

RNNoise 是一个基于递归神经网络的噪声抑制库。 有关该算法的描述见以下论文&#xff1a; J.-M. Valin, A Hybrid DSP/Deep Learning Approach to Real-Time Full-Band Speech Enhancement, Proceedings of IEEE Multimedia Signal Processing (MMSP) Workshop, arXiv:1709.08…...

Linux:线程概念与控制

✨✨所属专栏&#xff1a;Linux✨✨ ✨✨作者主页&#xff1a;嶔某✨✨ Linux&#xff1a;线程概念于控制 var code “d7e241ae-ed4d-475f-aa3d-8d78f873fdca” 概念 在一个程序里的一个执行路线就叫做线程thread。更准确一点&#xff1a;线程是“一个进程内部的控制序列” …...

双轮驱动能源革命:能源互联网与分布式能源赋能工厂能效跃迁

在全球能源结构深度转型与“双碳”目标的双重驱动下&#xff0c;工厂作为能源消耗的主力军&#xff0c;正站在节能变革的关键节点。能源互联网与分布式能源技术的融合发展&#xff0c;为工厂节能开辟了全新路径。塔能科技凭借前沿技术与创新实践&#xff0c;深度探索能源协同优…...

网络安全-Burp Suite基础篇

声明 本文主要用做技术分享&#xff0c;所有内容仅供参考。任何使用或者依赖于本文信息所造成的法律后果均与本人无关。请读者自行判断风险&#xff0c;并遵循相关法律法规。 1 Burp Suite功能介绍 1.1 Burp Suite 简介 Burp Suite 是一款极为强大且广受欢迎的集成化 …...

从人工到智能:外呼系统如何重构企业效率新生态

在数字化转型的浪潮中&#xff0c;智能外呼系统正从边缘辅助工具演变为企业效率革命的核心引擎。根据Gartner最新调研数据&#xff0c;部署AI外呼系统的企业客服效率平均提升68%&#xff0c;销售线索转化率增长42%。但在这场技术驱动的变革中&#xff0c;真正决定成败的往往不是…...

折扣电影票api对接详细指南,如何对接?

以下是折扣电影票 API 对接的一般指南&#xff1a; 对接前准备 明确需求&#xff1a;确定对接的目的和所需功能&#xff0c;如电影信息查询、场次查询、座位预订、支付等。明确支持的数据字段和业务流程。选择 API 服务提供商&#xff1a;选择技术成熟、服务稳定、覆盖范围广的…...

初识Redis · 客户端“Hello world“

目录 前言&#xff1a; 环境配置 Hello world 前言&#xff1a; 前文我们已经介绍了Redis的不常见的五种数据类型&#xff0c;并且补充了几个渐进式命令和数据库管理命令等&#xff0c;最后简单认识了一下RESP协议&#xff0c;但是老实说&#xff0c;我们只能算是知道了这个…...

51单片机实验一:点亮led灯

目录 一、实验环境与实验器材 二、实验内容及实验步骤 1.用keil 软件创建工程&#xff0c;C文件编写程序&#xff0c;编译生成hex文件​编辑 2.用STC烧写hex文件&#xff0c;点亮第一个LED灯 3.使用法2&#xff0c;点除第一个以外的LED灯 一、实验环境与实验器材 环境&am…...

基于WOA鲸鱼优化的NARMAX模型参数辨识算法MATLAB仿真,对比PSO优化算法

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 NARMAX模型定义 4.2 鲸鱼优化算法WOA原理 4.3 粒子群优化算法PSO原理 5.完整程序 1.程序功能描述 基于WOA鲸鱼优化的NARMAX模型参数辨识算法MATLAB仿真,对比PSO优化算法。分别通过WOA…...

AWS上构建基于自然语言的数值和符号计算系统

我想要实现一个通过使用C#、Semantic Kernel库、OpenAI GPT 4的API和以下使用C#开源库MathNet实现通过中文自然语言提示词中包含LATEX代码输入到系统,通过以下符号和数值计算和其它符号和数值计算程序输出计算结果和必要步骤的应用,这样的数学计算使用程序直接产生结果,可以…...

2025年03月中国电子学会青少年软件编程(Python)等级考试试卷(三级)真题

青少年软件编程&#xff08;Python&#xff09;等级考试试卷&#xff08;三级&#xff09; 分数&#xff1a;100 题数&#xff1a;38 答案解析&#xff1a;https://blog.csdn.net/qq_33897084/article/details/147341388 一、单选题(共25题&#xff0c;共50分) 1. 学校进行体…...

校平机:精密制造的“材料雕刻家“

在液晶面板生产线的无尘车间里&#xff0c;一片薄如蝉翼的玻璃基板正经历纳米级的形态修正&#xff1b;在新能源电池极片生产线上&#xff0c;铜箔以每秒5米的速度穿越精密辊系&#xff0c;完成微米级的平整蜕变。这些现代工业的"毫米级魔术"&#xff0c;都离不开一台…...

FPGA HR Bank如何支持ODELAY问题分析

目录 1.ODELAY简单介绍 2.IODELAY 的特性 3.IODELAY 的 资源支持的管脚 4.HR bank如何支持ODELAY固定延迟 1.ODELAY简单介绍 FPGA 中的 IODELAY(Input/Output Delay),这是 Xilinx(现 AMD)FPGA 中一种用于精确控制输入/输出信号时序延迟的硬件资源。以下是关于 IODELAY…...

深入解析C++驱动开发实战:优化高效稳定的驱动应用

深入解析C驱动开发实战&#xff1a;优化高效稳定的驱动应用 在现代计算机系统中&#xff0c;驱动程序&#xff08;Driver&#xff09;扮演着至关重要的角色&#xff0c;作为操作系统与硬件设备之间的桥梁&#xff0c;驱动程序负责管理和控制硬件资源&#xff0c;确保系统的稳定…...

高级java每日一道面试题-2025年4月13日-微服务篇[Nacos篇]-Nacos如何处理网络分区情况下的服务可用性问题?

如果有遗漏,评论区告诉我进行补充 面试官: Nacos如何处理网络分区情况下的服务可用性问题&#xff1f; 我回答: 在讨论 Nacos 如何处理网络分区情况下的服务可用性问题时&#xff0c;我们需要深入理解 CAP 理论以及 Nacos 在这方面的设计选择。Nacos 允许用户根据具体的应用…...

07_Docker 资源限制

Docker 容器做资源限制&#xff0c;是为了不让某个容器抢光 CPU、内存等主机资源&#xff0c;保证所有容器都能稳定运行&#xff0c;还能避免宿主机资源被耗尽&#xff0c;让资源利用更高效&#xff0c;也方便管理和满足服务的性能要求。 监控容器资源使用情况 docker stats …...

Flutter Notes | 我用到的一些插件整理

Flutter开发必备插件推荐与iOS上架工具分享 前言 一个项目的开始和结束&#xff0c;总会遇到很多意料之外的东西。大神和菜鸟的区别&#xff0c;个人感觉更多的是大神花费了很多私下时间去了解每个问题的根本是什么&#xff0c;而我这小菜鸟&#xff0c;仅仅网上浪一圈&#…...

WordPress自定义页面与文章:打造独特网站风格的进阶指南

文章目录 引言一、理解WordPress页面与文章的区别二、主题与模板层级&#xff1a;自定义的基础三、自定义页面模板&#xff1a;打造专属页面风格四、自定义文章模板&#xff1a;打造个性化文章呈现五、使用自定义字段和元数据&#xff1a;增强内容灵活性六、利用WordPress钩子&…...

golang channel源码

解析 数据结构 hchan&#xff1a;channel 数据结构 qcount&#xff1a;当前 channel 中存在多少个元素&#xff1b; dataqsize: 当前 channel 能存放的元素容量&#xff1b; buf&#xff1a;channel 中用于存放元素的环形缓冲区&#xff1b; elemsize&#xff1a;channel 元素…...

麒麟操作系统漏洞修复保姆级教程弱(一)算法漏洞修复

如果你想拥有你从未拥有过的东西&#xff0c;那么你必须去做你从未做过的事情 目录 一、相关问题 二、建议修复方法 修复方案&#xff08;方案一和方案二是错误示范&#xff0c;干货在方案三&#xff09; 方案一、首先我想按照第一步&#xff0c;将OpenSSH升级解决这一漏洞…...

汉诺塔专题:P1760 通天之汉诺塔 题解 + Problem D: 汉诺塔 题解

1. P1760 通天之汉诺塔 题解 题目背景 直达通天路小A历险记第四篇 题目描述 在你的帮助下&#xff0c;小 A 成功收集到了宝贵的数据&#xff0c;他终于来到了传说中连接通天路的通天山。但是这距离通天路仍然有一段距离&#xff0c;但是小 A 突然发现他没有地图&#xff0…...

vscode中markdown一些插件用不了解决方式

我发现我安装了vscode的一些插件&#xff0c;但是没起效果&#xff08;就是该插件暗淡了&#xff09;&#xff0c;后面得知&#xff0c;是因为没有信任工作空间。 This extension has been disabled because the current workspace is not trusted 这个提示信息表明&#xff0c…...

Python爬虫第16节-动态渲染页面抓取之Selenium使用上篇

目录 前言 一、Selenium的简介和学习准备 二、Selenium基本使用 三、声明浏览器对象 四、访问页面 五、查找节点 5.1 单个节点 5.2 多个节点 六、节点交互 七、动作链 八、执行JavaScript 前言 本专栏之前的内容&#xff0c;我们讲了怎么分析和抓取Ajax&#xff0c;…...

KMP算法动态演示

KMP算法 1.动态演示 https://tsccg-oss.oss-cn-guangzhou.aliyuncs.com/image/KMP%E7%AE%97%E6%B3%95%E5%8A%A8%E6%80%81%E6%BC%94%E7%A4%BA.gif 2.代码实现 Testpublic void test5(){String parent "ABC ABCDAB ABCDABCDABDE";String child "ABCDABD&quo…...

linux获取cpu使用率(sy%+us%)

float getCpuUsage() { // C11兼容的元组解包 typedef std::tuple<unsigned long long, unsigned long long, unsigned long long> CpuTuple; auto parseCpuLine [](const std::string& line) -> CpuTuple { std::istringstream iss(line); …...

ESP-IDF教程2 GPIO - 输入、输出和中断

文章目录 1、前提1.1、基础知识1.1.1、GPIO 分类1.1.2、FALSH SPI 模式1.1.3、过滤器1.1.4、外部中断 1.2、数据结构1.2.1、GPIO1.2.2、毛刺过滤器 1.3、硬件原理图 2、示例程序2.1、GPIO 输出 - 点亮 LED 灯2.2、GPIO 输入 - 按键响应2.3、GPIO 外部中断 - 按键响应 3、常用函…...

Ubuntu安装MySQL步骤及注意事项

一、安装前准备 1. 系统更新&#xff1a;在安装 MySQL 之前&#xff0c;确保你的 Ubuntu 系统软件包是最新的&#xff0c;这能避免因软件包版本问题导致的安装错误&#xff0c;并获取最新的安全补丁。打开终端&#xff0c;执行以下两条命令&#xff1a; sudo apt update sudo …...

支持mingw g++14.2 的c++23 功能print的vscode tasks.json生成调试

在mingw14.2版本中, print库的功能默认没有开启, 生成可执行文件的tasks.json里要显式加-lstdcexp, 注意放置顺序. tasks.json (支持mingw g14.2 c23的print ) {"version": "2.0.0","tasks": [{"type": "cppbuild","…...

WPF常用技巧汇总

主要用于记录工作中发现的一些问题和常见的解决方法。 此文会持续更新。 >abp new Evan.MyWpfApp -t wpf --old --framework .net8 1. 解决不同屏幕分辨率下的锯齿问题 UseLayoutRounding"True" <Grid UseLayoutRounding"True"><Border Mar…...

【文件操作与IO】详细解析文件操作与IO (一)

本篇博客给大家带来的是文件操作的知识点. &#x1f40e;文章专栏: JavaEE初阶 &#x1f680;若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅&#x1f680; 要开心要快乐顺便进步 一. …...

yaffs_write_new_chunk()函数解析

yaffs_write_new_chunk() 是 YAFFS&#xff08;Yet Another Flash File System&#xff09;文件系统中用于将数据写入新物理块&#xff08;chunk&#xff09;的关键函数。以下是其详细解析&#xff1a; 函数原型 int yaffs_write_new_chunk(struct yaffs_dev *dev, const u8 *…...

「数据可视化 D3系列」入门第九章:交互式操作详解

交互式操作详解 一、交互式操作的核心概念二、当前柱状图的交互实现三、交互效果的增强建议四、为饼图做准备五、交互式柱状图代码示例小结核心要点 下章预告&#xff1a;将这些交互技术应用于饼图实现 在上一章的柱状图基础上&#xff0c;我们增加了交互功能&#xff0c;让图表…...

吃透LangChain(五):多模态输入与自定义输出

多模态数据输入 这里我们演示如何将多模态输入直接传递给模型。我们目前期望所有输入都以与OpenAl 期望的格式相同的格式传递。对于支持多模态输入的其他模型提供者&#xff0c;我们在类中添加了逻辑以转换为预期格式。 在这个例子中&#xff0c;我们将要求模型描述一幅图像。 …...

数据结构基本概念

1 数据结构概述 数据结构是计算机组织&#xff08;逻辑结构&#xff09;、存储&#xff08;物理结构&#xff09;数据的方式。和具体的计算机编程语言无关&#xff0c;可以使用任何编程语言来实现数据结构 1.1 数据逻辑结构 反映数据元素之间的逻辑关系&#xff0c;逻辑关系…...

flutter app实现分辨率自适应的图片资源加载

在 Flutter 中&#xff0c;为了实现分辨率自适应的图片资源加载&#xff0c;确实需要遵循特定的目录结构和命名规则。这种机制允许 AssetImage 根据设备的 设备像素比&#xff08;Device Pixel Ratio, DPR&#xff09; 自动选择最合适的图片资源。以下是详细的说明和实现步骤&a…...

Webpack基础

目录 一、Webpack概念 二、Webpack使用步骤 三、Webpack.config.js配置文件 四、entry 和 output 1. entry 2. output 五、module 1. CSS 2. 图片 3. babel 4. 总结 六、plugins 1.自动生成 html 文件 七、其它 1.webpack-dev-server 开发服务器 2. mode 打包模…...

极狐GitLab 用户 API 速率限制如何设置?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 用户 API 速率限制 (BASIC SELF) 您可以为对 Users API 的请求配置每个用户的速率限制。 要更改速率限制&#xff1a; 1.在…...

用 Go 实现一个轻量级并发任务调度器(支持限速)

前言 在日常开发中&#xff0c;我们经常会遇到这样的场景&#xff1a; • 有一堆任务要跑&#xff08;比如&#xff1a;发请求、处理数据、爬虫等&#xff09;• 不希望一次性全部跑完&#xff0c;担心打爆服务端或者被封• 想要设置并发数、限速&#xff0c;还能控制任务重试…...

华为OD机试真题——最长的顺子(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现

2025 A卷 100分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析&#xff1b; 并提供Java、python、JavaScript、C、C语言、GO六种语言的最佳实现方式&#xff01; 本文收录于专栏&#xff1a;《2025华为OD真题目录全流程解析/备考攻略/经验…...

3.8/Q1,GBD数据库最新文章解读

文章题目&#xff1a;Regional and National Burden of Traumatic Brain Injury and Spinal Cord Injury in North Africa and Middle East Regions, 1990-2021: A Systematic Analysis for The Global Burden of Disease Study 2021 DOI&#xff1a;10.1007/s44197-025-00372-…...

Java面试中问单例模式如何回答

1. 什么是单例模式&#xff1f; 单例模式&#xff08;Singleton Pattern&#xff09;是一种设计模式&#xff0c;确保某个类在整个应用中只有一个实例&#xff0c;并且提供全局访问点。它有以下特点&#xff1a; 确保只有一个实例。提供全局访问点。防止多次实例化&#xff0…...

再看开源多模态RAG的视觉文档(OCR-Free)检索增强生成方案-VDocRAG

前期几个工作提到&#xff0c;基于OCR的文档解析RAG的方式进行知识库问答&#xff0c;受限文档结构复杂多样&#xff0c;各个环节的解析泛化能力较差&#xff0c;无法完美的对文档进行解析。因此出现了一些基于多模态大模型的RAG方案。如下&#xff1a; 【RAG&多模态】多模…...

【go】什么是Go语言中的GC,作用是什么?调优,sync.Pool优化,逃逸分析演示

Go 语言中的 GC 简介与调优建议 一、GC 简介 Go 的 GC&#xff08;Garbage Collection&#xff09;用于自动管理内存&#xff0c;开发者无需手动释放内存&#xff0c;可以专注于业务逻辑&#xff0c;降低出错概率&#xff0c;提升开发效率。 GC 能够自动发现和回收不再使用的…...

ctfshow-大赛原题-web702

因为该题没有理解到位&#xff0c;导致看wp也一直出错&#xff0c;特此反思一下。 参考yu22x师傅的文章 &#xff1a;CTFSHOW大赛原题篇(web696-web710)_ctfshow 大赛原题-CSDN博客 首先拿到题目&#xff1a; // www.zip 下载源码 我们的思路就是包含一个css文件&#xff0c;…...

基于Redis的4种延时队列实现方式

延时队列是一种特殊的消息队列&#xff0c;它允许消息在指定的时间后被消费。在微服务架构、电商系统和任务调度场景中&#xff0c;延时队列扮演着关键角色。例如&#xff0c;订单超时自动取消、定时提醒、延时支付等都依赖延时队列实现。 Redis作为高性能的内存数据库&#x…...

基于Django实现农业生产可视化系统

基于Django实现农业生产可视化系统 项目截图 登录 注册 首页 农业数据-某一指标表格展示 农业数据-某一指标柱状图展示 农业数据-某一指标饼状图展示 气候数据-平均气温地图展示 气候数据-降水量合并图展示 后台管理 一、系统简介 农业生产可视化系统是一款基于DjangoMVTMyS…...

yocto编译使用共享缓存

注意 服务器端与客户端系统的版本号需为Ubuntu20.04执行用户需要为sudo权限服务器端nfs目录权限必须为nobody:nogroup 服务端配置&#xff1a; 在服务器192.168.60.142上配置 NFS 共享&#xff1a; 1.安装 NFS 服务器&#xff1a; 1 sudo apt-get install nfs-kernel-serve…...

uCOS3实时操作系统(系统架构和中断管理)

文章目录 系统架构中断管理ARM中断寄存器相关知识ucos中断机制 系统架构 ucos主要包含三个部分的源码&#xff1a; 1、OS核心源码及其配置文件&#xff08;ucos源码&#xff09; 2、LIB库文件源码及其配置文件&#xff08;库文件&#xff0c;比如字符处理、内存管理&#xff0…...