引导中心垂直和水平对齐

我有一个页面,其中只有形式存在,我想把形式放在屏幕的中心。

<div class="container">
<div class="row justify-content-center align-items-center">
<form>
<div class="form-group">
<label for="formGroupExampleInput">Example label</label>
<input type="text" class="form-control" id="formGroupExampleInput" placeholder="Example input">
</div>
<div class="form-group">
<label for="formGroupExampleInput2">Another label</label>
<input type="text" class="form-control" id="formGroupExampleInput2" placeholder="Another input">
</div>
</form>
</div>
</div>

justify-content-center水平对齐表单,但我不知道如何垂直对齐它。我已经尝试使用align-items-centeralign-self-center,但它不工作。

我错过了什么?

DEMO

633468 次浏览

你需要一些东西来集中你的身体。但是因为你没有为你的html和body指定高度,它只会包装内容——而不是视口。换句话说,没有空间把物品放在中间。

html, body {
height: 100%;
}
.container, .row.justify-content-center.align-items-center {
height: 100%;
min-height: 100%;
}

引导5(更新2021年)

引导带5仍然是基于flexbox的,因此垂直居中的工作方式与引导带4相同。例如,align-items-center (flex-direction: row)和justify-content-center (flex-direction: column)可以在flexbox父类(row或d-flex)上使用。

Bootstrap 5中的定心示例 . b

垂直中心(别忘了父节点必须有一个定义好的高度!):

  • my-auto用于对内部 flex (.d-flex)元素进行居中
  • my-auto可用于中心列 (.col-) 内部 row
  • align-items-center中心列 (col-*) 内部 row

水平中心:

  • text-centerdisplay:inline元素居中列内容
  • mx-auto用于在flex元素内部定心
  • mx-auto可用于row内部的中心列 (.col-)
  • justify-content-center中心列 (col-*)在row

Bootstrap 4.3+(2019年更新)

没有必要对应额外的CSS。什么已经包括在Bootstrap将工作。确保表单的容器为完整的高度。Bootstrap 4现在有一个用于100%高度的h-100类…

垂直中心:

<div class="container h-100">
<div class="row h-100 justify-content-center align-items-center">
<form class="col-12">
<div class="form-group">
<label for="formGroupExampleInput">Example label</label>
<input type="text" class="form-control" id="formGroupExampleInput" placeholder="Example input">
</div>
<div class="form-group">
<label for="formGroupExampleInput2">Another label</label>
<input type="text" class="form-control" id="formGroupExampleInput2" placeholder="Another input">
</div>
</form>
</div>
</div>

https://codeply.com/go/raCutAGHre

物品位于中间的容器高度应为100% (或与居中项相关的任何期望高度)

注意:当在任何元素上使用height:100% (比例高)时,元素接收容器的高度. 0将被删除。在现代浏览器中,vh单位height:100vh;可以代替%来获得所需的高度。

因此,你可以设置html, body {height: 100%},或者在容器上使用新的min-vh-100类而不是h-100


水平中心:

  • text-centerdisplay:inline元素居中列内容
  • mx-auto用于在flex元素内部定心
  • offset-*mx-auto可用于中心列 (.col-)
  • justify-content-center中心列 (col-*)在row

< p > 垂直对齐引导中心 < br > 引导4全屏居中形式 < br > 引导4中心输入组 < br > 引导4水平+垂直中心全屏 < / p >

这对我来说很有用:

<section class="h-100">
<header class="container h-100">
<div class="d-flex align-items-center justify-content-center h-100">
<div class="d-flex flex-column">
<h1 class="text align-self-center p-2">item 1</h1>
<h4 class="text align-self-center p-2">item 2</h4>
<button class="btn btn-danger align-self-center p-2" type="button" name="button">item 3</button>
</div>
</div>
</header>
</section>

Flexbox可以帮助您。信息在这里

<div class="d-flex flex-row justify-content-center align-items-center" style="height: 100px;">
<div class="p-2">
1
</div>
<div class="p-2">
2
</div>
</div>

引导程序具有文本中心来集中文本。例如

<div class="container text-center">

您可以更改以下内容

<div class="row justify-content-center align-items-center">

到以下

<div class="row text-center">

没有一个对我有用。但他的孩子做到了。

因为Bootstrap 4 .row类现在是display:flex,你可以简单地使用新的align-self-center flexbox实用程序在任何列上垂直居中:

<div class="row">
<div class="col-6 align-self-center">
<div class="card card-block">
Center
</div>
</div>
<div class="col-6">
<div class="card card-inverse card-danger">
Taller
</div>
</div>
</div>

我是从https://medium.com/wdstack/bootstrap-4-vertical-center-1211448a2eff中学到的

这是在即11中使用Bootstrap 4.3工作。而在我的情况下,其他答案都不能在IE11中工作。

 <div class="row mx-auto justify-content-center align-items-center flex-column ">
<div class="col-6">Something </div>
</div>

<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


<div class="col-12 border border-info">
<div class="d-flex justify-content-center align-items-center" style="height: 100px">
<a href="#" class="btn btn-dark">Transfer</a>
<a href="#" class="btn btn-dark mr-2 ml-2">Replenish</a>
<a href="#" class="btn btn-dark mr-3">Account Details</a>
</div>
</div>

在CSS中使用此代码:

.container {
width: 600px;
height: 350px;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
display: inline-flex;
}

我来到这里是因为我遇到了Bootstrap 4网格系统和Angular *ngFor循环的问题。我通过对实现ngFor的div应用一个col justify-content-center类来修复它:

<div class="row" style="border:1px solid red;">
<div class="col d-flex justify-content-center">
<button mat-raised-button>text</button>
</div>
<div *ngFor="let text of buttonText" class="col d-flex justify-content-center">
<button mat-raised-button>text</button>
</div>
</div>

给出的结果: enter image description here < / p >

从文档(引导4):

https://getbootstrap.com/docs/4.0/utilities/flex/#justify-content

.justify-content-start
.justify-content-end
.justify-content-center
.justify-content-between
.justify-content-around
.justify-content-sm-start
.justify-content-sm-end
.justify-content-sm-center
.justify-content-sm-between
.justify-content-sm-around
.justify-content-md-start
.justify-content-md-end
.justify-content-md-center
.justify-content-md-between
.justify-content-md-around
.justify-content-lg-start
.justify-content-lg-end
.justify-content-lg-center
.justify-content-lg-between
.justify-content-lg-around
.justify-content-xl-start
.justify-content-xl-end
.justify-content-xl-center
.justify-content-xl-between
.justify-content-xl-around

我看了很多关于在页面中心放置表单的帖子,但没有一个是有效的。下面的代码来自一个使用bootstrap 4.1的react组件。高度应该是100vh,而不是100%

<div className="container">
<div className="d-flex justify-content-center align-items-center" style={height}>
<form>
<div className="form-group">
<input className="form-control form-control-lg" placeholder="Email" type="email"/>
</div>
<div className="form-group">
<input className="form-control form-control-lg" placeholder="Password" type="password"/>
</div>
<div className="form-group">
<button className="btn btn-info btn-lg btn-block">Sign In</button>
</div>
</form>
</div>
</div>

其中身高在风格上为:

const height = { 身高:100 vh } < / p >

我被要求在容器流体内垂直中心显示形式,所以我开发了自己的代码。

<!DOCTYPE html>
<html lang="en">


<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
<style>
.container-fluid
{
display: table-cell;
height: 100vh;
width: 100vw !important;
vertical-align: middle;
border:1px solid black;
}
</style>
</head>


<body>
<div class="container-fluid">
<div class="row">
<div class="col-8 offset-2">
<div class="card shadow">
<div class="card-header bg-danger text-white">
<h2>Login</h2>
</div>


<div class="card-body">
<form action="">
<div class="form-group row">
<label for="txtemail" class="col-form-label col-sm-2">Email</label>
<div class="col-sm-10">
<input type="email" name="txtemail" id="txtemail" class="form-control" required />
</div>
</div>
<div class="form-group row">
<label for="txtpassword" class="col-form-label col-sm-2">Password</label>
<div class="col-sm-10">
<input type="password" name="txtpassword" id="txtpassword" class="form-control"
required />
</div>
</div>
<div class="form-group">
<button class="btn btn-danger btn-block">Login</button>
<button class="btn btn-warning btn-block">clear all</button>
</div>
</form>
</div>
</div>
</div>
</div>
<script src="js/jquery.js"></script>
<script src="js/popper.min.js"></script>
<script src="js/bootstrap.min.js"></script>
</body>


</html>

从bootstrap v5.0开始:

<div class="position-absolute top-50 start-50 translate-middle">
centred
</div>

引导5

body {
display: flex;
align-items: center;
}

https://getbootstrap.com/docs/5.1/examples/sign-in/

在使用v4v5时尝试下面给出的代码。

<div class="d-flex align-items-center justify-content-center" style="height:100vh;">
Vertically and Horizontally Aligned :)
</div>

…或…如果使用v5,可以使用这些类。

<div class="position-absolute top-50 start-50 translate-middle">
Vertically and Horizontally Aligned :)
</div>

这样做,就是这样。

引导的方式

超文本标记语言

 <div class="row top-row">
<div class="col center-text">
<H1>Center Text Horizantally and vertically</H1>
</div>
</div>

自定义CSS

  .top-row{
height: 300px; //It's important to set height
}
.center-text{
display: flex;
align-items: center;
justify-content: center;
}