2014-09-05 4 views
0

Я работаю над этим дизайном, и я застрял на этом этапе. Вот моя упрощенная конструкция: jsFiddleМаржа: авто для нескольких встроенных изображений

Как вы можете видеть, у меня есть несколько изображений внутри div. Что мне нужно сделать, чтобы заставить их выглядеть следующим образом:

enter image description here

Таким образом, они имеют авто поля между ними и границы.

Раствор для вертикального выравнивания будет иметь изображения на 50px высоте, так как #container ДИВ имеет фиксированную высоту, или использовать вспомогательный DIV с display: inline-block и vertical-align: middle свойствами, но я не знаю, что делать с горизонтальное выравнивание, так как оно не является фиксированной шириной.

Я пробовал display: block и margin: 0 auto, но это не сработает. Он больше не отображает изображения на одной строке. Есть идеи?

+0

Какие версии IE вам нужны для поддержки? Если IE8 +, то вы можете использовать 'display: table-cell;' – Jongosi

ответ

1

Вы можете сделать изображения встроенными блоками, а затем добавить text-align: center в контейнер. Тогда пространство изображения с некоторыми полями на них, как это:

#container { 
    width: 50%; 
    height: 50px; 
    display: block; 
    margin: auto; 
    border: 1px solid blue; 
    line-height: 50px; 
    text-align: center; 
} 

#container img{ 
    display: inline-block; 
    width: 30px; 
    height: 30px; 
    margin: 0 5%; 
} 

JSFiddle: http://jsfiddle.net/a0n8wm5k/2/

+0

Это фиксированная высота, но мне нужно, чтобы они центрировались по горизонтали. –

+0

Это центрирует их по горизонтали. Маржа только пробегает их. Если вам необходимо центрировать их одинаково без использования поля для интервала, вам нужно будет использовать CSS3, что означает, что определенные версии IE не будут поддерживать его. Вы можете использовать 'table-cell' (как упоминалось ранее) или, возможно, Flexbox - http://css-tricks.com/snippets/css/a-guide-to-flexbox/ – Jon

2

Использование text-align:center на материнской

JSfiddle Demo

CSS

*{ 
    margin: 0px; 
    padding: 0px; 
} 

body, html { 
    width: 100%; 
} 

#container { 
    width: 50%; 
    height: 50px; 
    display: block; 
    margin: auto; 
    border: 1px solid blue; 
    line-height: 50px; 
    text-align: center; 
} 

#container img{ 
    width: 30px; 
    height: 30px; 
    margin: 0 25px; 
    vertical-align: middle; 
} 
0

Поскольку контейнер имеет фиксированную высоту, почему бы не дать каждому img пробел/поле справа?

http://jsfiddle.net/4mk6s1d5/

#container img{ 
    width: 30px; 
    height: 30px; 
    padding-left: 20px; 
    vertical-align: middle; 
} 
0

Вы можете добавить запас налево в CSS, если вам нужно так же, как вы показали на изображении следует увеличить ширину контейнера, как

#container { 
width: 80%; 
height: 50px; 
display: block; 
margin: auto; 
border: 1px solid blue; 
line-height: 50px; 
} 

#container img{ 
margin-left:35px; 
width: 30px; 
height: 30px; 
} 

здесь является сценарий http://jsfiddle.net/a0n8wm5k/7/

2

Вы можете использовать это:

#container { 
    width: 50%; 
    height: 50px; 
    display: block; 
    margin: auto; 
    border: 1px solid blue; 
    line-height: 50px; 
    text-align: center;/*Add text align center*/ 
} 

#container img{ 
    width: 30px; 
    height: 30px; 
    vertical-align: middle;/*Add vertical align middle*/ 

} 
#container img:not(:first-child){ 
    margin-left: 50px;/*Add margin not in first image though*/ 
} 

fiddle

+1

+1 Также стоит отметить, что': not() 'pseudo class не поддерживается в IE 8 и ниже. –

+0

Thx для обратной связи @HashemQolami :) –

0

Вот мои 2 цента стоит, используя table-cell.

Обратите внимание, что я добавил родительский контейнер в центр table-cell. Ваш вопрос специфичен для изображений, поэтому я не думаю, что это проблема?

<div id="parent-container"> 
    <div id="container"> 
     <img src="https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQXxxJ8MNjZZV8-Zzwu_RfL6YnZSt8cY70fyQlgeJwg3H6dLW_m2A" /> 
     <img src="https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQXxxJ8MNjZZV8-Zzwu_RfL6YnZSt8cY70fyQlgeJwg3H6dLW_m2A" /> 
     <img src="https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQXxxJ8MNjZZV8-Zzwu_RfL6YnZSt8cY70fyQlgeJwg3H6dLW_m2A" /> 
     <img src="https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQXxxJ8MNjZZV8-Zzwu_RfL6YnZSt8cY70fyQlgeJwg3H6dLW_m2A" /> 
    </div> 
</div> 

#parent-container { 
    display: table; 
    width: 50%; 
    margin: 0 auto; 
} 

#container { 
    display: table-cell; 
    vertical-align: middle; 
    width: 50%; 
    height: 200px; 
    border: 1px solid blue; 
    text-align: center; 
} 

#container img { 
    display: inline-block; 
    width: 30px; 
} 

Я изменил высоту, чтобы показать, что это «жидкость», независимо от размера контейнера.Это должно работать в IE8 +, но не проверено.

http://jsfiddle.net/rvfvt01a/1/

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