Обведите каждую букву буквой css без использования пролетов - PullRequest
4 голосов
/ 19 февраля 2011

Я пытаюсь создать рамку вокруг каждой буквы, чтобы использовать ее в качестве счетчика статистики одометра. Знаете ли вы, как это сделать, не упаковывая каждую букву в промежуток? Если у вас есть идеи, я бы хотел их услышать.

Ответы [ 6 ]

5 голосов
/ 19 февраля 2011

Если вы используете моноширинный шрифт, вы можете использовать фоновое изображение с полями.

4 голосов
/ 19 февраля 2011

Другой вариант - использовать javascript для добавления всей необходимой разметки. Есть несколько плагинов jquery, которые уже делают подобные вещи:

http://daverupert.com/2010/09/lettering-js/

2 голосов
/ 20 января 2013

Используя CSS3 градиенты, вы можете сделать это с чистым CSS и без JavaScript. Основная идея состоит в том, чтобы создать градиент, в котором цвет рамки, который вы хотите, представляет собой сплошной цвет до определенного цвета, а затем градиент является прозрачным. Вы должны рассчитать цветовые остановки в соответствии с размером шрифта и межбуквенным интервалом текста. Затем примените градиент к псевдоклассу элемента текста и вуаля.

Вот пример, который я создал для элемента span, содержащего сумму денег, собранную для организации. Каждый номер нуждался в розовой коробке вокруг этого. Причина, по которой градиент такой сложный, заключается в том, что я заставил его повторяться только после каждых 3 цифр, поскольку каждые 3 цифры были запятыми, которые должны были находиться за пределами полей и, следовательно, требовали дополнительного пробела. Если вы повторяете после каждого символа, это может быть намного проще, но я решил поделиться этим подходом, поскольку вы упомянули одометр. Вы также можете расширить эти градиенты, добавив браузерные префиксы, чтобы они работали в IE, Opera и т. Д.

html:
<span id="amount-raised">10,123</span>

css:
span#amount-raised {
position: absolute;
z-index: 1;
font-size: 70px;
letter-spacing: 10px;
color: #fff;
}
span#amount-raised:before { /* pink boxes */
  content: '';
  position: absolute;
  top: 0; left: 0;
  z-index: -1;
  height: 100%; width: 100%;
  background-image: -webkit-repeating-linear-gradient(right, pink, pink 50px, transparent 50px, transparent 55px, pink 55px, pink 105px, transparent 105px, transparent 110px, pink 110px, pink 160px, transparent 160px, transparent 176px);
  background-image: -moz-repeating-linear-gradient(right, pink, pink 50px, transparent 50px, transparent 55px, pink 55px, pink 105px, transparent 105px, transparent 110px, pink 110px, pink 160px, transparent 160px, transparent 176px);
}
2 голосов
/ 20 февраля 2011

Что ж, конечно, можно перевернуть это и использовать шрифт (через @ font-face ), который содержит вставленные буквы.

2 голосов
/ 20 февраля 2011

Вы можете создать десять гифок, по одному на каждое число (вы сказали счетчик статистики), которые выглядят так, как вы хотите.Когда вы загружаете страницу, используйте javascript, чтобы разбить вашу строку на массив, затем переберите ее и замените каждый символ соответствующим gif для этого числа.

2 голосов
/ 19 февраля 2011

Я не вижу способа сделать это в HTML, не заключая каждую букву в элемент, который можно стилизовать.

...