在 div 中垂直对齐 [重复]

Posted

技术标签:

【中文标题】在 div 中垂直对齐 [重复]【英文标题】:Vertically aligned in a div [duplicate] 【发布时间】:2017-03-03 19:00:08 【问题描述】:

我很抱歉发布另一个垂直对齐问题,但由于我是一个完全的初学者,我不知道还能做什么。

我有一个全屏背景图像,我想垂直对齐 h1、p 和按钮部分,所以无论屏幕高度是多少,文本块都应该始终居中。我试图通过在该部分添加 margin-top 来实现这一点,但这并不完美。我正在使用 Bootstrap。

这是我的 html

<section id="home">
    <div class="container">
        <div class="row">

            <div class="col-md-6">
                <h1>dolm it</h1>
                <p>Dolm IT is modern design & development agency from Estonia with main focus on complex web systems. We have a really kickass team whose main focus is UI/UX, php, Java, AngularJS, HTML & CSS.</p>
                <button type="button" class="btn btn-default white">more</button>
            </div>
        </div>
    </div>
    <!--end container-->
</section>
<!--end home-->

这是我创建的 CSS:

       #home 
            background: -webkit-linear-gradient( rgba(14, 124, 132, 0.8), rgba(14, 124, 132, 0.8)), url(../img/landing_bg.jpg) no-repeat 0 30% fixed;
            background: linear-gradient( rgba(14, 124, 132, 0.8), rgba(14, 124, 132, 0.8)), url(../img/landing_bg.jpg) no-repeat 0 30% fixed;
            background-size: cover;
            width: 100%;
            height: 100vh;
        

        #home h1 
            color: #ffffff;
            font-family: 'Akrobat-ExtraBold';
            font-size: 4.9rem;
            text-transform: uppercase;
            letter-spacing: 2px;
            margin-bottom: 32px;
        

        #home p 
            color: #ffffff;
            font-family: 'Akrobat-Bold';
            font-size: 1.5rem;
        

        #home .col-md-6 
            margin-top: 200px;
            padding: 130px 0 130px 0;
        

你可以看到测试页面here。感谢您的帮助。

【问题讨论】:

检查这个:***.com/questions/2743989/… 感谢您的回复和链接。我设法实现了我想要的。由于我是新手,我自己找不到这个解决方案。 【参考方案1】:

您可以使用 display:table 或 display:table 和 flex 的混合(如果想法是在几行上缩小 p) example:

#home 
   background: -webkit-linear-gradient( rgba(14, 124, 132, 0.8), rgba(14, 124, 132, 0.8)), url(../img/landing_bg.jpg) no-repeat 0 30% fixed;
   background: linear-gradient( rgba(14, 124, 132, 0.8), rgba(14, 124, 132, 0.8)), url(../img/landing_bg.jpg) no-repeat 0 30% fixed;
   background-size: cover;
   width: 100%;
   min-height: 100vh;/* modified */
   /* added from here ============================ */
   display:flex;
   flex-flow:column;
   align-items:center;
   justify-content:center;
   text-align:center;/* optionnal, but not the job of justify-content *nor align-items */
 
body /* + optionnal*/ , h1, p 
  margin:0;

.container 
  display:table;
  width:1%;/* will shrink to fit the wider content */

 #home h1 
   white-space:nowrap;/* keep it on one line and make container same width */
 
/* ================ end added */
 #home h1 
   color: #ffffff;
   font-family: 'Akrobat-ExtraBold';
   font-size: 4.9rem;
   text-transform: uppercase;
   letter-spacing: 2px;
   white-space:nowrap;
 
 
 #home p 
   color: #ffffff;
   font-family: 'Akrobat-Bold';
   font-size: 1.5rem;
   display:table;
 
 
 #home .col-md-6 
   /* CSS removed here */
 
<section id="home">
  <div class="container">
    <div class="row">

      <div class="col-md-6">
        <h1>dolm it</h1>
        <p>Dolm IT is modern design & development agency from Estonia with main focus on complex web systems. We have a really kickass team whose main focus is UI/UX, PHP, Java, AngularJS, HTML & CSS.</p>
        <button type="button" class="btn btn-default white">more</button>
      </div>
    </div>
  </div>
  <!--end container-->
</section>
<!--end home-->

查看 CSS 中的评论以了解新增或删除的内容:)

对于旧版浏览器,只有 display:table 版本:http://codepen.io/anon/pen/JRwOaV

html 
  height: 100%;
  width: 100%;
  display: table;

body 
  display: table-row;

#home 
  display: table-cell;
  background: -webkit-linear-gradient(rgba(14, 124, 132, 0.8), rgba(14, 124, 132, 0.8)), url(../img/landing_bg.jpg) no-repeat 0 30% fixed;
  background: linear-gradient(rgba(14, 124, 132, 0.8), rgba(14, 124, 132, 0.8)), url(../img/landing_bg.jpg) no-repeat 0 30% fixed;
  background-size: cover;
  width: 100%;
  height: 100vh;
  vertical-align: middle;

body,
h1,
p 
  margin: 0;

#home h1 
  white-space: nowrap;
  /* keep it on one line and make container same width */
  color: #ffffff;
  font-family: 'Akrobat-ExtraBold';
  font-size: 4.9rem;
  text-transform: uppercase;
  letter-spacing: 2px;
  white-space: nowrap;

#home p 
  color: #ffffff;
  font-family: 'Akrobat-Bold';
  font-size: 1.5rem;
  display: table;

#home .col-md-6 
  display: table;
  /* again to shrink content on itself*/
  width: 1%;
  margin: auto;
  text-align: center;
<section id="home">
  <div class="container">
    <div class="row">

      <div class="col-md-6">
        <h1>dolm it</h1>
        <p>Dolm IT is modern design & development agency from Estonia with main focus on complex web systems. We have a really kickass team whose main focus is UI/UX, PHP, Java, AngularJS, HTML & CSS.</p>
        <button type="button" class="btn btn-default white">more</button>
      </div>
    </div>
  </div>
  <!--end container-->
</section>
<!--end home-->

【讨论】:

以上是关于在 div 中垂直对齐 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

垂直对齐另一个div中两个不同div中的文本[重复]

如何左对齐和垂直对齐标题中的图像并将文本水平保持在div的中心[重复]

水平和垂直对齐 Div [重复]

div中的垂直对齐div [重复]

垂直居中和居中对齐文本并为 div 添加边距?我迷路了[重复]

div中的垂直对齐图像[重复]