移动端优先响应式2列Grid布局问题排查求助
移动端优先响应式网格布局修复方案
问题根源
你的代码直接给.product-div设置了grid-template-columns: 1fr 1fr,导致所有屏幕尺寸都强制显示双列,违背了移动端优先的逻辑;同时你提到的@media断点规则并未在代码中实现,自然无法触发布局切换。
修复步骤
- 移动端基础布局:给
.product-div默认设置单列布局,适配小屏幕 - 添加媒体查询:在屏幕宽度≥768px时,切换为等宽双列布局
- 细节优化:移动端下右侧栏的顶部边框可隐藏,避免单列时的视觉突兀
修改后的完整CSS代码
/*product details*/ img { width: 100%; height: auto; display: block; border: 1px solid #B0B0B0; border-radius: 5px; object-fit: contain; object-position: bottom; margin-left: auto; margin-right: auto; text-align: center; } .main-wrapper { min-height: 100vh; position: relative; display: grid; align-items: center; justify-content: center; } .container { display: grid; max-width: 1200px; padding: 30px 5px; background-color: yellow; } /* 移动端默认单列布局 */ .product-div { padding: 0; display: grid; grid-template-columns: 1fr; grid-template-rows: auto; gap: 10px; background-color: blue; } .product-div-left { padding: 0 30px; text-align: center; background-color: orange; } .product-div-right { padding: 0 30px 5px; border-top: 1px solid #BFCBCE; background-color: white; } /* 屏幕宽度≥768px时切换双列布局 */ @media (min-width: 768px) { .product-div { grid-template-columns: 1fr 1fr; } .product-div-right { border-top: none; /* 双列时去掉顶部边框 */ } } .image-container { align-content: center; } .frame-img-container img { border-radius: none; border: none; } .img-container img { width: 100%; text-align: center; height: auto; margin: 0; border-radius: 5px; } .img-container-bk img { width: 100%; } .img-container2 img { width: 430px; height: auto; margin: 0 auto; border-radius: 5px; background-color: white; } .hover-container { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; margin-top: 20px; } .hover-container div { padding: 0; margin: 0 4px 8px 4px; display: flex; align-items: center; justify-content: center; } .active { border-color: #72848C !important; /*js related*/ } .hover-container div:hover { border-color: #BFCBCE; border: 2px solid; border-radius: 5px; transition: 5s; } .hover-container div img { width: 100px; height: auto; cursor: pointer; border-radius: 5px; }
HTML代码保持不变
你的HTML结构无需修改,直接配合上述CSS即可实现预期效果。
内容的提问来源于stack exchange,提问作者user24194166
相关产品推荐
相关产品推荐

