Разрабатывая фоновое изображение кнопки, изображение значка кнопки и текст с помощью спрайтов CSS

Я пытаюсь изящно решить проблему моделирования с некоторыми кнопками и изображениями. Моя цель состоит в том, чтобы иметь кнопки, которые похожи на следующее:

(Макет Hacky mspaint)

Button Example
(источник: robhruska.com)

Однако у меня есть ряд критериев, которым я хотел бы соответствовать:

  • Я также должен смочь иметь изображение значка, существуют как одна только кнопка, без текста (т.е. фон кнопки является изображением значка и кнопкой, width/height = ширина изображения значка / высота).
  • Кнопка только для значка должна поддерживать :hover состояния, которые изменяют фоновый значок.
  • Текстовые кнопки должны поддерживать фон градиента, изменяющийся на :hover, но сам значок не должен изменяться.

У меня есть и изображение значка и изображение градиента, доступное мне в вертикальном изображении спрайта CSS.

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












Мне особенно не нравится использовать внутреннее

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

Суммировать мой вопрос: Как я могу сделать это с единственным стилем верхнего уровня на

1
задан Glorfindel 31 July 2019 в 01:08
поделиться

3 ответа

Вы можете немного уменьшить разметку:

<div class="button">
    <a class="yourIcon">Button Text</a>
</div>

.button получает изображение градиента.

.yourIcon при желании может затем получить значок для фона.

1
ответ дан 2 September 2019 в 23:29
поделиться

Вы можете использовать максимальное упрощение: просто используйте градиент в качестве фона и вставьте другой тег со значком в качестве фона внутри, используйте свойство css vertical-align (оно принимает значения%) для размещения значка правильно выровнен по тексту.

вместо использования тегов div рассмотрите возможность использования тега , он экономит вам несколько байтов, и, кстати, это метод Google.

надеюсь, что это поможет

0
ответ дан 2 September 2019 в 23:29
поделиться

Можете ли вы просто создать 2 отдельных кнопочных элемента и использовать абсолютное позиционирование, чтобы кнопка с пиктограммой располагалась поверх большой кнопки?

0
ответ дан 2 September 2019 в 23:29
поделиться
Другие вопросы по тегам:

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