Запретить div, содержащее изображение, изменять размер при добавлении текста
У меня есть div, центрированный на сайте и содержащий картинку. div расширяет свой height, чтобы соответствовать картине, как и ожидалось. Затем я добавляю текст и ожидаю, что он будет выложен в нижней части div. Но в дополнение к этому div также немного изменяется, так что его height является higher, чем height изображения. Вот пример:
Html:
<div class="siteContent">
<img class="debug" src="../../Content/themes/base/images/pageTitle.png" />
<span>
aaa
</span>
</div>
CSS:
body
{
margin: 0;
}
.siteContent
{
width: 960px;
margin-left: auto;
margin-right: auto;
border: thin solid;
}
.debug
{
border: thin solid;
}
Результат:

Нежелательный эффект отмечен красным цветом.
Я смог чтобы исправить это для IE 8 и Firefox, модифицировав CSS следующим образом:
body
{
margin: 0;
}
.siteContent
{
width: 960px;
margin-left: auto;
margin-right: auto;
border: thin solid;
position: relative;
}
.siteContent span{
position: absolute;
bottom: 0px;
}
.debug
{
border: thin solid;
}
После runnig this я получил правильный результат в Mozilla:

Однако это не работает для Chrome и Safary. Как заставить его работать для всех основных браузеров ?
3 ответов:
Это происходит потому, что изображение выравнивается по базовой линии текста. попробуйте установить
vertical-align: bottomилиvertical-align: text-bottomдля вашего изображения, чтобы решить эту проблему.
Я думаю, что это то, что вы хотите: http://jsfiddle.net/WEF49/3/ Тестировался в IE, chrome и FF. Таким образом, img и span выровнены снизу, а div не имеют дополнительного пространства. Плохая сторона заключается в том, что высота div фиксируется на высоте img. Если вы не возражаете против фиксированной высоты на div, это самое чистое решение.
Html:
<div class="siteContent"> <img class="debug" src="http://t0.gstatic.com/images?q=tbn:ANd9GcRzjvZihxljFMlEt_IOypeOWYCgPgEvVrZ_DnwVTws5uR_iC_oFIg" /> <span> aaa </span> </div>Css:
.siteContent { width: 960px; height: 213px; margin-left: auto; margin-right: auto; border: thin solid; overflow:hidden; } .debug { border: thin solid; }
Попробуйте добавить overflow: hidden в div без высоты +
<span style="clear:both"> aaa </span> + <img src="..." style="clear:both" />Возьмите style= " * " в свой css-файл (ofcource)
Comments