Как центрировать абзац по вертикали в div без наложения двух div? - PullRequest
0 голосов
/ 29 декабря 2018

Я не могу понять, как расположить мое имя вертикально в этом разделе.Это должна быть домашняя страница на моем сайте.Предполагается, что div PgOne занимает высоту экрана человека, поэтому имя должно быть в центре div (main), который находится чуть ниже панели навигации в PgOne.

Проблема с решениями, которые работают, заключается в том, что когда окно действительно очень маленькое по вертикали, оно сталкивается с панелью навигации.

Я пробовал это в CSS в .main и .name

flex-grow: 1; 
display: flex; 
align-items: center;

^^ Это работает, но когда окно действительно маленькое по вертикали, оно сталкивается с панелью навигации.

transform: translate(-50%, -50%);
position: absolute;

^^ Это работает, но когда окно действительно маленькое, ониперекрытие.

padding-top: 10%; padding-bottom: 10%;

^^ Не работает.

display: table-cell; 
text-align: center; 
vertical-align: middle;

^^ Не работает.

Вот мой код:

<div class=PgOne>

    <div class="navbar">
        <div>
            <p>HOME</p>
        </div><div>
            <p>ABOUT</p>
        </div><div>
            <p>EXPERIENCE</p>
        </div><div>
            <p>RESUME</p>
        </div><div>
            <p>CONTACT</p>
        </div>
    </div>

    <div class=main>
        <div class="name">
            <p>FirstName<br>LastName</p>
        </div>
    </div>

</div>


CSS

.navbar div {
    margin-top: 13px;
    margin-right: 1%;
    width: 18%;
    font-size: 20px;
    display: inline-block;
    position: relative;
}
.main {
    font-size: 25px;
    margin: 0 auto;
    text-align: center;

    width: 50%;
    transform: translate(-50%, -50%);
    position: absolute;
    top: 50%;
    left: 50%;
    padding: 20px;

    /*flex-grow: 1; 
    display: flex; 
    align-items: center;*/
}

Ответы [ 2 ]

0 голосов
/ 29 декабря 2018

После удаления вашей абсолютной позиции transform я сделал PgOne гибким родителем и добавил min-height: 100vh, полную высоту области просмотра.Затем я применяю flex-grow: 1 к main, инструктируя его занять как можно больше вертикального пространства.Я ничего не добавляю к navbar, поэтому он занимает все оставшееся вертикальное пространство.Чтобы показать, что он занимает правильное пространство и вертикальное центрирование, я добавил цвет фона на main.

http://jsfiddle.net/j8meqtvp/

.PgOne {
  display: flex;
  min-height: 100vh;
  flex-direction: column;
}

.navbar div {
    margin-top: 13px;
    margin-right: 1%;
    width: 18%;
    font-size: 20px;
    display: inline-block;
    position: relative;
}
.main {
    font-size: 25px;
    margin: 0 auto;
    text-align: center;
    width: 50%;
    padding: 20px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    flex-grow: 1;
    background-color: rgba(0, 0, 0, .1);
}
<div class=PgOne>

    <div class="navbar">
        <div>
            <p>HOME</p>
        </div><div>
            <p>ABOUT</p>
        </div><div>
            <p>EXPERIENCE</p>
        </div><div>
            <p>RESUME</p>
        </div><div>
            <p>CONTACT</p>
        </div>
    </div>

    <div class=main>
        <div class="name">
            <p>FirstName<br>LastName</p>
        </div>
    </div>

</div>
0 голосов
/ 29 декабря 2018

Имя вертикально отцентрировано внутри своего контейнера DIV.Вы просто не установили высоту в div (.main), поэтому сам DIV не охватывает всю высоту страницы, если это то, что вам нужно.В моей адаптации вашего кода ниже я использовал calc для высоты (разверните ее, чтобы увидеть ее), но фактический метод зависит от того, что вы действительно хотите / нуждаетесь, то есть от полного кода страницы.

.navbar div {
  margin-top: 13px;
  margin-right: 1%;
  width: 18%;
  font-size: 20px;
  color: white;
  display: inline-block;
  background: #555;
}

.main {
  display: flex;
  justify-content: center;
  height: calc(100vh - 100px);
  background: #eee;
  align-items: center;
  font-size: 75px;
  margin: 0 auto;
}
<div class=PgOne>

  <div class="navbar">
    <div>
      <p>HOME</p>
    </div>
    <div>
      <p>ABOUT</p>
    </div>
    <div>
      <p>EXPERIENCE</p>
    </div>
    <div>
      <p>RESUME</p>
    </div>
    <div>
      <p>CONTACT</p>
    </div>
  </div>

  <div class=main>
    <p>FirstName<br>LastName</p>
  </div>

</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...