2013-11-27 6 views
0

У меня есть DIV, который мне нужно центрировать вертикально его содержание:центра по вертикали содержания в DIV (не высота строки)

<div draggable="false" id="coffee">Free coffee for all the people who visit my restaurant</div> 

#coffee { 
     line-height: 235px; 
     width: 300px; 
    } 

div { 
    position: absolute; 
    overflow: auto; 
    text-align: left; 
    font-size: 23px; 
    color: rgb(26, 66, 108); 
    font-family: roboto, Helvetica; 
    font-style: normal; 
    font-weight: bold; 
    -webkit-transition: none; 
    transition: none; 
    left: 0px; 
    top: 67.125px; 
    height: 234.93749999999997px; 
    opacity: 1; 
} 

Он работает, используя высоту строки, но в прыжке линии , фраза слишком разделена, и мне нужно, чтобы она не была разделена.

Это скрипка ссылка: http://jsfiddle.net/2Mb39/4/

Daniel

+0

Все ответы, которые я тестировал, работают хорошо, но я отмечаю ответ Джопа как решаемый –

ответ

3

Вы должны добавить второй DIV для достижения этой цели.

<div draggable="false" id="coffee" style="position: absolute; overflow: auto; text-align: left; font-size: 23px; color: rgb(26, 66, 108); font-family: roboto, Helvetica; font-style: normal; font-weight: bold; -webkit-transition: none; transition: none; left: 0px; top: 67.125px; height: 234.93749999999997px; opacity: 1;"> 
    <div class="inner"> 
    Free coffee for all the people who visit my restaurant 
    </div> 
</div> 

#coffee { 
    display: table; 
    width: 300px; 
    background-color: red; 
} 
#coffee .inner{ 
    vertical-align: middle; 
    display: table-cell; 
} 

Пример: http://jsfiddle.net/2Mb39/12/

+0

Право, спасибо Jop –

0

Line-height даст вертикальную высоту для всех строк в пункте, так как у вас есть absolute positioned div и есть paragraph внутри, вы будете нуждаться в ребенка DIV, чтобы выровнять их по вертикали !

DEMO

CSS:

#coffee { 
    width: 300px; 
} 
#coffee > .mid { 
    margin-top:25%; 
    text-align:center 
} 

HTML

<div draggable="false" id="coffee" style="position: absolute; overflow: auto; text-align: left; font-size: 23px; color: rgb(26, 66, 108); font-family: roboto, Helvetica; font-style: normal; font-weight: bold; -webkit-transition: none; transition: none; left: 0px; top: 67.125px; height: 234.93749999999997px; opacity: 1;border:1px solid #000"> 
    <div class="mid"> 
    Free coffee for all the people who visit my restaurant 
    </div> 
</div> 
0

Это то, что вы пытаетесь достичь?

HTML

<div draggable="false" id="coffee" style="position: absolute; overflow: auto; vertical-align: middle; font-size: 23px; color: rgb(26, 66, 108); font-family: roboto, Helvetica; font-style: normal; font-weight: bold; -webkit-transition: none; transition: none; left: 0px; top: 67px; height: 235px; opacity: 1;"><span class="marqtext">Free coffee for all the people who visit my restaurant</span></div> 

CSS

#coffee { 
    line-height: 235px; 
    width: 300px; 
} 
.marqtext { 
    display:table-cell; 
    position:relative; 
    top:180px; 
    text-align:center; 
} 
0

Если ваш внутренний DIV имеет гибкую высоту можно центрировать его с помощью CSS трансформирует:

#coffee { 
    width: 300px; 
    position:relative; 
} 
#coffee > div { 
    background:#ddffff; 
    position:absolute; 
    top:50%; 
    max-height:100%; 
    -webkit-transform:translateY(-50%); 
    -moz-transform:translateY(-50%); 
    transform:translateY(-50%); 
} 

http://jsfiddle.net/2Mb39/16/

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