如何居中和左对齐CSS网格中?

时间:2019-08-07 16:31:30

标签: css css-grid

我正在尝试使用CSS网格将两列居中,但是将第一列左对齐,该列由max-width值指定。这是所需的输出应该是这样的:

enter image description here

我尝试将整个容器包装成固定的宽度,在相应的div上添加margin-left / right:auto并对齐项目,但对我来说似乎没有任何作用。

.grid-container>div {
  display: flex;
  flex-direction: column;
  border: 1px solid purple;
}

.item1 {
  grid-area: item1;
  margin-right: auto;
}

.item2 {
  margin-top: auto;
  grid-area: item2;
}

.item3 {
  margin-bottom: auto;
  grid-area: item3;
}

.item2,
.item3 {
  margin-right: auto;
  max-width: 300px;
  background: white;
}

h2,
p {
  font-size: 14px;
}

.object {
  height: 200px;
  width: 300px;
  background: green;
  margin: 20px 0px;
}

.grid-container {
  display: grid;
  grid-template-areas: 'item1' 'item2' 'item3';
  justify-items: center;
}

.grid-container {
  display: grid;
  grid-template-areas: 'item2 item1' 'item3 item1';
  background-color: orange;
}
<div class="grid-container">
  <div class="item1">
    <div class="object">
    </div>
  </div>
  <div class="item2">
    <h2>Title</h2>
  </div>
  <div class="item3">
    <p style="margin: 0px;">
      Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
    </p>
    <p>
      Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
    </p>
  </div>
</div>

1 个答案:

答案 0 :(得分:2)

在容器的两侧创建一组空列,以使内容居中对齐。

hdfs

.grid-container {
   display: grid;
   grid-template-columns: 1fr auto auto 1fr; /* new */
   grid-template-areas:                     
     '. item2 item1 .'    /* adjusted; added empty columns */
     '. item3 item1 .';
   background-color: orange;
}
.grid-container>div {
  display: flex;
  flex-direction: column;
  border: 1px solid purple;
}

.item1 {
  grid-area: item1;
  margin-right: auto;
}

.item2 {
  margin-top: auto;
  grid-area: item2;
}

.item3 {
  margin-bottom: auto;
  grid-area: item3;
}

.item2,
.item3 {
  margin-right: auto;
  max-width: 300px;
  background: white;
}

h2,
p {
  font-size: 14px;
}

.object {
  height: 200px;
  width: 300px;
  background: green;
  margin: 20px 0px;
}

.grid-container {
  display: grid;
  grid-template-areas:
    '. item2 item1 .'
    '. item3 item1 .';
  background-color: orange;
  grid-template-columns: 1fr auto auto 1fr;
}