使用 Bootstrap 在背景上垂直居中卡片

Posted

技术标签:

【中文标题】使用 Bootstrap 在背景上垂直居中卡片【英文标题】:Center card vertically on background using Bootstrap 【发布时间】:2019-05-31 18:33:18 【问题描述】:

只是为了在标记为转帖之前说清楚, 这一切都不起作用: How to center cards in bootstrap 4? How to align an image dead center with bootstrap Centering the image in Bootstrap How can I center an image in Bootstrap? How do I center an image in Bootstrap? How to align a <div> to the middle (horizontally/width) of the page How to horizontally center a <div>?

话虽如此,我的问题很简单,我有两个 div,背景 div 和 bootstrap 中的卡片 div。 mx-auto 将垂直居中很好,但无法从卡顶部解开。这样我在卡的上方和下方也有空间。我已经尝试了所有 m 和 p 类。以及自定义类。有人可以帮我吗。我希望我的卡片位于屏幕中间。

<div class="bg">
<div class="card card-design success-design mx-auto">
<div class="card-body">

现在看起来像这样:

ooooxxxoooo
ooooxxxoooo
ooooooooooo
ooooooooooo

我想要:

ooooooooooo
ooooxxxoooo
ooooxxxoooo
ooooooooooo

【问题讨论】:

你的“图像”表明你想垂直居中,但你说的是“水平”。 嗯,这是语言的极限,我想了想,似乎两者都可以同时为真 【参考方案1】:

如果您使用的是Bootstrap 4,那么您应该使用它的实用程序类。

只需将d-flex justify-content-center align-items-center 类添加到根div,其内容将水平和垂直居中:

.bg 
  background-color: #fff0f0;
  width: 300px;
  height: 300px;


.card 
  width: 50%;
  height: 50%;
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"/>

<div class="bg d-flex justify-content-center align-items-center">
  <div class="card">
    <div class="card-header">My card</div>
    <div class="card-body">Some text</div>
  </div>
</div>

【讨论】:

【参考方案2】:

试试这个:

body, html 
  height: 100%;


h3, h4, p, a, label 
        color: #001f3f;


.bg 
  /* The image used */
  background-image: url('exemple.png');

  /* Full height */
  height: 100%;

  /* Center and scale the image nicely */
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
  /* i added following code */
  display:flex;
  justify-content:center;
  align-items:center;


.card-design 
        background-color: rgba(245, 245, 245, 0.7);
        width: 23rem;
        font-family: 'Roboto', sans-serif;
        font-weight: 300;
        border-radius: 0 !important;


.success-design 
        background-color: rgba(245, 245, 245, 0.8);


.nbr-apt 
        font-size: 220%;
        font-weight: 100;


.rdv 
        font-size: 160%;


.num 
        font-weight: bold;
<body>
        <div class="bg">
                <div class="card card-design success-design mx-auto">
                        <div class="card-body">
                        <h3 class="card-title"> bla bla bla</h3>
                        <h4 class="card-subtitle mb-2 text-muted"> bla bla bla</h4>
                        <h4 class="card-subtitle mb-2 text-muted"> bla bla blam</h4>
                        <br>
                        <br>
                        <p class="card-text nbr-apt">Merci bla bla bla</p>
                        </div>
                </div>
        </div>
  </body>

【讨论】:

带有 3 行代码。我在.bg 中添加了我在那里展示的内容。【参考方案3】:

您可能需要使用一些 CSS 来让主体拉伸到全高,这样您就可以将卡片居中,这是使用 flexbox 的示例

html, body 
	height: 100%;


body 
	margin: 0;
	display: flex;
	align-items: center;
	justify-content: center;


.card 
	padding: 1rem;
	border: 1px solid;
&lt;div class="card"&gt;I am a card&lt;/div&gt;

【讨论】:

谢谢,这使我的背景图像不再显示在卡片之外。但是卡片仍然贴在顶部。 您能提供一个代码示例吗?也许是代码笔。这将有助于更好地理解问题 这是一个codepen,但生成的显示当然是错误的codepen.io/ilanoh/pen/rodvVM

以上是关于使用 Bootstrap 在背景上垂直居中卡片的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Bootstrap 4 中垂直居中 div? [复制]

Bootstrap 4的垂直居中形式[重复]

根据前一个垂直居中Bootstrap 3列[重复]

如何在Bootstrap中垂直居中未知高度的浮动元素?

Twitter Bootstrap:轮播:在定义高度视口中垂直居中图像

使用 Bootstrap 和 IE 修复垂直居中 div