2013-12-16 2 views
1

Я пытаюсь составить список с квадратными пулями разных цветов с квадратным размером, не зависящим от размера шрифта.Вертикально центр DIV внутри LI без px-меры

Мне нужно использовать размеры шрифтов в em или%.

Это моя лучшая попытка до сих пор: http://jsfiddle.net/3GMjp/29/

<ul> 
    <li> 
    <div> 
     <span class='li_box green'></span> 
     <span>Element 1</span> 
    </div> 
    </li> 
    <li> 
    <div> 
     <span class='li_box red'></span> 
     <span>Element 2</span> 
    </div> 
    </li> 
    <li> 
    <div> 
     <span class='li_box blue'></span> 
     <span>Element 3</span> 
    </div> 
    </li> 
<ul> 

CSS:

ul { 
    padding:0; 
    margin:0; 
} 

li { 
    font-size: 1.5em; 
    list-style-type:none; 
    line-height: 2em; 
} 

.li_box { 
     float:left; 
     width:10px; 
     height:10px; 
     vertical-align:middle; 
     margin-right:10px; 
} 

.red{ background-color:red} 
.green{ background-color:green} 
.blue{ background-color:blue} 

Может кто-нибудь помочь мне в центр коробки без добавления точек-мер?

Любое рабочее решение (будет оценено)!

+0

мой ответ работает для вас? Смотрите в скрипке. –

+0

Я только что узнал, что я смешал вертикаль с горизонтальной! Я, очевидно, считаю центр вертикальным. Извините и поблагодарить всех вас за ответы. Не могли бы вы еще раз взглянуть? – olaf

ответ

0

Если вы просто хотите центрировать содержание div с, это должно быть все, что вам нужно:

div { text-align: center; } 
+0

Я думаю, что он говорит о вертикальном выравнивании, а не о горизонтальном :-) –

1

Смотрите, я сделал изменения в CSS и HTML:

Пожалуйста, см URL: http://jsfiddle.net/3GMjp/33/

HTML код:

<li> 
     <div> 
      <span class='li_box green'></span> 
      <span class='spn'>Element 1</span> 
     </div> 
    </li> 

CSS изменения:

ul { 
    padding:0; 
    margin:0; 
} 

li { 
    font-size: 1.5em; 
    list-style-type:none; 
    line-height: 2em; 
} 

li div { 
    display:table; 
} 
.spn{ 
    display:table-cell; 
} 

.li_box { 
     display:table-cell; 
     float:left; 
     width:10px; 
     height:10px; 
     vertical-align:middle; 
     margin-right:10px; 
} 

.red{ background-color:red} 
.green{ background-color:green} 
.blue{ background-color:blue} 
0

пытается использовать это:

li { 
    ... 
    text-align:center; 
} 
+0

Это горизонтальное выравнивание, op требуется вертикальное выравнивание – Scott

+0

@Scott первый раз, когда я увидел это Q, его название было «Горизонтальное» слово! –

1

Я обновил свою скрипку here. Если вы плаваете элемент, он станет элементом блока, и, таким образом, вертикальное выравнивание не будет работать. Пробел с текстом, если он не будет перемещен, будет перенесен на следующую строку.

Инлайн блок, кажется, работает просто отлично:

.li_box { 
     display: inline-block; 
     width:10px; 
     height:10px; 
     margin-right:10px; 
} 
0

Добавление маржи сверху .li_box исправит проблему.

.li_box { 
... 
margin-top: 1%; 
} 
+0

Спасибо за ваш ответ, но это не так :(Он по-прежнему не центрирован по вертикали. – olaf

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