关于前端:如何使用CSS-Grid-居中-div

11次阅读

共计 2791 个字符,预计需要花费 7 分钟才能阅读完成。

本文翻译自 How to Center a Div Using CSS Grid,作者:Fimber Elemuwa, Ralph Mason。略有删改

在本文中,咱们将介绍应用 CSS Grid 在程度和垂直方向上居中 div 的五种办法,当然这些技术可用于任何类型的元素。

初始化

咱们首先创立一个容器,其中蕴含一个简略的 div 元素,咱们将应用它来演示这些居中办法。上面是 HTML:

<article>
  <div></div>
</article>

上面是咱们的初始 CSS:

article {
  width: 100%;
  min-height: 100vh;
  background: black;
  display: grid;
}

div {
  width: 200px;
  background: yellow;
  height: 100px;
}

在上面所有的例子中,咱们将应用 display: grid 属性。这将 <article> 元素建设为网格容器,并为该容器生成块级网格。咱们曾经将网格容器设置为宽(width: 100%)和高(min-height: 100vw),这样咱们的 div 就有足够的空间在其中挪动。

接下来让咱们来看看将 div 居中的各种办法。

1. 应用 CSS Grid 和 place-self 将 Div 居中

place-self属性提供了一种简略的办法来程度和垂直居中网格项。它用于将网格项置于其网格单元格的核心。

将 div 居中就像这样简略:

article {display: grid;}

div {place-self: center;}

place-self属性是justify-self(程度)和align-self(垂直)属性的简写。

应用 place-self 对于在网格内居中单个我的项目特地有用,因为它使其余网格我的项目能够自在地以不同的形式定位。但这并不是应用 Grid 使元素居中的惟一办法,持续看看其余的一些办法。

2. 应用 CSS Grid 和 place-items 居中 Div

place-items属性是justify-items(程度)和align-items(垂直)的简写。这些属性利用于网格容器而不是每个网格项,当咱们心愿所有网格项具备雷同的地位时,这些属性十分有用。

将以下 CSS 代码增加到父容器:

article {
  display: grid;
  place-items: center;
}

咱们能够基于初始代码增加更多的 div 元素,看看会产生什么。后果是每个 div 将在其网格单元格内程度和垂直居中,如下图所示(通过浏览器的网格查看器)。

3. 应用 place-content 居中 Div

place-content属性是 justify-content(程度)和align-content(垂直)的简写。尽管place-selfplace-items管制网格项如何搁置在其指定的网格单元格中,但 place-content 指定网格容器的整个内容应如何对齐(即,所有网格项被视为一个组)。在咱们的演示中,只有一个网格项(咱们的单个黄色 div),因而咱们也能够应用 place-content 将其置于其容器的核心。

将以下 CSS 代码增加到父容器:

article {
  display: grid;
  place-content: center;
}

这里有几点须要留神。到目前为止,在所有的例子中咱们都应用了 center 的值。然而到目前为止,咱们曾经摸索的每个属性都有各种其余的搁置物品的值。place-content有很多值,另外两个值也能够用于居中咱们的 div:space-aroundspace-evenly

此外,在咱们的简略例子中,一个 div 在容器中居中,咱们甚至能够混合和匹配咱们下面看到的属性。咱们能够应用 justify-contentalign-items来居中 div,有趣味的能够尝试看看。

4. 应用 CSS Grid 和 Auto Margins 居中

像平常一样,咱们将应用 display: grid 来定位父容器。咱们还将应用 margin: auto 为 div 指定主动边距。这使浏览器主动计算 div 四周的可用空间,并在其网格单元格内垂直和程度划分,将 div 搁置在两头:

article {display: grid;}

div {margin: auto;}

5. 应用 CSS Grid 网格区域居中 div

最初一个办法咱们将深入探讨 Grid 布局的弱小性能,因为咱们将钻研两种办法来将 div 居中搁置在具备多行和多列的网格中。

以下是咱们的根本 CSS:

article {
  display: grid;
  grid-template-columns: 1fr 200px 1fr;
  grid-template-rows: 1fr 100px 1fr;
}

div {
  background: yellow;
  grid-column: 2;
  grid-row: 2;
}

咱们显式地布局了一个网格,两头有一个区域来搁置咱们的 div。咱们当初甚至不须要在 div 上设置尺寸,因为网格轨迹会解决这个问题。咱们在网格的两头指定一个网格单元格,其宽度为 200px,高度为 100px,而后咱们通知 div 从第二条网格线和第二条行线开始。(默认状况下,它将仅跨到每个方向上的下一条轴网线。)div 元素被很好地搁置在其容器的核心,如下所示。

下图显示了位于其网格轨迹内的 div。

网格布局提供了各种不同的办法来实现这一后果。最初咱们做与下面雷同的事件,但这次为咱们的 div 应用一个命名区域:

article {
  display: grid;
  grid-template-columns: 1fr 200px 1fr;
  grid-template-rows: 1fr 100px 1fr;
  grid-template-areas: ".  .  ."
                       ". box ."
                       ".  .  .";
}

div {
  background: yellow;
  grid-area: box;
}

在这里,咱们设置一个名为 grid-area 的 box,而后形容它应该位于网格上的什么地位,用一个简略的点(.)指定哪些网格单元格是空的。

这种布局办法的长处是,它能够很容易地将许多其余元素搁置在咱们想要的任何中央,这就是网格布局的弱小之处。

论断

这些办法中的每一个都容许咱们在容器中程度和垂直地居中一个 div。place-selfmargin: auto 选项很好,因为它们间接利用于居中的元素,而不是其容器。然而本文中介绍的所有办法都是高效的,并且能够很好地实现这项工作。在各种场景中,咱们可能心愿将元素置于核心,因而领有一系列工具来实现该指标十分重要。

在演示示例中,咱们只是应用了一个空的 div,然而当然咱们能够向 div 增加内容,居中依然无效。而且这些居中技术同样实用于 div 以外的元素。

最初

有趣味的能够看看原文,能够在线体验不同色彩格局是如何工作的。看完本文如果感觉有用,记得点个赞反对,珍藏起来说不定哪天就用上啦~

专一前端开发,分享前端相干技术干货,公众号:南城大前端(ID: nanchengfe)

正文完
 0