2013-08-08 4 views
1

У меня есть три дочерних divs, сидящих бок о бок внутри родителя. Левая и правая имеют фиксированную ширину, а средняя - переменная ширина и требуется изменить размер с помощью браузера. Поскольку они имеют разную высоту, мне нужно вертикально выровнять их внутри родителя, но я не могу их получить, и они придерживаются вершины. Есть ли способ сделать это? Высота дочерних divs фиксирована, но высота родительского элемента должна быть переменной.Невозможно вертикально выровнять боковые дочерние divs внутри родителя

CSS:

#divMain { width: 100%; min-width:320px; height:400px} 
#div1 { width: 100px; height: 200px; float: left; red;vertical-align:middle;display:inline-block; } 
#div2 { margin-left: 110px; height: 400px; margin-right: 110px; vertical-align:middle;} 
#div3 { width: 100px; height:300px; float: right; vertical-align:middle;display:inline-block;} 

HTML

<div id="divMain"> 
    <div id="div1"></div> 
    <div id="div3"></div> 
    <div id="div2"></div> 
</div> 
+0

Вместо выравнивания по вертикали: среднее использование линии-высота свойства –

+0

Я полагаю, вам нужно решение без Javascript? –

+0

Не обязательно, но было бы лучше, если бы было только решение CSS, возможно ли это? – natlines

ответ

1

Вот JS-свободный путь достижения этого с помощью position: absolute на боковых дивы:

Fiddle: http://jsfiddle.net/Xa8TW/2/

CSS

#divMain { 
    width: 100%; 
    min-width:320px; 
    position: relative; 
} 
#div1 { 
    width: 100px; 
    height: 200px; 
    background-color: red; 
    position: absolute; 
    top: 50%; 
    margin-top: -100px; 
} 
#div2 { 
    height: 600px; 
    margin: 0 110px; 
    background-color: green; 
} 
#div3 { 
    width: 100px; 
    height:300px; 
    background-color: blue; 
    position: absolute; 
    top: 50%; 
    right: 0; 
    margin-top: -150px; 
} 

HTML может останутся без изменений, но теперь также можно поменять местами #div2 и #div3, так как нет плавающих элементов, требующих определенного порядка.

+0

Линия-высота: хорошее решение. Что делать, если пользователь хочет получить текст внутри div? – AnaMaria

+0

Это была остаточная часть моей предыдущей ревизии. 'line-height' не требуется в этом решении и, таким образом, был удален. –

+0

Хорошо. Работает хорошо – AnaMaria

0

фиксируется ли высота DIVs? Как видно из вашего кода, высоты фиксируются на 400 пикселей. Если это так, то решение очень простое - просто предоставьте margin-top до div1 и div3.

Я создал скрипку для этого и удалил некоторые бесполезные фрагменты CSS (которые также не делают различий). Посмотрите

http://jsfiddle.net/8kv2K/

+0

Извините, что я должен был упомянуть, высота дочерних divs фиксирована, но высота родителя должна быть переменной – natlines

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