2014-01-26 3 views
1

У меня есть четыре значка, которые я установил для отображения встроенных строк, и теперь я пытаюсь центрировать список, в котором они содержатся внутри div.Центрирование строки встроенных изображений

Вот HTML:

<div id="social_media"> 
    <ul> 
      <li><a href="http://wwww.facebook.com"><img src="../images/social_media_icons/facebook_icon.png"></a></li> 
      <li><a href="http://wwww.wikia.com"><img src="../images/social_media_icons/wikia_icon.png"></a></li> 
      <li><a href="#"><img src="../images/social_media_icons/rss_icon.png"></a></li> 
      <li><a href="#"><img src="../images/social_media_icons/mail_icon.png"></a></li> 
    </ul> 
</div> 

И CSS:

#social_media 
{ 
    width:220px; 
    margin:10px auto; 
    padding:0 2px; 
} 

#social_media ul li 
{ 
    display:inline; 
    margin:0 3px; 
    list-style-type:none; 
} 

Четыре иконы 48px площади в общей сложности 192px в ширину, и имеет горизонтальную маржу 3px для другого 24px широкого , добавив, что весь список имеет ширину 216 пикселей. В div они содержатся в (social_media) - 220px в ширину с 2px горизонтального дополнения для 216px пространства, в котором список, теоретически, должен идеально вписываться.

Однако, когда я на самом деле это делаю, четвертая иконка попадает в следующую строку, непосредственно под первой. Когда я изменяю 3px на auto, они все вписываются в одну строку, но слишком близко друг к другу. И независимо от того, что я делаю, список выравнивается слева, а не центром, где он должен быть.

Помощь?

ответ

1

Учитывая CSS вы вывесили, вы может забыли о дефолте padding на ul элемента. В большинстве браузеров это 40px. Однако, сбросив это значение, не решает всю проблему, так как реальная проблема заключается в том, что элементы inline уважают пробелы в разметке и генерируют ~2px пробелов при наличии. Это корень проблемы; поэтому я хотел бы взглянуть на this answer, в котором конкретно рассматривается этот вопрос.

Учитывая, что текст не используется, вы можете установить font-size:0 на родительский элемент ul, удалив это пространство. Предполагая, что на самом деле есть текст, вы просто укажете новый дочерний элемент font-size.

EXAMPLE HERE

#social_media ul { 
    padding:0; 
    font-size:0; 
} 

В качестве альтернативы, лучший подход будет фактически удалить пробелы из разметки. Взгляните на разметку в this example.

+0

В верхней части страницы были сброшены маржа и отступы;) Я попытался удалить пробелы как с помощью метода, так и закомментировать его, и хотя оба они успешно сократили пространство между значками до нуля, теперь я не могу получить его узнайте поля 3px (или 3px padding, когда я это пробовал). Тем не менее, _does_, похоже, распознает отладку 2px на div. –

+0

Нет, просто устраивает их по вертикали снова: \ Интересно, могло ли это иметь какое-то отношение к тому, что я использую .png изображения? Они имеют закругленные (т. Е. Прозрачные) углы, но стороны занимают полные 48x48. –

+0

@ZachCox У вас есть пример, где я могу это видеть? URL-адрес или что-то еще? На самом деле это не так в примерах, которые я опубликовал; между элементами все еще существует «3px». –

0

Попробуйте

#social_media ul li img { 
    padding: 3px; 
} 
+0

Ну, конечно, что-то было _something_, но они расположены вертикально, как в блоке. Кроме того, теперь у них теперь все стандартные пули. –

+0

Увеличьте ширину #social_media, чтобы помочь им получить их подряд. –

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