Как лучше всего центрировать текст по вертикали с помощью CSS (в моей ситуации)?

Я пытаюсь создать панель навигации, и эта панель навигации должна быть разделена на столбцы с сеткой CSS, чтобы я мог добавлять свои разные ссылки в эти разные блоки. Вот HTML и CSS:

HTML:

<div id = "navbar">
  <div id = "navContainer">
    <a href = "index.html" id = "profile" class = "link">Andreas Nagelgaard</a>
  </div>
</div>

CSS:

#navbar {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 90px;
  border-bottom: 5px solid black;
}

#profile {
  grid-column-start: profile;
}

#navContainer {
  position: relative;
  top: 0;
  left: 0;
  width: 100%;
  height: 90px;
  display: grid;
  grid-template-columns: [profile] 2fr [emptySpace] 3fr [otherone] 1fr [othertwo] 1fr [otherthree] 1fr;
}

.link {
  text-align: center;
  font-size: 1.5em;
  font-weight: bold;
}

Теперь я хочу, чтобы ссылки располагались вертикально по центру панели навигации, и я нашел несколько разных способов: использование flexbox и align-items (это может создать проблемы с интервалом, потому что я хочу иметь пустое место посередине), используя vertical-align: middle и display: table, но это может привести к слишком большому количеству контейнеров. Какое лучшее решение для моей ситуации (без использования flexbox)?

как насчет высоты строки: 90px; ?

Neil Lu 21.03.2022 09:39

flex — новейший подход, таблица использовалась до того, как был изобретен flex, но нет «лучшего» способа

Pete 21.03.2022 11:00
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
2
64
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Используйте Дисплей: гибкий и автоматическое поле по оси Y точно так же, вы можете игнорировать часть пробел: nowrap;, просто чтобы показать вам правильный результат в StackOverflow:

#navbar {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 90px;
  border-bottom: 5px solid black;
}

#profile {
  grid-column-start: profile;
}

#navContainer {
  display: flex;
  position: relative;
  top: 0;
  left: 0;
  width: 100%;
  height: 90px;
  display: grid;
  grid-template-columns: [profile] 2fr [emptySpace] 3fr [otherone] 1fr [othertwo] 1fr [otherthree] 1fr;
}

.link {
  white-space: nowrap;
  margin: auto 5px;
  text-align: center;
  font-size: 1.5em;
  font-weight: bold;
}
<div id = "navbar">
  <div id = "navContainer">
    <a href = "index.html" id = "profile" class = "link">Andreas Nagelgaard</a>
  </div>
</div>
Ответ принят как подходящий

Вы можете добавить высоту строки:

#profile{
  line-height:90px;
}

Здесь вы указываете #profile размер высоты строки, такой же, как высота навигационной панели, поэтому он будет располагаться по центру по вертикали.

Или

#profile{
   margin: auto 0;
}

Вы могли бы сделать это так...

.container {
  height: 100px;
  color: #fff;
  width: 300px;
  margin-left: auto;
  margin-right: auto;
}

.content {
  text-align: center;
  position: relative;
  top: 50%;
  -webkit-transform: translateY(-50%);
  -o-transform: translateY(-50%);
  transform: translateY(-50%);
}
<div class = "container">
  <div class = "content">Everything here will be in the exact center</div>
</div>

Другие вопросы по теме