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

CSS实现三列并排布局 解决元素纵向排列问题

问题描述

我是编程新手,想要将当前纵向堆叠的功能盒子调整为并排排列,实现三列布局效果,预期效果参考示意图:
三列布局预期效果

以下是当前编写的demo代码,调整margin-bottom等属性后始终没有达到预期效果:

现有CSS代码

.product__sidebar__view__item {
  height: 190px;
  position: relative;
  border-radius: 15px;
  margin-bottom: 20px; // 调整过该属性但未生效
}

.product__sidebar__view__item h5 {
  position: absolute;
  left: 0;
  bottom: 25px;
  width: 100%;
  padding: 0 30px 0 20px;
}

.product__sidebar__view__item h5 a {
  color: #ffffff;
  font-weight: 700;
  line-height: 26px;
}

现有HTML代码

<section class="product spad">
  <div class="container">
    <div class="row">
      <div class="col-lg-4 col-md-8 col-sm-8">
        <div class="sidebar_product">
          <div class="product__sidebar__view">
            <div class="section-title">
              <h5>Main Menu</h5>
            </div>
            <div class="column">
              <div class = "product__sidebar__view__item set-bg mix month week" data-setbg="/assets/2.jpg">
                <h5><a href="/billing">Survey</a></h5> 
              </div>
              <div class="product__sidebar__view__item set-bg mix month week" data-setbg="/assets/1.jpg">
                <h5><a href="#">Actor Mapping</a></h5>
              </div>
              <div class="product__sidebar__view__item set-bg mix week years" data-setbg="/assets/4.jpg">
                <h5><a href="#">Political Text Analysis</a></h5>
              </div>
              <div class="product__sidebar__view__item set-bg mix years month" data-setbg="/assets/4.jpg">
                <h5><a href="#">Social Media Network Analysis</a></h5>
              </div>
              <div class="product__sidebar__view__item set-bg mix years month" data-setbg="/assets/3.jpg">
                <h5><a href="#">Media Monitoring</a></h5>
              </div>
            </div>  
          </div>        
        </div>
      </div>
    </div>
  </div>
</section>
实现方案

调整margin-bottom无效是因为该属性仅控制元素的下外边距,无法改变块级元素默认占满整行、纵向堆叠的排列规则,要实现三列并排布局,直接通过Flex布局控制父容器排列规则即可,仅需修改两处CSS:

  • 给包裹所有卡片的父容器.column添加Flex布局属性,控制自动换行和元素间距
.column {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
}
  • 调整单个卡片.product__sidebar__view__item的宽度,保证一行刚好容纳3个卡片,删除原有无效的margin-bottom属性,间距统一由父容器的gap控制
.product__sidebar__view__item {
  height: 190px;
  position: relative;
  border-radius: 15px;
  /* 三列宽度计算:总宽度减去两个20px的间距,除以3 */
  width: calc((100% - 40px) / 3);
}
/* 可选移动端适配:屏幕宽度小于768px时自动切换为单列 */
@media (max-width: 767px) {
  .product__sidebar__view__item {
    width: 100%;
  }
}

如果项目已经引入Bootstrap框架,可以不用写自定义CSS:直接把父容器.column的类名改成row,给每个.product__sidebar__view__item添加col-lg-4 col-md-6 col-sm-12类名,就能直接实现响应式三列布局。

内容的提问来源于stack exchange,提问作者Jacob Septianus Wijaya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 20:36:21