在引导4中垂直对齐中心

我试图用Bootstrap 4在页面中间居中我的容器。到目前为止我还没有成功。任何帮助都将不胜感激。

我已经在Codepen.io建立了它,所以你们可以玩它,让我知道什么工作,因为我的想法……

var currentAuthor = "";
var currentQuote  = "";
function randomQuote() {
$.ajax({
url: "https://api.forismatic.com/api/1.0/?",
dataType: "jsonp",
data: "method=getQuote&format=jsonp&lang=en&jsonp=?",
success: function( response ) {
$("#quote-content").html('<h2 id="quote-content" class="display-5"><i class="fa fa-quote-left" aria-hidden="true"> ' + response.quoteText + ' <i class="fa fa-quote-right" aria-hidden="true"></i></h2>');
$("#quote-author").html('<p id="quote-author" class="lead"><em>' + response.quoteAuthor + '</em></p>');
        

currentAuthor = response.quoteAuthor;
currentQuote  = response.quoteText
}
});
}


function openURL(url){
window.open(url,'Share', 'width=550, height=400, toolbar=0, scrollbars=1 ,location=0 ,statusbar=0,menubar=0, resizable=0');
}


function tweetQuote(){
openURL('https://twitter.com/intent/tweet?hashtags=quotes,freecodecamp&related=freecodecamp&text=' + encodeURIComponent('"' + currentQuote + '" - ' + currentAuthor));
}


$(document).ready(function () {
randomQuote();


$("#get-another-quote-button").click(function(){
randomQuote();
});


$('#tweet').on('click', function() {
tweetQuote();
});
});
html, body {
background-image: url("https://www.mylinea.com/wp-content/uploads/beautiful-trees-stock-photo-055.jpg");
background-color: #17234E;
margin-bottom: 0;
min-height: 30%;
background-repeat: no-repeat;
background-position: center;
-webkit-background-size: cover;
background-size: cover;
}




.btn-new-quote {
color: #0C0C0D;
background-color: transparent;
border-color: #414147;
}


.btn-new-quote:hover {
color: #0C0C0D;
background-color: #9A989E;
border-color: #0C0C0D;
}


#tweet {
color: RGB(100, 100, 100);
}


#tweet:hover {
color: RGB(50, 50, 50);
}




.jumbotron {
position: relative;
top: 50%;
transform: translateY(-50%);
opacity: .85;
border-color:  RGB(50, 50, 50);
padding-bottom: 8px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6/css/bootstrap.min.css">
<div class="container">
<div class="row justify-content-center align-self-center">
<div class="col-sm-6">
<div class="jumbotron vertical-center text-center">
<h2 id="quote-content" class="display-5"><i class="fa fa-quote-left" aria-hidden="true"></i><i class="fa fa-quote-right" aria-hidden="true"></i></h2>
<p id="quote-author" class="lead"><em></em></p>
<hr class="my-2">
<div class="row align-items-center justify-content-between">
<div class="col-sm-1-4 text-left">
<a id="tweet" href="#">
<h2 class="display-4"><i class="fa fa-twitter" aria-hidden="true"></i></h2>
</a>
</div>
<div class="col-sm-1-4 text-right">
<button id="get-another-quote-button" type="button" class="btn btn-outline-secondary  btn-new-quote">Don't Quote Me on This...</button>
</div>


</div>
</div>
</div>
</div>
</div>

896510 次浏览

你可以通过使父容器伸缩并添加align-items:center来垂直对齐你的容器:

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

< a href = " http://codepen。io/anon/pen/ggEvQR" rel="noreferrer">Updated pen .

.jumbotron {
position: relative;
top: 50%;
transform: translateY(-50%);
}

< >强重要!< / >强 垂直中心相对于父元素的高度

如果你试图居中的元素的父元素没有定义 height没有一个的垂直定心解决方案将工作!

现在,垂直居中…

引导5(更新2021年)

引导带5仍然是基于flexbox的,因此垂直居中的工作方式与引导带4相同。例如,align-items-centerjustify-content-center或auto margin可以在flexbox父元素(rowd-flex)上使用。

  • 在flexbox的父行上使用align-items-center (rowd-flex)
  • 在flexbox父列上使用justify-content-center (d-flex flex-column)
  • 在flexbox父节点上使用my-auto

Vertical Center in Bootstrap 5


引导4

你可以使用新的flexbox,公用事业规模使container成为全高度和display: flex。这些选项不需要额外的CSS(除了容器的高度(如:html,body)必须为100%)。

选项1 align-self-center在flexboxchild

<div class="container d-flex h-100">
<div class="row justify-content-center align-self-center">
I'm vertically centered
</div>
</div>

https://codeply.com/go/fFqaDe5Oey

选项2 align-items-center在flexbox父 (.rowdisplay:flex; flex-direction:row)

<div class="container h-100">
<div class="row align-items-center h-100">
<div class="col-6 mx-auto">
<div class="jumbotron">
I'm vertically centered
</div>
</div>
</div>
</div>

enter image description here

https://codeply.com/go/BumdFnmLuk

选项3 justify-content-center在flexbox父 (.carddisplay:flex;flex-direction:column)

<div class="container h-100">
<div class="row align-items-center h-100">
<div class="col-6 mx-auto">
<div class="card h-100 border-primary justify-content-center">
<div>
...card content...
</div>
</div>
</div>
</div>
</div>

https://codeply.com/go/3gySSEe7nd


更多关于Bootstrap 4垂直定心

现在Bootstrap 4提供了flexbox和其他实用程序,有很多方法来垂直 对齐。http://www.codeply.com/go/WG15ZWC4lf < / p >

1 -垂直中心使用自动边距:

另一种垂直居中的方法是使用my-auto。这将使元素在容器中居中。例如,h-100使行全高,而my-auto将垂直居中col-sm-12列。

<div class="row h-100">
<div class="col-sm-12 my-auto">
<div class="card card-block w-25">Card</div>
</div>
</div>

垂直中心使用自动边距Demo

my-auto表示垂直y轴上的边距,等价于:

margin-top: auto;
margin-bottom: auto;

2 -垂直中心与Flexbox:

vertical center grid columns

由于Bootstrap 4 .row现在是display:flex,你可以简单地在任何列上使用align-self-center来垂直居中…

       <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>

或者,在整个.row上使用align-items-center来垂直居中对齐一行中的所有col-*

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

垂直中心不同高度列Demo

看到这个Q/ a居中,但保持相等的高度


3 -垂直中心使用显示Utils:

Bootstrap 4有显示跑龙套,可用于display:tabledisplay:table-celldisplay:inline等。它们可以与垂直对齐utils一起使用来对齐内联、内联块或表单元格元素。

<div class="row h-50">
<div class="col-sm-12 h-100 d-table">
<div class="card card-block d-table-cell align-middle">
I am centered vertically
</div>
</div>
</div>

垂直中心使用显示Utils Demo

< p > 更多的例子 < br > <div>中的垂直中心图像 < br > 容器中垂直居中。排 < br > <div>中的垂直中心和底部 < br > 垂直中心的子在父内 < br > 垂直中心全屏大屏幕 < / p >

< >强重要!< / >强 我提到身高了吗?

记住,垂直居中是相对于父节点的高度元素的。如果你想在整个页面居中,在大多数情况下,这应该是你的CSS…

body,html {
height: 100%;
}

或者在父/容器上使用min-height: 100vh (Bootstrap 4.1+中的min-vh-100)。如果要将子元素置于父元素的居中。父类必须有已定义的高度

< p >也看到:< br > 自举4中的垂直对齐 < br > 引导中心垂直和水平对齐 < / p >

在引导4 (beta)中,使用align-middle。参考关于垂直对齐的引导4文档:

使用vertical-alignment改变元素的对齐方式 实用工具。请注意,垂直对齐只影响内联inline-blockinline-table表格单元元素。

选择.align-baseline.align-top.align-middle.align-bottom

. .align-text-bottom.align-text-top

跟随引导课程帮助我解决了这个问题

<div class="col text-center justify-content-center align-self-center">
<img width=3rem src=".." alt="...">
</div>

Bootstrap 4.1.3中:

当我试图在container > row > column旁边的h1标题中居中引导徽章时,这为我工作。

工作的是一些简单的css:

.my-valign-center {
vertical-align: 50%;
}

<span class="badge badge-pill" style="vertical-align: 50%;">My Badge</span>

因为以上这些对我都没用,所以我再加上一个答案。

目标:使用bootstrap 4 flexbox类在页面上垂直和水平对齐div。

第一步:将最外层的div设置为100vh的高度。这将高度设置为Veiwport高度的100%。如果你不这么做,其他什么都不管用。将它设置为100%的高度只相对于父类,所以如果父类不是视口的全高,什么都不会起作用。在下面的例子中,我将Body设置为100vh。

步骤2:将容器div设置为具有d-flex类的flexbox容器。

步骤3:将div与justify-content-center类水平居中。

第四步:将div与align-items-center垂直居中

第五步:运行页面,查看垂直和水平居中的div。

注意,在居中的div本身(子div)上没有需要设置的特殊类。

<body style="background-color:#f2f2f2; height:100vh;">


<div class="h-100 d-flex justify-content-center align-items-center">
<div style="height:600px; background-color:white; width:600px;">
</div>


</div>


</body>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<div class="row align-items-center justify-content-center" style="height:100vh;">
<div>Center Div Here</div>
</div>
</div>
</body>
</html>

/*你必须添加高度100vh */

中心
<div class="col-lg-5 col-sm-5 offset-1 d-flex">
<div class="offer-txt justify-content-center align-self-center">
<span class="inner-title">Our Offer</span>
<h2 class="section-title">Today’s Special </h2>
<p>One morning, when Gregor Samsa woke from troubled dreams, he found himself transformed in his bed into vermin. He lay on his armour-like back, and if he lifted his head a little he could see his brown belly.</p>
</div>
</div>

enter image description here

我用Bootstrap 4.3.1这样做:

<div class="d-flex vh-100">
<div class="d-flex w-100 justify-content-center align-self-center">
I'm in the middle
</div>
</div>

我已经尝试了这里所有的答案,但发现这里是< em > h - 100 < / em >vh - 100之间的区别 这是我的解决方案:

      <div className='container vh-100 d-flex align-items-center col justify-content-center'>
<div className="">
...
</div>
</div >


在div上使用.my-auto (bootstrap4) css类

<div class="row">
<div class="col-md-6">
<img src="/assets/images/ebook2.png" alt="" class="img-fluid">
</div>
<div class="col-md-6 my-auto">
<h3>Heading</h3>
<p>Some text.</p>
</div>
</div>

这一行是魔术发生的地方<div class="col-md-6 my-auto">my-auto将列的内容居中。在上面的代码示例中,您可能有一个可变大小的图像,并且需要将列中的文本与它对齐。

将你的内容放在一个100%高的flexbox容器中,即h-100。然后使用justify-content-center类集中证明内容。

<section class="container h-100 d-flex justify-content-center">
<div class="jumbotron my-auto">
<h1 class="display-3">Hello, Malawi!</h1>
</div>
</section>

使用这个引导4个类:

Method1:

父:d表

子元素:d-table-cell &align-middle,text-center

例如:

<div class="tab-icon-holder d-table bg-light">
<div class="d-table-cell align-middle text-center">
<img src="assets/images/devices/Xl.png" height="30rem">
</div>
</div>

如果你想让父母圆:

<div class="tab-icon-holder d-table bg-light rounded-circle">
<div class="d-table-cell align-middle text-center">
<img src="assets/images/devices/Xl.png" height="30rem">
</div>
</div>

这两个自定义CSS类如下:

.tab-icon-holder {
width: 3.5rem;
height: 3.5rem;
}
.rounded-circle {
border-radius: 50% !important
}

最后的用法可以是这样的:

<div class="col-md-5 mx-auto text-center">
<div class="d-flex justify-content-around">
<div class="tab-icon-holder d-table bg-light rounded-circle">
<div class="d-table-cell align-middle text-center">
<img src="assets/images/devices/Xl.png" height="30rem">
</div>
</div>


<div class="tab-icon-holder d-table bg-light rounded-circle">
<div class="d-table-cell align-middle text-center">
<img src="assets/images/devices/Lg.png" height="30rem">
</div>
</div>


...


</div>
</div>

< >强Method2: 你可以使用以下:

父项:h-100 d-table mx-auto

d-table-cell align-middle

Method3:

你可以使用以下方法:

父项:d-flex align-items-center

如果你想让内容水平居中:

父级:d-flex align-items-center justify-content-center

在Bootstrap 5中我们可以很容易地做到这一点。下面是一个对齐卡片的例子。我们只需要设置卡片宽度,然后其余设置都是使用bootstrap 5类。

<div class="container d-flex vh-100">
<div class="row mx-auto">
<div class="col align-self-center p-4">
<div class="card rounded-3 shadow-sm p-3" style="width:400px">
<div class="card-body">
<h1>I'am centered vertically and horizontally</h1>
</div>
</div>
</div>
</div>
</div>

使用引导版本5或更高版本,使用下面的代码将内容水平和垂直居中。

<div class="vh-100 d-flex justify-content-center align-items-center">
<h1>Centered horizontally and vertically!</h1>
</div>

enter image description here

对于所有引导版本2,3,4和5,只有两个自定义类适用于任何高度和宽度。

enter image description here

.d_tbl{
display:table;
width:100%;
height:200px;
}


.d_tblCel{
vertical-align: middle;
display: table-cell;
text-align: center;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>


<div class="container">
<div class="d_tbl" style="background-color:antiquewhite">
<div class="d_tblCel">
<h3>Centered horizontally and vertically</h3>
<p>for all bootstrap versions with only two custom classes</p>
</div>
</div>
</div>


</body>
</html>

Bootstrap 5和blazor web组件:

<div class="d-flex align-items-center justify-content-center min" style="height: 50vh">
<button class="btn btn-outline-success mx-2">Register</button>
<button class="btn btn-outline-primary mx-2" style="width:123.44px">Login</button></div>

enter image description here