2011-01-07 3 views
0

У меня есть значки. Проблема в том, что они не вертикально выравниваются по середине, как все остальное (текст, ввод). Моя HTML структура что-то вроде этого:Вертикальное выравнивание значка

<div class="i_contain_things"> 
    <div class="i_float_left"><checkbox/></div>some text 
    <div class="i_float_right"> 
    <span class="sprite icn1">my sprite</span> 
    <span class="sprite icn2">my sprite</span> 
    </div> 
</div> 

.i_contain_things 
{ 
clear:both; 
margin-bottom:10px; 
vertical-align:middle; 
} 

.i_float_left 
{ 
padding:0 3px 0 3px; 
float:left; 
display:inline-block; 
} 

.i_float_right 
{ 
padding:0 3px 0 3px; 
float:right; 
display:inline-block; 
vertical-align:middle; 
} 

.sprite 
{ 
display:inline-block; 
background: url(../img/icn_sprite_1.png); 
width: 16px; 
height: 16px; 
vertical-align: middle; 
} 
.icn1{background-position:0,0} 
.icn2{background-position:0,16px} 

мой спрайт всегда выравнивается по нижней части, в то время как флажок и текст в середине.

+1

Есть ли фактическая разметка для проверки? В принципе, я просто предлагаю добавить немного изображения бота к изображению или перейти к вертикальной методике выравнивания по вертикали линии. http://www.brunildo.org/test/va_lineheight.html – Loktar

+3

Можете ли вы использовать обычный синтаксис html? Это облегчит просмотр. Также вы можете включить некоторые css? – JakeParis

+0

line-height ничего не сделал, я не могу добавить нижний край, так как высота переменной. – aepheus

ответ

0

Необходимо указать background-position. Подобно:

sprite { background: url(../img/icn_sprite_1.png) 50% 50% no-repeat; 

В случае, если первое число осей-х, и второе число для оси у Вы можете использовать проценты, пиксели или ключевые слова (справа, сверху, в центре), чтобы объявить положение фонового изображения ,

http://www.w3schools.com/css/css_background.asp

+0

backgound-position занимает центр как ключевое слово, а не среднее – DanMan

+0

Thanks @DanMan. – JakeParis

+1

Вам нужно использовать фоновое положение для спрайтов css. –

1

Это не будет работать, промежуток является встроенным элементом так, как только вы удалите текст, он будет разрушаться; height и width ничего не сделают.

Я не уверен, чего вы хотите добиться точно, но мне кажется, что вам нужно разместить свой спрайт в качестве фона для одного из элементов, которые у вас уже есть (например, .i_contain_things), а не поместить его в отдельный элемент.

Если вам нужно поместить его в отдельный элемент, вы должны убедиться, что подмигнули элемент уровня блока (например, div или span, который установлен в display:block). Этот элемент должен быть расположен там, где вы хотите.

+0

+1 для улавливания отсутствующего 'display: block' – JakeParis

+0

Не помещая его в отдельный элемент, невозможно использовать css спрайты. –

+0

@ Ник - это неверно, пример будет действовать как спрайт, если бы он отображался: block; вы могли бы затем определить другие элементы спрайта, используя тот же фон и фоновое положение. никаких дополнительных элементов не требуется. – aepheus

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