Горизонтальное выравнивание двух изображений

[введите описание изображения][1]На своем веб-сайте я планирую разместить два изображения, но не могу выровнять их по вертикали. Пробовал line-height и вертикальное выравнивание. но я не могу понять, где я ошибся или каких кодов мне не хватает.

.logo img {
  height: 150px;
  width: 150px;
  margin: 20px;
  padding: 3px;
  margin-top: 10px;
  vertical-align: middle;
}

.logo2 img {
  height: 150px;
  width: 150px;
  margin: 20px;
  padding: 3px;
  margin-top: 10px;
  vertical-align: middle;
}
<div class = "main">
  <nav>
    <a href = "guest_login.php" class = "logo">
      <img src = "images/guesticon.png">
      <h2 class = "name">GUEST</h2>
    </a>

    <a href = "officer_login.php" class = "logo2">
      <img src = "images/policeicon.png">
      <h2 class = "name">ADMIN</h2>
    </a>

https://jsfiddle.net/04bup35k/

это результат, которого я хочу достичь [1]: https://i.stack.imgur.com/9cpk8.png

Пожалуйста, добавьте к нему больше деталей. В каком аспекте вы пытаетесь выровнять их по вертикали? Высота родительского элемента рассчитывается по размеру содержимого. естественно, вы не можете вертикально выровнять элемент внутри контейнера, высота которого не выше содержимого.

tacoshy 13.04.2023 15:46

Добавьте изображение/черновик окончательного результата, которого вы хотите достичь.

Newbee 13.04.2023 16:04

@Newbee, извините, если мне не хватило подробностей, я отредактирую свой пост о результате, которого я хочу достичь.

Hyun 13.04.2023 16:10

Используйте flex-box.

0stone0 13.04.2023 16:11

Это вертикальное выравнивание? или горизонтальное выравнивание? выходное изображение находится рядом друг с другом (горизонтально), но в вашем вопросе «вы не можете выровнять их по вертикали»?

Newbee 13.04.2023 16:15

Отвечает ли это на ваш вопрос? Как разместить 2 изображения рядом в html?

0stone0 13.04.2023 16:16

@Newbee, я имею в виду горизонтальное, извините за ошибку

Hyun 13.04.2023 16:22
Улучшение производительности загрузки с помощью 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
7
81
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Чтобы выровнять два изображения по горизонтали, вы можете использовать display: flex; на nav.

.logo img {
  height: 150px;
  width: 150px;
  margin: 20px;
  padding: 3px;
  margin-top: 10px;
  vertical-align: middle;
}

.logo2 img {
  height: 150px;
  width: 150px;
  margin: 20px;
  padding: 3px;
  margin-top: 10px;
  vertical-align: middle;
}

.logo,
.logo2 {
 text-align: center;
}


nav {
  display: flex;
  align-items: center;
  justify-content: center;
}
<div class = "main">
  <nav>
    <a href = "guest_login.php" class = "logo">
      <img src = "images/guesticon.png">
      <h2 class = "name">GUEST</h2>
    </a>

    <a href = "officer_login.php" class = "logo2">
      <img src = "images/policeicon.png">
      <h2 class = "name">ADMIN</h2>
    </a>
  </nav>
</div>

.logo-container {
    display: flex;
    align-items: center;
    /* add any other styles you need */
}
<a href = "guest_login.php" class = "logo">
  <div class = "logo-container">
    <img src = "images/guesticon.png">
    <h2 class = "name">GUEST</h2>
  </div>
</a>

<a href = "officer_login.php" class = "logo2">
  <div class = "logo-container">
    <img src = "images/policeicon.png">
    <h2 class = "name">ADMIN</h2>
  </div>
</a>

Будет ли это то, что вы ищете?

.logo img {
   height: 150px;
   width: 150px;
   margin: 20px;
   padding: 3px;
   margin-top: 10px;
   vertical-align: middle;
  }

.logo2 img{
   height: 150px;
   width: 150px;
   margin: 20px;
   padding: 3px;
   margin-top: 10px;
   vertical-align: middle;
}

.logo {
  display: inline-block;
}

.logo2 {
  display: inline-block;
}

это не выравнивает изображения по вертикали. Кроме того, он плохо закодирован, он повторяется, поскольку и логотипы, и изображения внутри логотипов имеют одни и те же свойства и значения. Тогда их следует объединить. Тем не менее, они изменили вопрос в соответствии с комментариями. В первую очередь речь не идет о вертикальном выравнивании.

tacoshy 13.04.2023 16:27

Как предлагает @tacoshy, вы должны уточнить свою проблему. Что вы имеете в виду под выравниванием их по вертикали?

Обновлено: Хм, кажется, @Kameron лишила меня награды, дав законный ответ. Я также поддерживаю его ответ.

Старый ответ: Ну, я предполагаю, что вы пытались выровнять их в x направлении. Ожидаемое поведение не может быть достигнуто с помощью vertical-align. Вместо этого вы можете использовать макеты CSS, такие как CSS Flexbox или Grid для достижения этой цели. Я буду использовать для этого Flexbox, потому что он гибкий в использовании.

Прежде всего, вы должны сделать родителем этих изображений flex. Так:

nav {
  display: flex;
}

Оба изображения уже должны были быть выровнены по вертикали.

БОНУС:

Вы не следуете лучшим практикам создания навигации. Сначала создайте неупорядоченный список (ul) и поместите в него два списка (li). Теперь поместите гиперссылки внутри каждого элемента списка. Дайте каждому элементу списка класс logo.

<div class = "main">
  <nav>
    <ul>
      <li class = "logo">
        <a href = "guest_login.php">
          <img src = "images/guesticon.png" />
          <h2 class = "name">GUEST</h2>
        </a>
      </li>

      <li class = "logo">
        <a href = "officer_login.php">
          <img src = "images/policeicon.png" />
          <h2 class = "name">ADMIN</h2>
        </a>
      </li>
    </ul>
  </nav>
</div>

Во-вторых, в CSS вы также можете сократить некоторые избыточные строки кода. Обратите внимание, что к обоим изображениям неоднократно применяются одни и те же стили. Вы можете свернуть его, схватив селектор обоих и применив стили за один раз. Например:

/* This line following styles will make images align vertically. */
nav ul {
  display: flex;
  height: 150px;
}

.logo {
  flex: 1; /* To give them equal amount of free space */
  margin: 20px;
  margin-top: 10px;
  padding: 3px;
}

.logo img {
  width: 150px;
}

В-третьих, вы можете захотеть выровнять заголовок. Вы можете добиться этого, просто добавив text-align: center в стиль вашего заголовка. Например:

.name {
  text-align: cetner;
}

Надеюсь это поможет!

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