使用 CSS text-align 属性的解决方案
使用带有“center”值的 text-align 属性将网格项的内容水平居中。
将其应用于网格容器。
使用 text-align 属性在 Grid 中水平居中内容的示例:
<!DOCTYPE html> <html> <head> <title>文档的标题</title> <style> grid-container { display: grid; grid-template-columns: 1fr 1fr; grid-auto-rows: 60px; grid-gap: 20px; text-align: center; } grid-container { background-color: #fff; border: 1px solid #666; padding: 20px; } grid-item { background-color: #dce0dd; border: 1px solid #666; } </style> </head> <body> <grid-container> <grid-item>A centered text</grid-item> <grid-item>A centered text</grid-item> <grid-item><img src="http://onitroad.com/notebook.png" width="40" height="40" alt="text"></grid-item> <grid-item><img src="http://onitroad.com/notebook.png" width="40" height="40" alt="text"></grid-item> </grid-container> </body> </html>
对于垂直居中,带有“middle”值的 vertical-align 属性将不起作用,因为它仅用于内联和表格单元格容器。
具有自动边距的解决方案
我们还可以使用 CSS 边距属性及其“自动”值来垂直和水平居中网格项目。
将此属性应用于 <span> 和 <img> 元素。
将网格项目的显示设置为“flex”。
使用自动边距将 Grid 中的内容居中的示例:
<!DOCTYPE html> <html> <head> <title>文档的标题</title> <style> grid-container { display: grid; grid-template-columns: 1fr 1fr; grid-auto-rows: 60px; grid-gap: 20px; } grid-item { display: flex; } span, img { margin: auto; } grid-container { background-color: #fff; border: 1px solid #666; padding: 20px; } grid-item { background-color: #dce0dd; border: 1px solid #666; } </style> </head> <body> <grid-container> <grid-item><span>A centered text</span></grid-item> <grid-item><span>A centered text</span></grid-item> <grid-item><img src="http://onitroad.com/notebook.png" width="40" height="40" alt="text"></grid-item> <grid-item><img src="http://onitroad.com/notebook.png" width="40" height="40" alt="text"></grid-item> </grid-container> </body> </html>
使用 CSS position 属性的解决方案
此解决方案允许我们将必须从文档流中删除的元素居中。
在必须居中的元素上将位置属性设置为“绝对”,并在用作包含块的祖先上使用“相对”值。
使用 position 属性将 Grid 中的内容居中的示例:
<!DOCTYPE html> <html> <head> <title>文档的标题</title> <style> grid-container { display: grid; grid-template-columns: 1fr 1fr; grid-auto-rows: 60px; grid-gap: 20px; } grid-item { position: relative; text-align: center; } span, img { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); } grid-container { background-color: #fff; border: 1px solid #666; padding: 20px; } grid-item { background-color: #dce0dd; border: 1px solid #666; } </style> </head> <body> <grid-container> <grid-item><span>A centered text</span></grid-item> <grid-item><span>A centered text</span></grid-item> <grid-item><img src="http://onitroad.com/notebook.png" width="40" height="40" alt="text"></grid-item> <grid-item><img src="http://onitroad.com/notebook.png" width="40" height="40" alt="text"></grid-item> </grid-container> </body> </html>
在本教程中,我们将演示如何在 Grid 中居中显示内容。
在下面,我们可以看到此问题的所有可能解决方案。
让我们来讨论一下。
使用 Flexbox 的解决方案
使网格项的内容居中的最简单方法之一是使用 Flexbox。
将网格容器的显示设置为“grid”,将网格项目设置为“flex”。
然后,将 align-items 和 justify-content 属性(均带有“center”值)添加到网格项中。
使用 Flexbox 将 Grid 中的内容居中的示例:
<!DOCTYPE html> <html> <head> <title>文档的标题</title> <style> .grid-container { display: grid; grid-template-columns: 1fr 1fr; grid-auto-rows: 60px; grid-gap: 20px; } .grid-item { display: flex; align-items: center; justify-content: center; } .grid-container { background-color: #fff; border: 1px solid #666; padding: 20px; } .grid-item { background-color: #dce0dd; border: 1px solid #666; } </style> </head> <body> <div class="grid-container"> <div class="grid-item">A centered text</div> <div class="grid-item">A centered text</div> <div class="grid-item"> <img src="http://onitroad.com/notebook.png" width="40" height="40" alt="image"> </div> <div class="grid-item"> <img src="http://onitroad.com/notebook.png" width="40" height="40" alt="image"> </div> </div> </body> </html>
网格布局解决方案
此解决方案与前一个类似,但此处的居中是通过网格属性完成的。
在下面的示例中,我们将网格项的显示设置为“grid”,而不是“flex”。
此外,我们使用 justify-items 属性而不是 justify-content。
使用网格布局将内容居中的示例:
<!DOCTYPE html> <html> <head> <title>文档的标题</title> <style> grid-container { display: grid; grid-template-columns: 1fr 1fr; grid-auto-rows: 60px; grid-gap: 20px; } grid-item { display: grid; align-items: center; justify-items: center; } grid-container { background-color: #fff; border: 1px solid #666; padding: 20px; } grid-item { background-color: #dce0dd; border: 1px solid #666; } </style> </head> <body> <grid-container> <grid-item>A centered text</grid-item> <grid-item>A centered text</grid-item> <grid-item><img src="http://onitroad.com/notebook.png" width="40" height="40" alt="text"></grid-item> <grid-item><img src="http://onitroad.com/notebook.png" width="40" height="40" alt="text"></grid-item> </grid-container> </body> </html>
日期:2020-06-02 22:14:59 来源:oir作者:oir