2013-08-02 2 views
1

Я пытаюсь горизонтально центрировать изображение. Однако он не перемещается с левой стороны страницы. This answer не работает в моем случае. Что я делаю не так?Центр изображения

#container {     
     width: 100%;   
     border: 2px yellow dashed; 
     height: 100px; 
} 

#profile-image img{ 
    margin-left: auto; 
    margin-right: auto; 
    border: 2px orange solid; 
} 

MyPage:

<div id="container"> 
      <div id="profile-image"> 
       <p><img src="<?php echo $data['profile_image_url'];?>" alt="me"></p> 
      </div> 

ответ

2

сделать любой DIV или что-нибудь по горизонтали в центре, общий CSS подход будет, позволяет иметь ширину и объявить margin:0 auto;

#profile-image{ 
    width:400px; 
    margin:0 auto; 
} 
+0

+1 Спасибо. Это сработало. – Anthony

+1

хотя проблема с этим подходом заключается в том, что вы должны явно назначить ширину контейнера. – reikyoushin

2

Попробуйте это: http://jsfiddle.net/rua4d/2/

#container {     
    width: 300px;   
    border: 2px yellow dashed; 
    height: 100px; 
    display:table-cell; 
    position:relative; 
    vertical-align:middle; 
} 


#profile-image img{ 
    margin-left: auto; 
    margin-right: auto; 
    border: 2px orange solid; 
    display:block; 
    position:relative; 
    vertical-align:middle; 
    text-align:center; 
    width:50px; 
} 
+0

Почему 'вертикального выравнивания: средний; 'на блочном элементе? – VoidKing

+0

+1 Спасибо, очень полезный ответ. – Anthony

1

Вам нужно просто добавить

display:block
к стилю своего изображения. Изображения являются встроенными элементами, а встроенные элементы игнорируют поля.

1

Почему эта работа не работает?

#profile-image p { text-align: center; } 
#profile-image img { display: inline; } 

таким образом вам не нужно будет указывать ширину .. если вы хотите поля, чтобы работать вместе с text-align: center вам нужно будет inline-block вместо:

#profile-image p { text-align: center; } 
#profile-image img { display: inline-block; } 
+0

+1 Да! Это отлично! Хотя пример @ RitabrataGautam работал для моего изображения (размер этого изображения никогда не изменится - его 48px на 48 пикселей) мой текст под изображением изменится по длине, и ваше решение отлично работает! Спасибо, много! – Anthony

+1

без проблем. Элементы встроены по умолчанию .. так что вы можете «text-align: center» их .. Я пришел к выводу, что вам нужна ширина и т. Д., И чтобы заставить их работать, вы сделали их как «block», но это сократило бы текст -align. Так что вам действительно нужно изображение - это 'display: inline-block', который имеет оба. – reikyoushin

+1

, и я использую только «margin: 0 auto;», когда я уверен, что контейнер будет иметь пользовательский интерфейс, например, для внешнего элемента оболочки. – reikyoushin