CSS响应式布局:能否移除col_space实现原五列布局效果?
移除Grid布局占位列实现原布局功能
问题描述
现有一个五列Grid布局:
col_space为等宽弹性列,仅用于占位;col_1和col_2为固定尺寸的内容列。
技术问询:能否完全移除col_space元素,仅保留如下结构的同时实现原布局功能?<div class='wrap'> <div class='col_1'>lorem</div> <div class='col_2'>ipsum</div> </div>原布局代码示例:
.wrap{ display:grid; grid-template-columns:1fr 99px 1fr 54px 1fr; height:50vh; } .col_space{background:lightblue;} .col_1, .col_2{background:orange;}<div class='wrap'> <div class='col_space'></div> <div class='col_1'>lorem</div> <div class='col_space'></div> <div class='col_2'>ipsum</div> <div class='col_space'></div> </div>
解决方案
完全可以,不需要保留占位的col_space元素,通过调整Grid的列定位属性就能实现和原布局一致的效果。
实现代码
CSS代码
.wrap{ display:grid; grid-template-columns:1fr 99px 1fr 54px 1fr; /* 保留原列宽定义 */ height:50vh; } .col_1{ background:orange; grid-column: 2; /* 指定col_1占据第2列 */ } .col_2{ background:orange; grid-column: 4; /* 指定col_2占据第4列 */ }
HTML结构(简化后)
<div class='wrap'> <div class='col_1'>lorem</div> <div class='col_2'>ipsum</div> </div>
原理说明
- 原布局的
grid-template-columns已经定义了5列的宽度框架,我们不需要修改这个规则,它会自动保留第1、3、5列的弹性空间,替代原占位列的作用。 - 通过
grid-column属性直接指定内容列的位置,col_1对应原布局的第2列,col_2对应第4列,视觉效果和原布局完全一致。 - 这种方式既精简了HTML结构,又保留了原布局的响应式特性。
内容的提问来源于stack exchange,提问作者provance
相关产品推荐
相关产品推荐

