Есть несколько вещей, которые вы можете сделать, но это зависит от специфики проблемы.Несколько вопросов:
- Всегда ли фотография имеет одинаковую высоту?
- Всегда ли есть только одна строка текста, или может быть несколько строк, которые будут обтекать?
- Является ли текст элементом уровня
block
или inline
?
Если фотография всегда одинаковой высоты и имеется только одна строка текста, вы можете установить line-height
изтекст, равный размеру фотографии, а затем установите для фото значение float:left
.
. Если в тексте может быть несколько строк, вам может потребоваться использовать элемент inline-block
и вычислить верхнее поле с помощью javascript..
РЕДАКТИРОВАТЬ: К сожалению, это не может быть сделано с помощью только CSS, так как не допускается вертикальное центрирование на элементах уровня блока.Вот пример, который будет работать с текстом любой длины в div
вместе с фотографией любого размера: http://jsfiddle.net/W7b4U/39/
HTML
<img src="http://placehold.it/100x150">
<div class="align">align this align this align this align this align this align this align this align this align this align this align this align this align this align this align this </div>
CSS
img {float: left;}
Javascript / JQuery
$(document).ready(function() {
var $text = $('.align');
var $img = $('img');
var margin = ($img.outerHeight() - $text.outerHeight()) / 2;
var textPadding = 10;
$text.css({marginTop: margin, marginLeft: $img.outerWidth() + textPadding});
});