Вертикальное позиционирование CSS Divs Изображения - PullRequest
0 голосов
/ 02 февраля 2012

Мне нужно расположить 3 объекта следующим образом:

Div 1 - контейнер с абсолютным позиционированием, с фиксированной шириной, высотой и положением. Изображение 1 должно быть изображением с абсолютным позиционированием и только с фиксированным выравниванием по левому краю. Div 2 должен быть абсолютно позиционированным div, только с фиксированным выравниванием по левому положению.

Мне нужно, чтобы изображения 1 и Div 2 были выровнены с вертикальным центром div 1, поскольку это переменные элементы текста и изображения с динамической высотой.

Пример:

Div 1 имеет фиксированную высоту 200px. Изображение 1 с переменной высотой 52px

Изображение 1 должно располагаться вертикально:

(200/2) + (52/2) = 126 пикселей

Я изучил ячейку таблицы CSS, вертикальное выравнивание, поле в виде% и другие, но не смог заставить это работать.

Спасибо.

.div1
{
position: absolute;
width: 100px;
height: 100px
top: 100px;
left: 100px;
}
.image1
{
position: absolute;
left: 10px;
// something here to align the image in the vertical middle of div1
}
.div2
{
position: absolute;
left: 60px;
// something here to align the image in the vertical middle of div1
}

<div class="div1"><img class="image1"><div class="div2"></div></div>

Обновленный код:

<head>
    <style type="text/css">
        .div1 {
            background: yellow;
            display: table;
            position: absolute;
            width: 300px;
            height: 300px;
            top: 100px;
            left: 100px;
        }
        .newdiv {
            display: table-cell; 
            vertical-align: middle;
            height: 300px;
        }
        .image1 {
            left: 10px;
            position: relative;  
            width:50px;
            height: 80px;
            background: blue;
        }
        .div2 {
            position: relative;   
            background: red;
            left: 70px;
            width: 100%;
            height: 200px;
        }
    </style>
</head>

<div class="div1"><div class="newdiv"><div class="image1" /></div><div class="div2">123</div></div></div>

Ответы [ 2 ]

0 голосов
/ 04 февраля 2012
.image1,
.div2 {
    position: absolute;
    top:0;
    bottom:0;
    margin: auto;
}

jsFiddle

0 голосов
/ 02 февраля 2012

Попробуйте, вам нужно добавить еще один div внутри вашего первого div:

<head>
    <style type="text/css">
        .div1 {
            background: yellow;
            display: table;
            position: absolute;
            width: 100px;
            height: 100px;
            top: 100px;
            left: 100px;
        }
        .newdiv {
            display: table-cell; 
            vertical-align: middle;
        }
        .image1 {
            left: 10px;
            position: relative;  
        }
        .div2 {
            position: relative;   
            background: red;
            left: 6px;
        }
    </style>
</head>

<div class="div1"><div class="newdiv"><img class="image1" /><div class="div2">123</div></div></div>

UPDATE (я нашел другой способ, без нового div, я не проверял его в IE.):

             <head>
                <style type="text/css">
                    .div1 {
                        background: yellow;
                        position: relative;
                        width: 300px;
                        height: 300px;
                        top: 100px;
                        left: 100px;
                    }
                    .image1 {
                        left: 10px;
                        position: absolute; 
                        width:50px;
                        height: 80px;
                        background: blue;
                        top:0;
                        bottom:0;
                        margin:auto;
                    }
                    .div2 {
                        position: absolute;    
                        background: red;
                        left: 70px;
                        width: 100px;
                        height: 200px;
                        top:0;
                        bottom:0;
                        margin:auto;
                    }
                </style>
            </head>

            <div class="div1">
                    <div class="image1" /></div>
                    <div class="div2">123</div>
            </div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...