You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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属性控制间距,既能解决桌面端卡片贴合问题,又能避免移动端出现双倍间距。具体修改如下:

  1. 更新.row的样式,替换浮动布局为Flex布局:
.row {
  display: flex;
  flex-wrap: wrap;
  gap: 20px; /* 自定义行与列之间的间距 */
  margin: 0 -5px;
}
  1. 移除HTML中的<br>标签,同时删除原CSS中.row:after的清除浮动代码。

  2. 简化响应式部分代码,无需再给.column和.column2添加margin-bottom:

@media screen and (max-width: 600px) {
  .column, .column2 {
    width: 100%;
  }
}

修改后,桌面端两行卡片之间会保持gap设置的间距,移动端所有卡片垂直排列时,间距统一且不会出现双倍问题。

内容的提问来源于stack exchange,提问作者Maria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 20:40:34