Как центрировать изображение по горизонтали и выровнять его по дну контейнера?

Как я могу центрировать изображение по горизонтали и одновременно выровнять его по дну контейнера?

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

Вот что у меня есть:

.image_block {
    width: 175px;
    height: 175px;
    position: relative;
    margin: 0 auto;
}
.image_block a img {
position: absolute;
bottom: 0;
}

<div class = "image_block">
    <a href = "..."><img src = "..." border = "0"></a>
</div>

Этот код выравнивает изображение по нижней части div. Что мне нужно добавить / изменить, чтобы он также центрировал изображение по горизонтали внутри div? Размер изображения заранее неизвестен, но он будет 175x175 или меньше.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в 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. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
40
0
122 429
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Удалите строку position: relative;. Я не уверен, почему именно, но это исправляет это для меня.

Позиция: relative в содержащем элементе требуется для абсолютного позиционирования элемента внутри него.

Zack The Human 18.11.2008 22:57

не стал бы

margin-left:auto;
margin-right:auto;

добавил в .image_block изображение для решения проблемы?
Обратите внимание, что это не будет работать в IE6 (возможно, 7 не уверен)
там надо будет делать на .image_block контейнер Div

text-align:center;

position:relative; тоже может быть проблемой.

Ответ принят как подходящий
.image_block    {
    width: 175px;
    height: 175px;
    position: relative;
}

.image_block a  {
    width: 100%;
    text-align: center;
    position: absolute;
    bottom: 0px;
}

.image_block img    {
/*  nothing specific  */
}

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

Таким образом, элемент <a> будет расположен относительно .image_block, что даст нам выравнивание по нижнему краю. затем мы text-align: center элемент <a> и даем ему 100% ширину, чтобы он был размером с .image_block.

<img> в <a> затем отцентрируется соответствующим образом.

Огромное спасибо. Это отлично работает в FF, IE6, IE7 и Chrome.

Echo says Reinstate Monica 18.11.2008 23:03

ты пробовала:

.image_block{
text-align: center;
vertical-align: bottom;
}

Это сложно; Причина сбоя в том, что вы не можете позиционировать с помощью полей или выравнивания текста при абсолютном позиционировании.

Если изображение находится в блоке только одно, я рекомендую что-то вроде этого:

.image_block {
    width: 175px;
    height: 175px;
    line-height: 175px;
    text-align: center;
    vertical-align: bottom;
}

Вместо этого вам может потребоваться прикрепить вызов vertical-align к образу; не совсем уверен без тестирования. Однако использование vertical-align и line-height будет относиться к вам намного лучше, чем попытки возиться с абсолютным позиционированием.

Это тоже работает (подсказка из этого вопрос)

.image_block {
  height: 175px;
  width:175px;
  position:relative;
}
.image_block a img{
 margin:auto; /* Required */
 position:absolute; /* Required */
 bottom:0; /* Aligns at the bottom */
 left:0;right:0; /* Aligns horizontal center */
 max-height:100%; /* images bigger than 175 px  */
 max-width:100%;  /* will be shrinked to size */ 
}

Я очень предпочитаю этот ответ. Очень хорошо.

Michael P. 14.10.2015 22:31
#header2
{
   display: table-cell;
   vertical-align: bottom;
   background-color:Red;
}


<div style = "text-align:center; height:300px; width:50%;" id = "header2">
<div class = "right" id = "header-content2">
  <p>this is a test</p>
</div>
</div>

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