如何用CSS设置行间距,避免移动端出现双倍间距问题
解决移动端卡片行间距翻倍问题
我需要在两行卡片之间设置间距,同时避免移动端出现「双倍间距」的问题。目前在两行HTML代码之间添加了<br>标签,桌面端显示正常,但移动端第三张和第四张卡片之间会出现类似双倍间距的问题。尝试过调整row-gap但没效果(因为当前布局不是Grid)。
如果移除<br>标签,桌面端的两行卡片会互相贴合;给.row类添加margin-bottom,桌面端贴合问题解决了,但移动端仍存在双倍间距的问题。
现有HTML代码
<div class="row"> <div class="column"> <div class="card">Get a<br />part-time job</div> </div> <div class="column"> <div class="card">Join a club<br />or society</div> </div> <div class="column"> <div class="card">Find out<br />about volunteering</div> </div> </div> <br> <div class="row"> <div class="column2"> <div class="card">Participate in<br />Melbourne Plus activities</div> </div> <div class="column2"> <div class="card">Explore the LMS</div> </div> </div>
现有CSS代码
* { box-sizing: border-box; } body { font-family: Arial, Helvetica, sans-serif; } /* Float 3 columns side by side */ .column { float: left; width: 33.33%; padding: 0 10px; } /* Float 2 columns side by side */ .column2 { float: left; width: 50%; padding: 0 10px; } /* Remove extra left and right margins, due to padding in columns */ .row {margin: 0 -5px;} /* Clear floats after the columns */ .row:after { content: ""; display: table; clear: both; } /* Style the counter cards */ .card { padding: 16px; text-align: center; background-color: #f1f1f1; border-top: 4px solid #ee8889; } .card:hover { box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.2); padding: 16px; text-align: center; font-weight: bold; background-color: #f1f1f1; border: 3px solid #ee8889; transition: 0.3s; } /* Responsive columns - one column layout (vertical) on small screens */ @media screen and (max-width: 600px) { .column { width: 100%; display: block; margin-bottom: 20px; gap-row: 10px; } .column2 { width: 100%; display: block; margin-bottom: 20px; } }
有效解决方案
改用CSS Flexbox布局,利用gap属性控制间距,既能解决桌面端卡片贴合问题,又能避免移动端出现双倍间距。具体修改如下:
- 更新
.row的样式,替换浮动布局为Flex布局:
.row { display: flex; flex-wrap: wrap; gap: 20px; /* 自定义行与列之间的间距 */ margin: 0 -5px; }
移除HTML中的
<br>标签,同时删除原CSS中.row:after的清除浮动代码。简化响应式部分代码,无需再给
.column和.column2添加margin-bottom:
@media screen and (max-width: 600px) { .column, .column2 { width: 100%; } }
修改后,桌面端两行卡片之间会保持gap设置的间距,移动端所有卡片垂直排列时,间距统一且不会出现双倍问题。
内容的提问来源于stack exchange,提问作者Maria
相关产品推荐
相关产品推荐

