Flex适用于一维布局(单行/列对齐、分布、顺序调整),Grid专用于二维网格(行列同时控制);二者分工明确,常嵌套使用——Grid作外层区域划分,Flex处理内部细节对齐。
现代网页开发中,
和
是实际项目里最主流、最被广泛采用的布局方式——不是“之一”,而是事实上的双核心。老式
或
布局已退居补丁位,仅用于兼容或极特殊定位需求。
什么时候该用 Flexbox?
Flexbox 是一维布局,适合处理“一行或一列内元素的对齐、分布、顺序和伸缩”。它不是用来搭整个页面骨架的,而是干局部活的。
导航栏(
)里
标签水平铺开 + 右对齐登录入口
卡片列表需要等高、自动换行、间隙均分(配合
)
表单控件与标签垂直居中对齐(
)
按钮组、工具栏、页脚版权信息居中+右侧链接右对齐(用
)
移动端适配时,把侧边栏从“左列”临时变成“顶部抽屉”,只需改
,不用动 HTML 结构
注意:
容器内子元素默认不换行,要多行必须显式加
;另外,
在 IE10–11 中有兼容性问题,若需支持,得写全
。
Grid 布局适合哪些页面结构?
CSS Grid 是二维系统,真正用来定义“页面级框架”的技术。它管的是“第几行第几列放什么”,而不是“怎么塞进去”。
立即学习
“
前端免费学习笔记(深入)
”;
典型三栏布局:头部、左侧导航、主内容区、右侧边栏、页脚——用
一眼看清结构
仪表盘(Dashboard):多个尺寸不一的卡片按网格区域拼接,支持跨行跨列(
)
响应式断点切换:用
改
,比 Flexbox 的嵌套容器更干净
模态框(Modal)全屏居中:配合
,比
更可靠(不依赖已知宽高)
注意:
在 Safari 16.4+ 才完全支持
,如需子网格能力,目前仍需降级方案;另外,Grid 不适用于需要动态增删项目的列表(比如聊天消息流),它更适合静态结构明确的区域。
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
为什么别再用 float 做整体布局?
的设计本意是图文环绕,不是页面架构。现在还硬套它,等于给项目埋雷。
清除浮动(
或伪元素)是额外心智负担,且容易漏写导致父容器高度塌陷
响应式时,
元素在窄屏下会意外换行、错位,调试成本远高于 Grid/Flex
语义混乱:用
+
,既没表达结构意图,也不利于屏幕阅读器解析
现代构建工具(Vite、Webpack)默认启用 autoprefixer,但
相关 hack 不会被自动补全,兼容性靠人肉维护
唯一合理保留
的场景:新闻正文里图片左/右浮动并文字环绕——这时它还在原始语义范围内。
语义化标签和布局技术怎么配合?
HTML5 的
、
、
、
等语义标签,本身不带样式,也不决定布局方式。它们和 CSS 是解耦的。
你可以用
把
放右边,也可以用
把它压到顶部——语义不变,视觉可变
错误做法:为了“看起来像侧边栏”而滥用
+
,放弃
;这会让 SEO 和无障碍访问直接掉档
推荐组合:
用
划分内容区块,内部卡片用
对齐标题与操作按钮,文本段落保持标准流
真正容易被忽略的点是:Grid/Flex 的强大,反而让人忽略内容流本身的价值。比如一个纯文字文章页,
强行分三栏只会降低可读性——这时候老老实实用标准流 +
+
,才是对用户最诚实的布局。
display: flexdisplay: gridfloatpositionnavaflex-wrap: wrapalign-items: centermargin-left: autoflex-directionflexflex-wrap: wrapflex: 1flex: 1 1 0grid-template-areasgrid-column: 1 / -1@mediagrid-template-columnsplace-items: centertransform: translate(-50%, -50%)gridsubgridfloatclear: bothfloatdiv class="left-sidebar"float: leftfloatfloatheadermainasidefootergridasideflexdivfloatasidemaingridflexdisplay: gridmax-widthline-height