Первое: несколько ошибок в вашем коде
Кажется, что у вас нет элемента с ID="div"
, но вы используете его во всех селекторах CSS как первыйelement.
Ваш последний селектор CSS, который должен стилизовать ваш IMG
элемент, не встречается, поскольку у вас в нем DIV
слишком много.
IMG
элемент не определяет атрибут href
, а скорее src
Второе: решение без сценариев, поддерживающее динамические измерения
Я упростилВаш HTML и немного изменил CSS, чтобы сделать все это более очевидным здесь JSFiddle .Все элементы DIV и IMG имеют произвольные размеры, поэтому стили не зависят ни от одного из своих размеров.
Вот код:
HTML
<!-- dimensions are set inline to make them of different size -->
<div class="container" style="height: 100px; width: 250px;">
<a href="#">
<img src="img111.png" />
</a>
</div>
<div class="container" style="height: 120px; width: 150px;">
<a href="#">
<img src="img222.png" />
</a>
</div>
CSS
.container {
border: 2px solid #c00;
display: table;
}
.container a {
border: 2px solid #f90;
display: table-cell;
text-align: center;
vertical-align: middle;
}
.container a img {
border: 2px solid #9cf;
background: #eee;
padding: 2px;
}
Поддержка браузера
display
типы, которые я использовал, поддерживаются в большинстве современных браузеров, за исключением (конечно) в IE, где вам понадобится как минимум версия 8. Все, что старше предположительно не поддерживает их.