[введите описание изображения][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
Добавьте изображение/черновик окончательного результата, которого вы хотите достичь.
@Newbee, извините, если мне не хватило подробностей, я отредактирую свой пост о результате, которого я хочу достичь.
Используйте flex-box.
Это вертикальное выравнивание? или горизонтальное выравнивание? выходное изображение находится рядом друг с другом (горизонтально), но в вашем вопросе «вы не можете выровнять их по вертикали»?
Отвечает ли это на ваш вопрос? Как разместить 2 изображения рядом в html?
@Newbee, я имею в виду горизонтальное, извините за ошибку
Чтобы выровнять два изображения по горизонтали, вы можете использовать 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, вы должны уточнить свою проблему. Что вы имеете в виду под выравниванием их по вертикали?
Обновлено: Хм, кажется, @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;
}
Надеюсь это поможет!
Пожалуйста, добавьте к нему больше деталей. В каком аспекте вы пытаетесь выровнять их по вертикали? Высота родительского элемента рассчитывается по размеру содержимого. естественно, вы не можете вертикально выровнять элемент внутри контейнера, высота которого не выше содержимого.