在 CSS Grid 中垂直对齐内容 [重复]

Posted

技术标签:

【中文标题】在 CSS Grid 中垂直对齐内容 [重复]【英文标题】:Vertically align content within CSS Grid [duplicate] 【发布时间】:2018-11-04 03:28:38 【问题描述】:

我在下面有一个 CSS 网格,我希望内容(现在的字母)在单元格内垂直对齐。实现这一目标的最佳方法是什么?单元格上的vertical-align:middle 似乎没有做任何事情,网格容器上的align-items:center; 工作了,但是高度都不同了。

body 
  margin: 40px;


.wrapper 
		display: grid;
    grid-gap: 10px;
		grid-template-columns: [col] 100px [col] 100px [col] 100px;
		grid-template-rows: [row] auto [row] auto [row] ;
		background-color: #fff;
		color: #444;
	

	.box 
		background-color:#444;
		color:#fff;
		padding:20px;
		font-size:150%;
	

	.a 
		grid-column: col / span 2;
		grid-row: row 1 / 3;
	
	.b 
		grid-column: col 3 / span 1;
		grid-row: row ;
	
	.c 
		grid-column: col 3 / span 1;
		grid-row: row 2 ;
	
	.d 
		grid-column: col / span 1;
		grid-row: row 3;
	

	.e 
		grid-column: col 2 / span 1;
		grid-row: row 3;
	

.f 
  grid-column: col 3 / span 1;
  grid-row: row 3;
<div class="wrapper">
  <div class="box a">A</div>
  <div class="box b">B</div>
  <div class="box c">C</div>
  <div class="box d">D</div>
  <div class="box e">E</div>
  <div class="box f">F</div>
</div>

【问题讨论】:

【参考方案1】:

如果您只是希望它们垂直居中,您可以将 display:flex;align-items: center; 添加到框类:

body 
  margin: 40px;


.wrapper 
  display: grid;
  grid-gap: 10px;
  grid-template-columns: [col] 100px [col] 100px [col] 100px;
  grid-template-rows: [row] auto [row] auto [row];
  background-color: #fff;
  color: #444;


.box 
  background-color: #444;
  color: #fff;
  padding: 20px;
  font-size: 150%;
  display: flex;
  align-items: center;


.a 
  grid-column: col / span 2;
  grid-row: row 1 / 3;


.b 
  grid-column: col 3 / span 1;
  grid-row: row;


.c 
  grid-column: col 3 / span 1;
  grid-row: row 2;


.d 
  grid-column: col / span 1;
  grid-row: row 3;


.e 
  grid-column: col 2 / span 1;
  grid-row: row 3;


.f 
  grid-column: col 3 / span 1;
  grid-row: row 3;
<div class="wrapper">
  <div class="box a">A</div>
  <div class="box b">B</div>
  <div class="box c">C</div>
  <div class="box d">D</div>
  <div class="box e">E</div>
  <div class="box f">F</div>
</div>

【讨论】:

以上是关于在 CSS Grid 中垂直对齐内容 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何垂直对齐项目[重复]

CSS垂直对齐段落到div [重复]

Bootstrap 4 div(使用 btn 类)中的文本垂直对齐,使用 CSS Grid(并且没有 flexbox)时没有固定高度

CSS垂直对齐文本到图像的中间[重复]

CSS垂直对齐[重复]

如何垂直对齐 Vaadin 网格中单元格的内容?