水平垂直居中 bootstrap 4 列连续行
Horizontally and vertically center bootstrap 4 columns in consecutive rows
我试图简单地居中对齐容器内的两个 bootstrap 列。列在不同的行中。
网格布局为
<body style="height: 100vh;">
<div class="container">
<div class="row">
<div class="col-6">
<div class="card">
hello
</div>
</div>
</div>
<div class="row">
<div class="col-4">
<div class="card">
world
</div>
</div>
</div>
</div>
</body>
卡片只是用来勾勒容器的轮廓。
我知道有很多关于垂直对齐的问题,我可能错过了包含我需要的答案的问题。但我对他们中的大多数人的看法是 parent 需要有一定的高度。
如果您只有一行,则以下内容工作得很好,因为您可以将列居中放置在 100% 高度的行中。但是如果你有两行,就不太好了,因为每一列都在它自己的行中居中,并且每行的高度都是 window.
<body style="height: 100vh;">
<div class="container h-100">
<div class="row h-100 justify-content-center align-items-center">
<div class="col-6">
<div class="card">
hello
</div>
</div>
</div>
<div class="row h-100 justify-content-center">
<div class="col-4">
<div class="card">
world
</div>
</div>
</div>
</div>
</body>
我希望我可以将 justify-content-center align-items-center
移到容器中,但可惜这似乎没有任何作用。
所以,请帮帮我,我怎样才能把这些齐平的东西,一个放在另一个上面,正好放在屏幕中间?
始终通过inner element
高度给出高度,如果我在container
class元素上给出height
,它不会起作用,所以让container
取决于 inner element's
高度,所以这样试试。
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet"/>
<div class="container mt-3">
<div class="col-12" style="min-height: 180px;">
<div
class="row bg-success position-absolute w-100 h-100 d-flex flex-row justify-content-center align-items-center">
<div class="col-6 pr-2">
<div class="card text-center">
hello
</div>
</div>
<div class="col-6 pl-2">
<div class="card text-center">
world
</div>
</div>
</div>
</div>
</div>
希望你能理解这个小问题,这样它会对你有所帮助。
这是使用 Bootstrap 在 flexboxes 中构建的一个很好的方法。
<div class="container d-flex h-100 flex-column">
<div class="flex-grow-1"></div>
<div class="row justify-content-center">
<div class="col-3">
<div class="card">ITEM A</div>
</div>
</div>
<div class="row justify-content-center">
<div class="col-3">
<div class="card">ITEM B</div>
</div>
</div>
<div class="row justify-content-center">
<div class="col-3">
<div class="card">ITEM C</div>
</div>
</div>
<div class="flex-grow-1"></div>
</div>
我们有两个缓冲区弹性行,flex-grow-1。这些行中的每一行都将扩展(具有相同的权重)以平等地填充顶部和底部。中间的每个内容行都有其内容的高度。
最终结果是 ITEM 卡片在屏幕上垂直和水平居中。因为它们位于单独的行中,所以您可以根据需要调整 margins/padding(默认情况下,它们的卡片最终垂直相邻。
Example screenshot of the above code in bootstrap
你可以用一行+一列和一个内部 flexbox 来实现这一点,但这会让你无法控制各个卡片相对于彼此的显示方式。
编辑:d-flex 使容器成为围绕其子行的弹性容器,而 flex-column 使子项垂直而不是水平呈现和拉伸。
最简单的解决方案是将 行的高度设为 50%...
<body style="height: 100vh;">
<div class="container h-100">
<div class="row h-100 justify-content-center align-items-center">
<div class="col-6">
<div class="card">
hello
</div>
</div>
</div>
<div class="row h-100 justify-content-center align-items-center">
<div class="col-4">
<div class="card">
world
</div>
</div>
</div>
</div>
</body>
演示:https://www.codeply.com/go/7POJtgNaQI
或者, flexbox 方法将使用 Bootstrap flex-grow-1 class.此外,您不需要 body 上的高度。只需在容器上使用 min-vh-100
...
<div class="container d-flex flex-column min-vh-100">
<div class="row flex-grow-1 justify-content-center align-items-center">
<div class="col-6">
<div class="card">
hello
</div>
</div>
</div>
<div class="row flex-grow-1 justify-content-center align-items-center">
<div class="col-4">
<div class="card">
world
</div>
</div>
</div>
</div>
我试图简单地居中对齐容器内的两个 bootstrap 列。列在不同的行中。
网格布局为
<body style="height: 100vh;">
<div class="container">
<div class="row">
<div class="col-6">
<div class="card">
hello
</div>
</div>
</div>
<div class="row">
<div class="col-4">
<div class="card">
world
</div>
</div>
</div>
</div>
</body>
卡片只是用来勾勒容器的轮廓。
我知道有很多关于垂直对齐的问题,我可能错过了包含我需要的答案的问题。但我对他们中的大多数人的看法是 parent 需要有一定的高度。
如果您只有一行,则以下内容工作得很好,因为您可以将列居中放置在 100% 高度的行中。但是如果你有两行,就不太好了,因为每一列都在它自己的行中居中,并且每行的高度都是 window.
<body style="height: 100vh;">
<div class="container h-100">
<div class="row h-100 justify-content-center align-items-center">
<div class="col-6">
<div class="card">
hello
</div>
</div>
</div>
<div class="row h-100 justify-content-center">
<div class="col-4">
<div class="card">
world
</div>
</div>
</div>
</div>
</body>
我希望我可以将 justify-content-center align-items-center
移到容器中,但可惜这似乎没有任何作用。
所以,请帮帮我,我怎样才能把这些齐平的东西,一个放在另一个上面,正好放在屏幕中间?
始终通过inner element
高度给出高度,如果我在container
class元素上给出height
,它不会起作用,所以让container
取决于 inner element's
高度,所以这样试试。
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet"/>
<div class="container mt-3">
<div class="col-12" style="min-height: 180px;">
<div
class="row bg-success position-absolute w-100 h-100 d-flex flex-row justify-content-center align-items-center">
<div class="col-6 pr-2">
<div class="card text-center">
hello
</div>
</div>
<div class="col-6 pl-2">
<div class="card text-center">
world
</div>
</div>
</div>
</div>
</div>
希望你能理解这个小问题,这样它会对你有所帮助。
这是使用 Bootstrap 在 flexboxes 中构建的一个很好的方法。
<div class="container d-flex h-100 flex-column">
<div class="flex-grow-1"></div>
<div class="row justify-content-center">
<div class="col-3">
<div class="card">ITEM A</div>
</div>
</div>
<div class="row justify-content-center">
<div class="col-3">
<div class="card">ITEM B</div>
</div>
</div>
<div class="row justify-content-center">
<div class="col-3">
<div class="card">ITEM C</div>
</div>
</div>
<div class="flex-grow-1"></div>
</div>
我们有两个缓冲区弹性行,flex-grow-1。这些行中的每一行都将扩展(具有相同的权重)以平等地填充顶部和底部。中间的每个内容行都有其内容的高度。
最终结果是 ITEM 卡片在屏幕上垂直和水平居中。因为它们位于单独的行中,所以您可以根据需要调整 margins/padding(默认情况下,它们的卡片最终垂直相邻。
Example screenshot of the above code in bootstrap
你可以用一行+一列和一个内部 flexbox 来实现这一点,但这会让你无法控制各个卡片相对于彼此的显示方式。
编辑:d-flex 使容器成为围绕其子行的弹性容器,而 flex-column 使子项垂直而不是水平呈现和拉伸。
最简单的解决方案是将 行的高度设为 50%...
<body style="height: 100vh;">
<div class="container h-100">
<div class="row h-100 justify-content-center align-items-center">
<div class="col-6">
<div class="card">
hello
</div>
</div>
</div>
<div class="row h-100 justify-content-center align-items-center">
<div class="col-4">
<div class="card">
world
</div>
</div>
</div>
</div>
</body>
演示:https://www.codeply.com/go/7POJtgNaQI
或者, flexbox 方法将使用 Bootstrap flex-grow-1 class.此外,您不需要 body 上的高度。只需在容器上使用 min-vh-100
...
<div class="container d-flex flex-column min-vh-100">
<div class="row flex-grow-1 justify-content-center align-items-center">
<div class="col-6">
<div class="card">
hello
</div>
</div>
</div>
<div class="row flex-grow-1 justify-content-center align-items-center">
<div class="col-4">
<div class="card">
world
</div>
</div>
</div>
</div>