2012-05-30 4 views
5

мне нужно рабочее решение сделать Trival задачу центровки изображения с разными размерами, на квадратный DIV, когда поплавок: слева используется для размещения изображений в rows.I использования DIV внутри DIV, чтобы сделать трюк:Изображение центра вертикально и горизонтально внутри DIV с поплавком: слева?

.outer-element{ //wrap tile div 
    display:table-cell; 
    width:300px;height:300px; 
    text-align:center ; 
    vertical-align:middle ; 
    float:left; 
    margin-bottom:15px; 
} 
.inner-element{ //div with image inside 
    display:inline-block; 
} 

BUT Я должен использовать float use: left для внешнего элемента, чтобы помещать изображения в строки, и когда я делаю изображения не центрированными по вертикали (они выровнены по верхней границе div), я пробовал некоторые другие коды CSS, но float: left всегда делает изображения не вертикально центрированными.

+2

Пожалуйста опубликовать демо-версию, в [JS Fiddle] (http://jsfiddle.net), [JS Bin] (http://jsbin.com/) или аналогично показать, с чем вы работаете, и продемонстрировать, что происходит неправильно , –

+0

Float не применяется к ячейкам таблицы. – jasssonpet

+0

должен поставить демо в http://www.jsfiddle.net –

ответ

14

Удалить float:left; из вашего .outer-element как это противоречит как содержимое таблицы в ячейке отображается. Если вам нужно поместить контейнер влево, поместите .outer-element в другой контейнер, который плавает влево.

HTML

<div class="fl"> 
    <div class="outer-element"> 
     <div class="inner-element"> 
      <img src="http://thecybershadow.net/misc/stackoverflow.png" /> 
     </div> 
    </div> 
</div> 

CSS

.fl {float:left;} 
.outer-element{ 
    display:table-cell; 
    width:300px; 
    height:300px; 
    vertical-align:middle; 
    background:#666; 
    text-align:center; 
    margin-bottom:15px; 
} 
.inner-element{ 
    display:inline-block; 
} 

Exmaple: http://jsfiddle.net/xQEBH/17/

Надеется, что это помогает!

+0

rebz это работает как шарм! спасибо – Rorkkkk

+0

Это помогло мне! Спасибо @rebz –

0

попробовать, как этот http://jsfiddle.net/aEfwC/

<div align="center"> 
    <div class="outer-element"> 
    <div class="image"></div> 
</div> 
</div> 


.outer-element 
{ 
    width:300px;height:300px; 
    float:left; 
    background-color:#2a2a2a; 
    position:relative; 
} 
.image 
{ 
width:128px; 
height:128px; 
background:url(http://thecybershadow.net/misc/stackoverflow.png); 
vertical-align:middle; 
background-repeat:no-repeat; 
} 
0

Ваш Css ...

.outer-element{ //wrap tile div 
    display:table-cell; 
    width:300px;height:300px; 
    text-align:center ; 
    vertical-align:middle ; 
    float:left; 
    margin-bottom:15px; 
} 
.inner-element{ //div with image inside 
    display:inline-block; 
} 

Просто добавьте следующее, что вы хотите, чтобы ваши элементы будут размещены слева ...

.outer-element:before{content: "."; height: 0; overflow: hidden; visibility: hidden; float: left;} 

Надеется, что это помогает ....

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