30 seconds of code:用 CSS Grid 实现响应式图片马赛克布局
教程文档【免费下载链接】30-seconds-of-codeCoding articles to level up your development skills项目地址https://gitcode.com/gh_mirrors/30/30-seconds-of-code点击查看免费下载导读图片马赛克image mosaic是一种常见于相册页、作品集与商品展示场景的网格布局多张图片以整齐的方格排列其中部分图片跨两行或两列形成错落感。本文基于 30 seconds of code 仓库中的 image-mosaic.md 片段完整拆解如何仅用display: grid、grid-row/column: span 2 / auto与媒体查询三类现代 CSS 特性在不依赖任何 JavaScript 的情况下构建一套自动适配屏幕宽度的响应式图片马赛克。读完本文你将掌握该片段的每一行代码的含义、如何为网格中的特定卡片赋予跨行/跨列能力以及如何搭配object-fit让图片在不同尺寸的格子中依然完美呈现。为什么选择 CSS Grid 构建图片马赛克CSS Grid 是当前构建复杂二维布局最强大的工具。相比浮动float布局需要借助 clearfix 清理副作用相比 flexbox 擅长一维排列Grid 可以同时控制行与列两个方向天然适合方阵 局部跨行跨列的马赛克结构。这一点在 30 seconds of code 的 CSS 布局集合中也有印证集合说明文件 layout.yaml 将该片段归类到layout标签下并明确描述集合覆盖了使用 flexbox 和 grid 等现代技术创建常见布局的方法。与仓库中基于滚动实现画廊的 horizontal-vertical-gallery.md 不同马赛克片段追求的是一张屏内铺满、随视口自适应的静态网格实现成本极低是页面内相册最省事的选择。核心布局代码逐行拆解片段给出的样式只有短短 9 行却同时解决了自动列数自动行高卡片跨格三个问题。逐行来看.image-mosaic { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); grid-auto-rows: 240px; }display: grid将容器切换为网格布局其直接子元素自动成为网格项grid item这是整个方案的地基。gap: 1rem设置行与列之间的间距。1rem等于根元素字号随用户浏览器默认字号缩放保证不同设备上的视觉比例一致。若需要更紧凑或更宽松的间距可替换为0.5rem、2rem或像素值。grid-template-columns: repeat(auto-fit, minmax(240px, 1fr))这是整段代码的自适应核心可拆为两层理解minmax(240px, 1fr)定义每条列的宽度在240px到1fr剩余空间的 1 份之间取值repeat(auto-fit, ...)让浏览器根据容器宽度自动计算能放下多少条这样的列。列越多、每条列均分剩余空间并尽量拉宽直到无法再容纳一个240px的最小宽度为止。两者的组合结果就是无论视口多宽网格总会生成尽可能多且尽可能宽的列从而真正实现响应式无需为每个断点单独编写列数规则。grid-auto-rows: 240px当没有显式声明行模板时Grid 会自动创建隐式行grid-auto-rows就用来指定这些自动生成的行的高度。这里统一为240px与列的最小宽度一致使每个格子接近正方形马赛克观感更整齐。需要说明的是repeat(auto-fit, ...)是相对较新的 CSS 特性使用前建议确认目标浏览器支持情况若需兼容旧浏览器可在前面追加一条使用固定列数的回退规则。让特定图片跨越两行或两列span 2 / auto马赛克与普通网格相册的关键区别在于部分卡片占据 2×2 甚至更大的面积形成视觉焦点。片段借助网格项上的两个属性实现.card-tall { grid-row: span 2 / auto; } .card-wide { grid-column: span 2 / auto; }grid-row: span 2 / auto与grid-column: span 2 / auto采用起始线 / 结束线的完整语法span 2表示该网格项横跨 2 条轨道即占两行或两列auto作为另一端的结束线交由浏览器自动推算——即从当前自动放置auto-placement的位置起向后延伸两个单位。相比简写grid-row: span 2span 2 / auto显式声明了结束端行为更明确稳定。在实际页面中只需给对应的图片卡片加上card-tall或card-wide类即可。横向卡片card-wide占用 2 列宽度适合横幅图片纵向卡片card-tall占用 2 行高度适合竖幅图片。若需要 2×2 的大图块可同时使用两个类或直接添加grid-area: span 2 / span 2。用媒体查询保护小屏体验跨行跨列的效果在宽屏上赏心悦目但在手机等窄屏上列宽被压缩后的大卡片反而会挤压其他内容。因此片段特意将跨格样式包进媒体查询media screen and (min-width: 600px) { .card-tall { grid-row: span 2 / auto; } .card-wide { grid-column: span 2 / auto; } }media screen and (min-width: 600px)表示仅当视口宽度 ≥ 600px通常对应横屏手机以上的设备时card-tall与card-wide才生效。在小于 600px 的屏幕上所有卡片退化为统一的单格尺寸配合auto-fit自动列数布局依然整齐、可读。这是一种值得复用的移动优先策略默认保持简单只在空间充足时叠加视觉效果。你可以按需调整断点值例如改为min-width: 768px以匹配平板阈值。完整可运行示例将片段与一段简单的 HTML 组合即可得到一个可实际运行的马赛克相册。假设容器内每个子元素都包含一张图片div classimage-mosaic div classcard-tallimg srcportrait.jpg altPortrait photo/div divimg srcsquare-1.jpg altSquare photo 1/div div classcard-wideimg srclandscape.jpg altLandscape photo/div divimg srcsquare-2.jpg altSquare photo 2/div divimg srcsquare-3.jpg altSquare photo 3/div /div.image-mosaic { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); grid-auto-rows: 240px; } media screen and (min-width: 600px) { .card-tall { grid-row: span 2 / auto; } .card-wide { grid-column: span 2 / auto; } }在桌面端网格会根据容器宽度生成多列card-tall与card-wide卡片分别纵向、横向展开在手机端所有卡片自动变为单格布局。原始片段中还提供了可交互的在线演示入口详见 image-mosaic.md 原文。让图片真正填满格子搭配object-fit马赛克的格子是固定的240px行高而原始图片的长宽比各不相同。若直接设置width: 100%; height: 100%图片会被拉伸变形若只设置宽度行高固定又会导致溢出。这正是仓库中另一片段 fit-image-in-container.md 解决的问题使用object-fit属性。将示例中的img补充如下样式即可让图片在不破坏自身比例的前提下铺满任意格子.image-mosaic img { width: 100%; height: 100%; object-fit: cover; object-position: center; display: block; }object-fit: cover图片等比缩放直至完全覆盖容器超出部分被裁切格内永远不留空白object-position: center裁切时始终保留图片中央区域避免焦点偏移display: block消除图片底部的内联元素空隙防止格子下方出现细微偏差。若更希望整图可见、允许留白可改用object-fit: contain。这套组合同样是 30 seconds of code CSS 片段库中处理图片容器的标准做法。进阶延伸阅读与替代方案马赛克网格本身已相当完善但结合仓库内其他片段可以进一步扩展需要滚动查看而非一屏铺满时参考 horizontal-vertical-gallery.md它展示了基于 flex scroll-snap-type的横向/纵向滚动画廊以及用少量 JavaScript 实现缩略图导航的完整方案需要处理容器内图片的精确位置与比例时参考 fit-image-in-container.md 中对object-fit/object-position的讲解若整个页面采用 Grid 布局可参考 footer-at-the-bottom.md 中grid-template-rows: 1fr auto的用法理解fr单位如何分配剩余空间该片段所属的 CSS 布局集合完整清单见 layout.yaml其中还收录了居中、清除浮动等常见布局技巧。小结通过 image-mosaic.md 这一个片段你可以在十行以内完成一个生产可用的响应式图片马赛克display: grid开启网格布局gap控制间距repeat(auto-fit, minmax(240px, 1fr))让列数随容器宽度自动伸缩grid-auto-rows: 240px统一隐式行高grid-row/column: span 2 / auto让指定卡片跨两行或两列media (min-width: 600px)保证小屏上跨格样式不生效搭配object-fit: cover让任意比例的图片完美填满格子。整套方案无需 JavaScript、无外部依赖代码量极小且易于嵌入任何现有样式表是快速实现自适应相册与作品集的可靠选择。赞分享教程文档【免费下载链接】30-seconds-of-codeCoding articles to level up your development skills项目地址https://gitcode.com/gh_mirrors/30/30-seconds-of-code点击查看免费下载相关推荐Obsidian安全防护终极指南如何配置DoS攻击缓解模块保护你的GraphQL APIObsidian安全防护终极指南如何配置DoS攻击缓解模块保护你的GraphQL API 在当今数字化时代GraphQL API已成为现代Web应用的核心组Tachometer 多浏览器测试Chrome、Firefox、Safari 和 Edge 的完整支持指南Tachometer 多浏览器测试Chrome、Firefox、Safari 和 Edge 的完整支持指南 想要确保你的Web应用在所有主流浏览器上都能提供最30-seconds-of-css CSS Grid布局构建复杂网格系统的代码片段30 seconds of css CSS Grid布局构建复杂网格系统的代码片段 你是否还在为构建响应式网格布局而烦恼是否觉得Flexbox在处理复杂二维前端上一篇探索create-mf-app的多种模板选择最适合你的前端框架下一篇Redux Thunk组件懒加载React.lazy与Suspense创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

AI Agents 路线图中的 Temperature 调参指南:从随机性原理到可靠 Agent 行为

AI Agents 路线图中的 Temperature 调参指南:从随机性原理到可靠 Agent 行为

文档教程知识库 【免费下载链接】developer-roadmap Interactive roadmaps, guides and other educational content to help developers grow in their careers. 项目地址: https://gitcode.com/GitHub_Trending/de/developer-roadmap 点击查看 免费下载 Temperatu…

2026/9/30 1:52:25 阅读更多 →
wiliwili:完整支持手柄操控的第三方B站客户端,让游戏主机也能追番看直播

wiliwili:完整支持手柄操控的第三方B站客户端,让游戏主机也能追番看直播

wiliwili:完整支持手柄操控的第三方B站客户端,让游戏主机也能追番看直播 【免费下载链接】wiliwili 第三方B站客户端,目前可以运行在PC全平台、PSVita、PS4 、Xbox 和 Nintendo Switch上 项目地址: https://gitcode.com/GitHub_Trending/wi…

2026/9/30 1:52:25 阅读更多 →
Symfony debug:container 服务定义 Markdown 描述格式解析:从 definition_arguments_3 固件看内联工厂与 Definition 元数据

Symfony debug:container 服务定义 Markdown 描述格式解析:从 definition_arguments_3 固件看内联工厂与 Definition 元数据

后端Web框架 【免费下载链接】symfony The Symfony PHP framework 项目地址: https://gitcode.com/GitHub_Trending/sy/symfony 点击查看 免费下载 导读 本文以 Symfony FrameworkBundle 测试固件 definition_arguments_3.md 为切入点,系统解读 Symfon…

2026/9/30 1:52:25 阅读更多 →

最新新闻

GLM-5.3-Flash 本地部署与推理参数完全指南:320B-A18B 原生多模态架构解析与实战配置

GLM-5.3-Flash 本地部署与推理参数完全指南:320B-A18B 原生多模态架构解析与实战配置

大模型基础模型多模态本地部署 【免费下载链接】GLM-5.3-Flash GLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2 项目地址: https://ai.gitcode.com/zai-org/GLM-5.3-Flash 点击查看 免费下载 本篇…

2026/9/30 2:29:50 阅读更多 →
基于模糊自适应PID、传统PID实现热电炉温度控制设计仿真(带配套说明文档)

基于模糊自适应PID、传统PID实现热电炉温度控制设计仿真(带配套说明文档)

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、算法改进、程序设计科研仿真。🍎 往期回顾关注个人主页:完整代码获取 定制创新 论文复现私信🍊个人信条:做科研&#xff0c…

2026/9/30 2:29:50 阅读更多 →
audio.cpp源码结构导读:framework、runtime与模型注册表的架构全景解析

audio.cpp源码结构导读:framework、runtime与模型注册表的架构全景解析

audio.cpp源码结构导读:framework、runtime与模型注册表的架构全景解析 【免费下载链接】audio.cpp An all-in-one, pure C inference engine for audio models, powered by ggml. Supports TTS, STT, VAD, voice conversion, music generation, and more, with hig…

2026/9/30 2:29:49 阅读更多 →
DevTools 深度调试:Network、断点、性能与缓存排查实战

DevTools 深度调试:Network、断点、性能与缓存排查实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/30 2:29:49 阅读更多 →
第十六届智能车竞赛竞速组成绩、奖项与技术点全解析

第十六届智能车竞赛竞速组成绩、奖项与技术点全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/30 2:29:49 阅读更多 →
LlamaIndex 系列【41】数据连接器:LlamaParse、LiteParse

LlamaIndex 系列【41】数据连接器:LlamaParse、LiteParse

文章目录1. 数据连接器1.1 概述1.2 集成包1.3 使用方式1.4 部分模块1.5 模块指南2. LlamaParse2.1 一分钟获取解析结果2.2 可用文档 API2.2.1 Parse2.2.2 Extract2.2.3 Index2.2.4 Classify2.2.5 Split2.3 代码示例3. LiteParse3.1 能力清单3.2 快速开始1. 数据连接器 1.1 概述…

2026/9/30 2:28:49 阅读更多 →

日新闻

Base64 图片头部特征识别:从文件头到格式判断的完整指南

Base64 图片头部特征识别:从文件头到格式判断的完整指南

1. 项目概述:为什么说看懂 base64 图片头部是基本功这几年跟 base64 打交道的机会越来越多,后端接口返回图片、前端渲染验证码、小程序里存小图、还有一些老系统导出报表,动不动就给你一段长到怀疑人生的 base64 字符串。很多人拿到字符串就直…

2026/9/30 0:00:35 阅读更多 →
Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

简介:本资源是一份面向Java初学者与课程设计学生的公交站牌广告灯箱管理系统毕业设计文档,聚焦城市公共广告资源信息化管理痛点,提供从需求分析到技术实现的完整方案。文档采用标准学术论文结构,含摘要、英文摘要、目录及五章正文…

2026/9/30 0:00:35 阅读更多 →
用 Redis Lua 构建大模型 API 多租户原子配额治理体系

用 Redis Lua 构建大模型 API 多租户原子配额治理体系

我去年年底接了一个内部 AI 平台的治理需求,背景很直接:公司把 DeepSeek、MiniMax 这类大模型 API 统一封装成内部网关,开放给几个业务团队用。结果第一个月账单出来,额度直接超了 4 倍。仔细查日志,发现原因并不复杂—…

2026/9/30 0:00:35 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 8:16:59 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/29 16:41:41 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/29 8:24:48 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/29 19:29:29 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/29 5:58:00 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/29 3:55:56 阅读更多 →