
本文详细介绍了如何使用css媒体查询(`@media`)来解决css grid布局中网格项在小屏幕下无法自动堆叠或宽度适配的问题。通过动态调整`grid-template-columns`属性和重置特定网格项的定位,确保内容在不同屏幕尺寸下保持良好的可读性和布局。文章包含示例代码、关键注意事项和最佳实践,帮助开发者构建灵活的响应式网格界面。
CSS Grid布局为网页设计提供了强大的二维布局能力。然而,在实现响应式设计时,仅依靠初始的网格定义可能不足以应对所有屏幕尺寸。常见的问题包括:
要解决这些问题,核心在于利用CSS媒体查询(@media)根据视口(viewport)尺寸动态调整Grid容器和网格项的样式。
媒体查询允许我们针对不同的设备类型或屏幕特性应用不同的CSS规则。对于响应式布局,最常用的是基于视口宽度的媒体查询,例如@media (max-width: 768px)表示当屏幕宽度小于或等于768像素时应用特定样式。
假设我们有一个包含多个图片块的网格布局,初始设置为三列。
HTML 结构
<div class="img-column">
<div class="update-block">
<div class="img-block">
@@##@@
</div>
<div class="figure"></div>
<div class="img-p">
<p>LOREM IPSUMA DOLOR SIT.</p>
<div class="aritcle_card">
<a class="aritcle_card_img" href="/ai/1957">
<img src="https://img.php.cn/upload/ai_manual/001/246/273/68b6d16db5179966.png" alt="ChatGPT Writer">
</a>
<div class="aritcle_card_info">
<a href="/ai/1957">ChatGPT Writer</a>
<p>免费 Chrome 扩展程序,使用 ChatGPT AI 生成电子邮件和消息。</p>
<div class="">
<img src="/static/images/card_xiazai.png" alt="ChatGPT Writer">
<span>106</span>
</div>
</div>
<a href="/ai/1957" class="aritcle_card_btn">
<span>查看详情</span>
<img src="/static/images/cardxiayige-3.png" alt="ChatGPT Writer">
</a>
<
;/div>
<p>Lorem ipsum dolor sit, consectetur elit, sed do eiusmod tempor incididunt</p>
</div>
</div>
<div class="update-block">
<div class="img-block">
@@##@@
</div>
<div class="figure"></div>
<div class="img-p">
<p>LOREM IPSUMA DOLOR SIT.</p>
<p>Lorem ipsum dolor sit, consectetur elit, sed do eiusmod tempor incididunt</p>
</div>
</div>
<div class="update-block">
<div class="img-block">
@@##@@
</div>
<div class="figure"></div>
<div class="img-p">
<p>LOREM IPSUMA DOLOR SIT.</p>
<p>Lorem ipsum dolor sit, consectetur elit, sed do eiusmod tempor incididunt</p>
</div>
</div>
<div class="update-block">
<div class="img-block">
@@##@@
</div>
<div class="figure"></div>
<div class="img-p">
<p>LOREM IPSUMA DOLOR SIT.</p>
<p>Lorem ipsum dolor sit, consectetur elit, sed do eiusmod tempor incididunt</p>
</div>
</div>
<div class="update-block">
<div class="img-block">
@@##@@
</div>
<div class="figure"></div>
<div class="img-p">
<p>LOREM IPSUMA DOLOR SIT.</p>
<p>Lorem ipsum dolor sit, consectetur elit, sed do eiusmod tempor incididunt</p>
</div>
</div>
<div class="update-block">
<div class="img-block">
@@##@@
</div>
<div class="figure"></div>
<div class="img-p">
<p>LOREM IPSUMA DOLOR SIT.</p>
<p>Lorem ipsum dolor sit, consectetur elit, sed do eiusmod tempor incididunt</p>
</div>
</div>
</div>原始 CSS 样式
/* img column update information */
.img-column {
display: grid;
grid-template-columns: repeat(3, 1fr); /* 初始三列布局 */
gap: 50px 30px;
margin-top: 4.5rem;
}
.update-block {
display: grid;
position: relative;
}
/* 显式放置第6个和第5个网格项 */
.update-block:nth-child(6) {
grid-row: 2;
grid-column: 1;
}
.update-block:nth-child(5) {
grid-row: 2;
grid-column: 2;
}
.img-block img {
width: 300px; /* 固定图片宽度 */
height: 200px;
}
.figure {
border-left: 22vw solid var(--primary-color);
border-top: 10px solid transparent;
position: absolute;
top: 56.3%;
}在上述CSS中,.img-column定义了一个三列的网格布局。同时,第5和第6个.update-block元素被显式地放置在第二行的特定列中。当屏幕尺寸缩小,如果没有响应式规则,这些元素将保持其固定位置和列数,导致布局混乱。
添加响应式媒体查询
为了使网格在小屏幕下变为单列并正确堆叠,我们需要引入媒体查询。这里以max-height: 350px为例(尽管通常响应式布局更多使用max-width来控制列数,但根据原问题提供的信息,我们将使用max-height)。
/* img column update information */
.img-column {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 50px 30px;
margin-top: 4.5rem;
}
.update-block {
display: grid;
position: relative;
}
.update-block:nth-child(6) {
grid-row: 2;
grid-column: 1;
}
.update-block:nth-child(5) {
grid-row: 2;
grid-column: 2;
}
.img-block img {
width: 300px;
height: 200px;
}
.figure {
border-left: 22vw solid var(--primary-color);
border-top: 10px solid transparent;
position: absolute;
top: 56.3%;
}
/* 响应式调整: 当视口高度小于或等于350px时 */
@media (max-height: 350px) {
/* 重置显式放置的网格项,使其自动排列 */
.update-block:nth-child(5),
.update-block:nth-child(6) {
grid-row: auto; /* 或 grid-row: 1; */
grid-column: auto; /* 或 grid-column: 1; */
}
/* 将网格布局改为单列 */
.img-column {
grid-template-columns: repeat(1, 1fr);
}
}关键变化解析:
通过巧妙地结合CSS Grid布局和媒体查询,我们可以构建出高度灵活和适应性强的网页界面。关键在于识别在不同屏幕尺寸下需要调整的Grid属性(如grid-template-columns)以及任何可能干扰自动布局的显式定位规则。掌握这些技术,将使您能够创建出在任何设备上都能提供优秀用户体验的响应式网站。






以上就是响应式CSS Grid布局:优化网格项在小屏幕下的堆叠与宽度适配的详细内容,更多请关注其它相关文章!
# 多条
# 九_网站建设日程表
# 装饰网站建设渠道
# 唐山网站建设选汉狮
# 英语站seo如何分词
# 西藏seo查询获客软件
# 石家庄新款网站建设品牌
# 邢台网站建设品牌排行榜
# 淘客推广网站怎么做
# 珠晖网站推广
# 梅州seo优化入门
# 这是
# 的是
# 值为
# 中非
# css
# 设置为
# 都能
# 为例
# 屏幕尺寸
# grid布局
# 排列
# 模拟器
# 响应式设计
# 响应式布局
# 网页设计
# 平板
# 工具
# 浏览器
# html
相关文章:
vivo浏览器怎么扫描二维码 vivo浏览器内置扫一扫功能使用方法
Django通过AJAX异步上传图片并保存至模型的完整指南
excel怎么制作工资条 excel快速生成工资条的方法
Lar*el Eloquent:高效统计带条件关联模型的数量
qq邮箱日历功能怎么用_创建日程与会议邀请的技巧
J*a如何使用AtomicInteger控制计数_J*a无锁计数器性能分析
2025俄罗斯Yandex最新入口 官方网站地址及浏览器下载指南
PHP高效扁平化嵌套数组:使用array_merge与数组解包操作符
Pyrogram与g4f集成:异步编程实践与常见错误解决
J*aScript map 方法中处理循环元素为空数组的策略
AI泡沫首次被“刺破”:GPU十年都无法存活!
在Blazor WebAssembly应用中动态注入客户端特定指标代码的策略
PHP字符串中复杂变量插值的最佳实践与语法解析
c++如何使用Catch2编写单元测试_c++简洁易用的BDD风格测试框架
在命令行怎么运行html项目_命令行运行html项目方法【教程】
使用CSS更改登录屏幕输入框中PNG图标颜色的策略与局限性
漫画星球免费下拉式入口 漫画星球免费漫画在线阅读网站
微信聊天记录怎么加密_微信聊天记录加密方法
React列表渲染与独立状态管理:避免全局状态影响局部更新
Win10如何清理注册表垃圾 Win10手动清理无效注册表【技巧】
QQ网页版官方账号入口 QQ网页版网页版登录指南
Steam官网入口直达 Steam注册及登录步骤
zookeeper 都有哪些功能?
铁路12306的积分有效期是多久_铁路12306积分有效期说明
2026春节假期票务安排_2026春节放假购票指南
微信客户端如何收红包_微信客户端接收红包使用教程
顺丰国际快递查询 国际件官方查询入口
荣耀Play7TPro怎样在信息App置顶客服对话_iPhone荣耀Play7TPro信息App置顶客服对话【优先查看】
微信商城在哪里打开【步骤】
反效果?《战地6》免费试玩开启后玩家数不升反降
在WordPress中通过REST API获取BasicAuth保护的远程文章
C++ string find函数返回值npos详解_C++字符串查找失败的判断条件
在J*a项目里如何构建对象之间的契约_接口约束的实际落地
狙击外星人小游戏开始_狙击外星人小游戏立即开始
AO3中文官网链接_AO3网页版稳定镜像站
Yandex官方入口网址 Yandex俄罗斯搜索引擎最新在线地址
Windows10怎么开启夜间模式 Windows10系统设置调整色温与亮度缓解夜间用眼疲劳【教程】
AngularJS $http POST请求数据传递与Go后端接收实践
win11如何卸载Windows更新补丁 Win11解决更新导致系统不稳定的问题【修复】
2025-2030年全球乘用车销量预测:新能源成增长主力
MAC如何将整个网页截长图_MAC使用Safari的导出为PDF或第三方工具
PowerPoint如何制作滚动字幕结尾彩蛋_PowerPoint路径动画实现平滑滚动字幕效果
知乎APP怎么管理已购盐选内容_知乎APP盐选内容购买记录与查看方法
html两个JS只运行一个怎么办_让双JS在html中都运行方法【技巧】
地铁跑酷免费秒玩入口链接 地铁跑酷小游戏免费秒玩网站
QQ邮箱登录首页官网地址2026 QQ邮箱官方网页入口
解决macOS Tkinter应用双击启动崩溃:PyInstaller打包指南
支付宝如何设置安全保护_支付宝安全设置的全面教程
Flexbox布局实践:实现粘性导航栏与底部固定页脚
J*a 递归快速排序中静态变量的状态管理与陷阱
*请认真填写需求信息,我们会在24小时内与您取得联系。