在移动视图中居中 flexbox

Center flexbox in mobile view

问题:

一个包含三个框的容器位于桌面视图的中央。但是,在手机上看,它不在中心。

最小工作示例 (MWE):

HTML

<article>
  <section class="category cars">Cars</section>
  <section class="category food">Food</section>
  <section class="category drinks">Drinks</section>
</article>

CSS

/* Reset */
* {
  margin: 0;
  padding: 0;
}
/* Layout */
article {
  display: flex;
  justify-content: center;
  width: 100%;
}
.category {
  height: 50px;
  width: 200px;
  color: white;
  text-align: center;
  font-size: 1.5rem;
  padding: 1rem;
}
/* Background colors */
.cars {
  background-color: crimson;
}
.food {
  background-color: lightseagreen;
}
.drinks {
  background-color: deepskyblue;
}

/* Mobile view */
@media screen and (max-width: 600px) {
  article {
    flex-direction: column;
  }
}

当前输出:

三个框位于左侧

期望输出:

这三个框在移动设备视图中应居中中间

解决方案非常简单。 当您将方向更改为 column 时,轴也会反转。因此,添加 align-items: center; 将使框居中。

这就是你需要的:

@media screen and (max-width: 600px) {
  article {
    flex-direction: column;
    align-items: center;
  }
}

您可以通过向 <article> 标签添加父元素来实现。然后,将 display: flex; width: 100%;justify-content: center; 添加到父元素 ONLY IN THE MEDIA QUERY.

这将使 <article> 标签位于中间。父元素有 background: none 这使得它看起来像 <article> 容器在中间

/* Reset */
* {
  margin: 0;
  padding: 0;
}
/* Layout */
article {
  display: flex;
  justify-content: center;
  width: 100%;
}
.category {
  height: 50px;
  width: 200px;
  color: white;
  text-align: center;
  font-size: 1.5rem;
  padding: 1rem;
}
/* Background colors */
.cars {
  background-color: crimson;
}
.food {
  background-color: lightseagreen;
}
.drinks {
  background-color: deepskyblue;
}

/* Mobile view */
@media screen and (max-width: 600px) {
  article {
    flex-direction: column;
  }
  .parent{
    width: 100%;
    display: flex;
    justify-content: center;
  }
}
<div class="parent">
  <article>
  <section class="category cars">Cars</section>
  <section class="category food">Food</section>
  <section class="category drinks">Drinks</section>
  </article>
</div>

您可以将 align-items: center 添加到该列,因为您已将 flex-direction: column 设置为 <article> 标记,因此在这种情况下 align-items 将像 justify-content 一样工作

希望对您有所帮助!

您可以使用相对定位。在媒体查询中的文章中添加 left: 50%;position: relative;transform: translateX(-50%); 也将有助于 在某些情况下