我有一个列表视图,其中所有列表项都设计为看起来像卡片.我用justify-content: space-between来平均分配卡片.我需要在一个宽屏幕上一行显示5张卡,但这些卡应该放在左边,留出相同的间隙.

enter image description here

当我需要一排有3张牌时,这个代码工作得很好,但当我有5张牌在一行时就不行了.在本例中,我将<ul><li>替换为<div>,将.parent.child类替换为<div>.

我怎么才能修好它?

.parent {
  display: flex;
  flex-wrap: wrap;
  width: 100%;
  height: 100%;
  gap: 20px;
  box-sizing: border-box;
  justify-content: space-between;
  background-color: lightgreen;
}

.parent::after {
  content: "";
  width: 16%;
  height: 0;
}

.child {
  flex-basis: 16%;
  background-color: blue;
  color: white;
  display: flex;
  justify-content: center;
  align-items: center;
}

@media only screen and (max-width : 1024px) {
  /* for tablet */
  .parent::after {
    width: 46%;
  }
  .child {
    flex-basis: 46%;
  }
}

@media only screen and (max-width : 768px) {
  /* for mobile */
  .parent::after {
    display: none;
  }
  .child {
    flex-basis: 100%;
  }
}
<div class="parent">
  <div class="child"> <span>1</span> </div>
  <div class="child"> <span>2</span> </div>
  <div class="child"> <span>3</span> </div>
  <div class="child"> <span>4</span> </div>
  <div class="child"> <span>5</span> </div>
</div>

推荐答案

看起来具体的宽度百分比是合适的.如果不是您真正想要的,则不需要使用Flexbox的空格,也不需要使用伪元素.

为了便于维护,我将Gap值放在了一个自定义属性中,因为它被重复使用.

:root {
  --col-gap: 20px;
}

.parent {
  display: flex;
  flex-wrap: wrap;
  width: 100%;
  height: 100%;
  gap: var(--col-gap);
  box-sizing: border-box;
  justify-content: start;
  background-color: lightgreen;
  margin-bottom: 20px;
}

.child {
  flex-basis: calc(100%/5 - var(--col-gap));
  background-color: blue;
  color: white;
  display: flex;
  justify-content: center;
  align-items: center;
}

@media only screen and (max-width: 1024px) {
  .child {
    flex-basis: calc(100%/2 - var(--col-gap));
  }
}

@media only screen and (max-width: 768px) {
  .child {
    flex-basis: 100%;
  }
}
<div class="for-demo-only">
  <div class="parent">
    <div class="child"> <span>1</span> </div>
    <div class="child"> <span>2</span> </div>
    <div class="child"> <span>3</span> </div>
    <div class="child"> <span>4</span> </div>
    <div class="child"> <span>5</span> </div>
  </div>
  
  <div class="parent">
    <div class="child"> <span>1</span> </div>
    <div class="child"> <span>2</span> </div>
    <div class="child"> <span>3</span> </div>
    <div class="child"> <span>4</span> </div>
    <div class="child"> <span>5</span> </div>
    <div class="child"> <span>6</span> </div>
    <div class="child"> <span>7</span> </div>
  </div>

  <div class="parent">
    <div class="child"> <span>1</span> </div>
    <div class="child"> <span>2</span> </div>
  </div>

  <div class="parent">
    <div class="child"> <span>1</span> </div>
    <div class="child"> <span>2</span> </div>
    <div class="child"> <span>3</span> </div>
  </div>
</div>

Html相关问答推荐

Blazor中有1像素高行的表格

你能让Cypress测试为p—fileUpload做文件上传吗?

我已经在我的网站上创建了按钮,但我不能让它们正确排列.'

如何防止SVG图标出现断行?

HTML5章节或文章

当在双引号|Angular .html文件中使用时,Pretier会将单引号字符替换为&;Quot;

如何在图像中垂直和水平居中显示文本?

MatSnackBar: colored颜色 不起作用

在单独的容器之间堆叠上下文

如果您将带有 html 标签的字符串数据(name : test) 放在 `

如何为高度较小的块制作边框动画?

在 HTML 视频上环绕文本叠加

jQuery 索引返回不正确的结果

悬停时宽度从 0 过渡到自动

为什么 Flexbox 中相邻元素上的 flex:1 会影响另一个元素的固定宽度?

在锥形渐变进度条内创建空白的问题

XPATH Select h2标签和

标签之间或h2标签和 标签之间的td元素,以立即为准

如何使用动画拆分和对齐文本块

调整大小时 CSS 溢出

SVG 适用于 Safari,不适用于 Chrome