2013-10-08 6 views
0

Я знаю, что это довольно раздражает, кажется, что вертикальная выровняемость в CSS является общей ложью, но мне действительно нужна ваша помощь.vertical-align не работает

Я хочу, чтобы текст всегда быть в «средний» вертикальное положение слева на изображение (изображение test.gif имеет разные размеры)

У меня есть такая структура HTML элементов (к сожалению, я не могу изменить его из-за системных ограничений)

<div class="wrapper"> 
    <div class="logo"> 
     <img alt="some text" src="http://localhost/test.gif"> 
    </div> 
    <div class="source">some text</div> 
</div> 

CSS:

.wrapper {clear: both;} 
.logo {float: left;} 
.source { float: left;line-height: 16px;} 

нахождения на 1,5 часа и не повезло. Пытался применить вертикальное выравнивание к различным элементам с различным позиционированием и т. Д. ... Пожалуйста, помогите!

+0

Итак, вы ** не можете ** изменить какой-либо HTML-код? –

+0

@JoshC Да, вы правы, я ничего не могу изменить в html – sk1llfull

+0

Я знаю, что это разрешено, но другой вариант - изменить высоту текста в соответствии с высотой изображения слева. Обратите внимание, что это будет работать, только если вы знаете эту высоту и статичны. Вот скрипка: http://jsfiddle.net/tJrSs/ – ncf

ответ

0

Если вам не нужна поддержка IE7, попробуйте следующее:

.wrapper { display: table; } 
.logo { display: table-cell; } 
.source { display: table-cell; vertical-align: middle; } 

В основном, таблицы дают вам возможность вертикального выравнивания по центру, и сделав вашего div сек действовать как таблицу, мы можем подражать этому варианту.

+0

К сожалению, это не работает для меня по какой-то причине ... – sk1llfull

+0

Возможно, вы захотите настроить jsfiddle, чтобы мы могли помочь вам больше. Кроме того, попробуйте добавить отображение: table-cell в ваш .logo div. –

+0

Вот скрипка http://jsfiddle.net/sq7kZ/, также я попытался добавить отображение: table-cell в .logo, но никакого результата. Спасибо за вашу готовность помочь. Может быть, у вас есть еще идеи, как это сделать? – sk1llfull

0

Общая проблема, но хорошо объясняется здесь: http://phrogz.net/css/vertical-align/

Ключевые моменты

Укажите родительский контейнер, как position:relative или position:absolute

Укажите фиксированную высоту на ребенка-контейнера.

Позиция позиции: абсолютная и top:50% на дочернем контейнере для перемещения сверху вниз к середине родителя.

margin-top:-yy, где yy - половина высоты дочернего контейнера для смещения предмета вверх.

<style type="text/css"> 
    #myoutercontainer { position:relative } 
    #myinnercontainer { position:absolute; top:50%; height:10em; margin-top:-5em } 
</style> 

... 

<div id="myoutercontainer"> 
    <div id="myinnercontainer"> 
     <p>Hey look! I'm vertically centered!</p> 
     <p>How sweet is this?!</p> 
    </div> 
</div> 
+0

Извините, только что заметили, что вы не можете изменить свой HTML-код, поэтому не уверен, что много пользы. – tommyd456

+0

Это зависит от того, всегда ли вы знаете высоту текста. Для динамического решения это было бы сложной задачей. –

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