Как в кнопке выровнять по высоте иконку (css спрайт) и текст?

Всем привет!

Никогда спрайтами в css не пользовался толком, сейчас создал спрайт вида:
.sprite {
    background-image: url(../img/sprite/sprite.png);
    background-repeat: no-repeat;
    display: block;
}


.sprite-icon-delete {
    width: 15px;
    height: 16px;
    background-position: -5px -5px;
}

.sprite-icon-embed {
    width: 16px;
    height: 7px;
    background-position: -56px -5px;
}


Создаю кнопки:
<a href="#" class="button tiny green"><i class="sprite sprite-icon-embed"</i>EDIT</a>
<a href="#" class="button tiny green"><i class="sprite sprite-icon-delete"></i>DELETE</a>


Но никак не могу выровнять иконку и текст. Иконки имеют разную высоту. Что я пробовал:
1) Задавал классу .sprite свойства inline-block vertical-align: middle - иконка то выше, то ниже текста. Не подходит.
2) Задавал классу .sprite свойства inline-block, а самой кнопке одинаковые height и line-height. Для текста эта методика рабоает, а для иконки - нет.

Код:
codepen.io/anon/pen/GJdbEe

Как правильно выравнивать и правильно ли я вообще использую технику спрайтов? Например если применить к каждой кнопке класс sprite и позиционировать спрайтовую картинку через уникальный класс для каждой кнопки то вообще ерунда получается - соседние иконки из спрайта также внутри кнопки становятся (оно и понятно, т.к. в спрайте много картинок, отступ между картинками в 100-200 пикселей в спрайте не вариант).
  • Вопрос задан
  • 6554 просмотра
Решения вопроса 2
andykov
@andykov
Shit happens
Чтобы выровнять иконку и текст, оберните текст в span например и ему тоже укажите inline-block и middle или как вам нужно.
Чтобы в кнопках не было соседних иконок, делайте через :before
Ответ написан
Все примеры очень хорошие, но лучше смотреть на примеры с большим размеров шрифта, сразу увидите разницу.
Пример
Эту ситуацию хорошо разъясняет Евгений Петров в этом ответе.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
aliencash
@aliencash
Партизан
Вариант 1 правильный, только текстовым полям тоже нужно дать vertical-align: middle;
codepen.io/aliencash/pen/QbrXvb
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы