2013-03-22 3 views
1

Вот jsFiddle. Как можно вертикально центрировать img и div внутри td, без использования абсолютных значений (т. Е. px))?Вертикальное выравнивание нескольких объектов в ячейке таблицы

Чистое решение для CSS оценивается. Благодарю.

+0

вам нужно будет установить ширину на div, иначе она будет нажата под img – 97ldave

ответ

0

Как это ?:

http://jsfiddle.net/Mgwzx/10/

<div style="width:100%; height:60px; position:relative; overflow:visible;"> 
    <table style="width:400px; table-layout:fixed" cellspacing="0" cellpadding="0"> 
     <tr> 
      <td style="vertical-align: middle; width:200px;"> 
       <img align="left" src="http://upload.wikimedia.org/wikipedia/donate/c/c0/Information-icon.png" style="float:left;margin-top:50px;" /> 
       <div style="text-align:center; float:left; width:150px;">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat</div> 
      </td> 
     </tr> 
    </table> 
</div> 
+0

Извините, но я не хочу устанавливать любые размеры, например 'width: 150px'. Является ли это возможным? –

+1

Возможно, но не совсем. Divs предназначены для растягивания, чтобы заполнить всю доступную ширину, если вы не обозначили их ширину. Это вызовет длинный текст внутри этого div, чтобы сначала растянуть div до его появления на новой строке с изображения, чем до полного заполнения родительской строки, и только после этого текстовая строка сломается. Возможно, что вы хотите достичь желаемого макета - это вложить в таблицу еще одну таблицу? – invertedSpear

0

Если вы не против установки значок информации в качестве фона для TD, я хотел бы попробовать это: jsFiddle

td { 
    background: url('http://upload.wikimedia.org/wikipedia/donate/c/c0/Information-icon.png') no-repeat left center; 
    padding-left: 20px; 
} 

Мы знаем, что ширина значка 20px, поэтому, установив фоновое изображение на no-repeat и применив padding-left: 20px к TD, правильно замаскирует его и не перекрывается. И, установив фоновое положение left center, оно останется вертикально по центру.

Смежные вопросы