我试图用CSS网格创建一个简单的页面。

我没有做到的是将HTML中的文本集中到各自的网格单元格中。

我已经尝试将内容放在left_bg和right_bg选择器内外的单独divs中,并使用一些CSS属性,但无济于事。

我怎么做呢?

html, body { margin: 0; padding: 0; } .container { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 100vh; grid-gap: 0px 0px; } .left_bg { display: subgrid; background-color: #3498db; grid-column: 1 / 1; grid-row: 1 / 1; z-index: 0; } .right_bg { display: subgrid; background-color: #ecf0f1; grid-column: 2 / 2; grid_row: 1 / 1; z-index: 0; } .left_text { grid-column: 1 / 1; grid-row: 1 / 1; position: relative; z-index: 1; justify-self: center; font-family: Raleway; font-size: large; } .right_text { grid-column: 2 / 2; grid_row: 1 / 1; position: relative; z-index: 1; justify-self: center; font-family: Raleway; font-size: large; } <div class="container"> <!--everything on the page--> <div class="left_bg"> <!--left background color of the page--> </div> </div> <div class="right_bg"> <!--right background color of the page--> </div> <div class="left_text"> <!--left side text content--> <p>Review my stuff</p> <div class="right_text"> <!--right side text content--> <p>Hire me!</p> </div> </div>


当前回答

将父节点设为网格,并将justify-content: center;align-content:居中;

.parent { 身高:100 px; 宽度:100 px; 边框:1px纯黑色; 显示:网格; justify-content:中心; align-content:中心; } .child { 高度:20 px; 宽度:20 px; 背景颜色:红色; } < div class = "父" > < div class = "孩子" >子< / div > < / div >

其他回答

甚至不要尝试使用flex和css网格。只需在content元素上添加以下内容:

place-self: center;

它会在这里做居中工作。

如果你想要居中一些在div内的东西,在网格单元内,你需要定义嵌套网格,以使其工作。 演示中显示了两个示例。

https://css-tricks.com/snippets/css/complete-guide-grid/

尝试使用flex:

Plunker演示:https://plnkr.co/edit/nk02ojKuXD2tAqZiWvf9

/* Styles go here */

html,
body {
  margin: 0;
  padding: 0;
}

.container {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 100vh;
  grid-gap: 0px 0px;
}

.left_bg {
  background-color: #3498db;
  grid-column: 1 / 1;
  grid-row: 1 / 1;
  z-index: 0;
  display: flex;
  justify-content: center;
  align-items: center;

}

.right_bg {
  background-color: #ecf0f1;
  grid-column: 2 / 2;
  grid_row: 1 / 1;
  z-index: 0;
  display: flex;
  justify-content: center;
  align-items: center;
}

.text {
  font-family: Raleway;
  font-size: large;
  text-align: center;
}

HTML

    <div class="container">
  <!--everything on the page-->

  <div class="left_bg">
    <!--left background color of the page-->
    <div class="text">
      <!--left side text content-->
      <p>Review my stuff</p>
    </div>
  </div>

  <div class="right_bg">
    <!--right background color of the page-->
    <div class="text">
      <!--right side text content-->
      <p>Hire me!</p>
    </div>
  </div>
</div>

将父节点设为网格,并将justify-content: center;align-content:居中;

.parent { 身高:100 px; 宽度:100 px; 边框:1px纯黑色; 显示:网格; justify-content:中心; align-content:中心; } .child { 高度:20 px; 宽度:20 px; 背景颜色:红色; } < div class = "父" > < div class = "孩子" >子< / div > < / div >

您可以使用flexbox将文本居中。顺便说一下,不需要额外的容器,因为文本被认为是匿名的伸缩项。

来自flexbox规格:

伸缩容器的每个流内子元素都成为伸缩项,而直接包含在伸缩容器内的每个连续文本运行都包装在匿名伸缩项中。然而,只包含空格(即可以受空格属性影响的字符)的匿名伸缩项不会被呈现(就像它是display:none一样)。

因此,只需将网格项设置为伸缩容器(display: flex),并添加align-items: center和justify-content: center以垂直和水平居中。

还进行了HTML和CSS的优化:

html, body { margin: 0; padding: 0; } .container { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 100vh; font-family: Raleway; font-size: large; } .left_bg, .right_bg { display: flex; align-items: center; justify-content: center; } .left_bg { background-color: #3498db; } .right_bg { background-color: #ecf0f1; } <div class="container"> <div class="left_bg">Review my stuff</div> <div class="right_bg">Hire me!</div> </div>

我们可以使用地点项目:中心;属性使子元素文本位于中间。

.parent { 显示:网格; grid-template-columns:重复(2 1 fr); 边框:3px纯黄色; grid-gap: 3 px; 名:中心; } .parent > div { 背景颜色:蓝色; text-align:中心; 颜色:白色; 粗细:大胆的; 字体大小:2快速眼动; } < div class = "父" > " child1 " < div class = > child1 < / div > < div class = " child2”> child2 < / div > < / div >