2015-01-13 2 views
0

Я искал несколько потоков на SO и в Google, в которых говорится, что я могу использовать высоту строки после установки высоты div, чтобы текст выравнивался по вертикали. Это, однако, требует, чтобы вы установили высоту div, которая не может быть хорошей для гибкого веб-дизайна? Я пытаюсь выровнять одну строку текста в панели навигации.Как использовать линейную высоту, не зная высоты?

Некоторые примеры кода:

<nav> 
    <section class="logo"> 
    <span>logo text</span> 
    </section> 
    <section> 
    <ul> 
     <li>link</li> 
     <li>link</li> 
     <li>link</li> 
     <li>link</li> 
    </ul> 
    </section> 
    <section class="dropdown"> 
    <span>dropdown</span> 
    </section> 
</nav> 

.logo { 
    display: inline-block; 
} 

.dropdown { 
    display: inline-block 
} 

мне нужно выровнять логотип и выпадающий текст внутри элементов пролетных, но я не имею любой высоты установить в любом месте, потому что я хочу, чтобы дизайн адаптироваться к разрешению экрана легко ,

Пробел внутри элемента nav, поэтому я думал, что могу сделать «height: 100%» на span, если я установил его в элемент встроенного блока, но это не сработало.

Есть ли способ получить высоту линии для работы с высотой без указания вручную высоты в пикселях, чтобы я мог получить текст с вертикальной ориентацией, который максимально реагирует?

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

+0

можно установить как в высоту и высоту строки в относительных единицах (например, 'em')? – fcalderan

+0

вы также можете установить его в терминах чисел ('line-height: 1.2;'), что относительно размера шрифта элемента => https://developer.mozilla.org/en-US/docs/ Web/CSS/line-height – PlantTheIdea

+0

Я хочу, чтобы браузер вычислил высоту элемента и отрегулировал высоту строки в соответствии с этим, вместо жесткого кодирования. Я вижу, что w3c (http://www.w3.org/Style/Examples/007/center.en.html#text) также устанавливает высоту вручную, поэтому я думаю, что не может быть этого. но это не похоже на правильное кодирование, чтобы установить высоту вручную, и я подумал бы, что есть какой-то способ автоматически настроить эту высоту/высоту линии, если вы, например, измените размер разрешения экрана или браузера. – exceed

ответ

0

Это работает для вас?

ПРИМЕЧАНИЕ. Я дал родительскому элементу высоту 30vh, но он будет работать с любой/без определенной высоты. Просто вы видите, что он сосредоточен.

.parent { 
 
    position: relative; 
 
    background-color:blue; 
 
    width:100%; 
 
    height:30vh; 
 
} 
 
.child { 
 
    position: absolute; 
 
    top: 50%; width:100%; 
 
    transform: translateY(-50%); 
 
    background-color:red; 
 
}
<div class="parent"> 
 
    <div class="child">Your random text..... Your random text.....</div> 
 
</div>

+0

Я думаю, что это лучший способ, которым я видел это еще (это также похоже на то, как w3c предлагает это сделать) .. при настройке высоты на дочернем я думаю, что вы блокируете его до высоты родителя, чтобы он не должен быть слишком плохим для отзывчивого дизайна .. я попробую его скоро, как им не удастся сделать это прямо сейчас. – exceed

+0

Было бы неплохо, если бы вы согласились на мой ответ, если с тобой все в порядке. Я не могу даже прокомментировать всюду прямо сейчас;) – davedadizzel

+0

Извините, что задержка заработала, и я читал об этом свойстве transform, а также о том, что вы использовали, о котором я не знал, и у меня нет возможности вернуться к вам. Мне кажется, что содержимое переполняется, если вы не установите min-height: 30vh вместо высоты: 30vh, хотя, кроме этого, я буду тестировать его более скоро. – exceed

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