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

【CSS】包含块

CSS规范中的包含块

包含块的内容:

元素的尺寸和位置,会受它的包含块所影响。

对于一些属性,例如 width, height, padding, margin,绝对定位元素的偏移值(比如 position 被设置为 absolute 或 fixed),当我们对其赋予百分比值时,这些值的计算值,就是通过元素的包含块计算得来。

包含块分为两种:

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

另外一种是对于非根元素,对于非根元素的包含块判定就有几种不同的情况了。大致可以分为如下几种:

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

第三条举个例子:

<body>
    <div class="container">
      <div class="item">
        <div class="item2"></div>
      </div>
    </div>
  </body>
.container {
  width: 500px;
  height: 300px;
  background-color: skyblue;
  position: relative;
}
.item {
  width: 300px;
  height: 150px;
  border: 5px solid;
  margin-left: 100px;
}
.item2 {
  width: 100px;
  height: 100px;
  background-color: red;
  position: absolute;
  left: 10px;
  top: 10px;
}
image-20220814233548188

对于 div.item2 来讲,它的包含块应该是 div.container,而非 div.item。

对于非根元素来讲,包含块还有一种可能,那就是如果 position 属性是 absolute 或 fixed,包含块也可能是由满足以下条件之一(或多)的最近父级元素的内边距区的边缘组成的:

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

其他包含块的知识见MDN:MDN包含块。


http://www.kler.cn/news/107377.html

相关文章:

  • 【2024秋招】2023-9-16 贝壳后端开发一面
  • 【Java网络原理】 五
  • canvas基础3 -- 交互
  • 【网络安全 --- 任意文件下载漏洞(1)】任意文件下载漏洞
  • [SQL开发笔记]DELETE 语句:删除表中的行
  • C++ 构造函数
  • 记:2023羊城杯-Ez加密器-题目复现和学习记录““
  • Unity C#中LuaTable、LuaArrayTable、LuaDictTable中数据的增删改查
  • 使用Jetpack Compose构建Flappy Musketeer街机游戏
  • C语言每日一题(20)最大公因数等于 K 的子数组数目
  • 《C和指针》笔记35:结构体
  • HackTheBox-Starting Point--Tier 0---Preignition
  • CAD2024最新中文版安装教程分享
  • 关于维度上的注意事项
  • LeetCode217——存在重复元素
  • 【PG】PostgreSQL字符集
  • 1-径向基(RBF)神经网络PID控制器仿真
  • 如何使用python快速修改Excel表单中的大量数据
  • python常用操作汇总
  • 华为NAT配置实例(含dhcp、ospf配置)
  • Java项目中将MySQL改为8.0以上
  • RabbitMQ-死信交换机和死信队列
  • Vue2 跨域问题报错AxiosError net::ERR_FAILED、 Network Error、ERR_NETWORK
  • 基于单片机的智能清洁小车设计—控制系统设计
  • GienTech动态|入选软件和信息技术服务名牌企业;荣获城市数字化转型优秀案例;参加第四届深圳国际人工智能展
  • 基于 ARM+FPGA+AD平台的多类型同步信号采集仪开发及试验验证(一)上位机设计
  • Java流(Stream)详解
  • tomcat必要的配置
  • Centos使用tomcat部署jenkins
  • cola架构:有限状态机(FSM)源码分析