可见格式化模型
外边距折叠
常规块盒子有一种机制叫作 外边距折叠
垂直方向上的两个外边距相遇时,会折叠成一个外边距。折叠后外边距的高度等于两者中较大的那个高度
外边距折叠只发生在文档常规文本流中块级盒子的垂直方向上
包含块
如果元素的定位方式为静态定位(position: static
)或相对定位(position: realtive
),则包含块的边界就计算到一个最近的父元素
该元素的display属性值必须能提供类似块级的上下文,如 block, inline-block, table-cell, list-item 等
默认情况下,width, height, margin 和 padding 的值为百分比时,就以该父元素的尺寸为计算依据。如果当前元素的定位模型改成了 absolute 或 fixed,那么计算依据就会发生变化
相对定位
相对定位的元素仍然会在文档流中占用初始的空间,但可以应用平移属性。
因此,这样平移元素会导致它遮挡其他元素
绝对定位
绝对定位会把元素拿出文档流,即不会再占用原来的空间
绝对定位元素的包含块是距离它最近的定位祖先,即 position 属性设置为 static 以外任意值的祖先元素
绝对定位的盒子脱离了常规文档流,因此很难使用它们创建随视口(viewport)宽度和内容长度变化而变化的自适应或响应式布局
固定布局
固定定位元素的包含块是视口(viewport)
固定定位可用来创建始终停留在窗口相同位置的浮动元素
很多网站都使用这个技术让导航区始终保持可见,有的固定侧栏,有的固定顶栏
浮动
浮动就是为了在网页中实现**文本环绕图片的效果而引入的一种布局模型 **
浮动会导致内容高度缺失,有如下解决方案:
-
利用 clear 样式属性(clearFix)
.clearFix::after { content: ''; display: block; clear: both; } -
利用块级格式化上下文
块级格式化上下文,规定了页面必须自动包含突出的浮动元素,而且所有块级盒子的左边界默认与包含块的左边界对齐。
有如下规则允许元素建立内部的块级格式化上下文:
- display 属性值设置为 inline-block 或 table-cell 之类的元素,可以为内容创建类似块级的上下文;
- float 属性值不是 none 的元素;
- 绝对定位的元素;
- overflow 属性值不是 visible 的元素;
内在大小 与 外在大小
contain-floats
属性,使用这个关键字,可以仅通过以下代码就让元素包含浮动:
.myThing { min-height: contain-floats; }
但是,目前支持这个关键字的浏览器还是较少,小心使用
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何在 .NET 中 使用 ANTLR4
· 后端思维之高并发处理方案
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 想让你多爱自己一些的开源计时器
· Cursor预测程序员行业倒计时:CTO应做好50%裁员计划
· 大模型 Token 究竟是啥:图解大模型Token
· 用99元买的服务器搭一套CI/CD系统
· 如何在 .NET 中 使用 ANTLR4