Двухцветная раскраска шрифтов в CSS?

Мне очень нравится внешний вид двухцветных кнопок и шрифтов. Я думаю, когда верхняя половина шрифта является одним цветом, а нижняя половина - вариацией одного цвета. Например, посмотрите большинство кнопок на iPhone или логотип здесь http://ming.ly.

mingly

Можно ли воссоздать этот эффект в CSS? Альтернативно есть ли бесплатный инструмент, который я могу использовать для создания шрифтов, которые выглядят так?

Ответы

Ответ 1

Мне удалось добиться этого с помощью CSS...

Пример

Example

CSS

div {
    position: relative;  
    color: #0f0;
    font-size: 28px;
}

div span {
    height: 50%;
    position: absolute;
    color: #f00;
    overflow: hidden;  
}

HTML

<div>
    <span>Hello</span>
    Hello
</div>

jsFiddle.

Протестировано в Firefox 5.

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

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

div:before {
    content: "Hello";
    height: 50%;
    position: absolute;
    color: #f00;
    overflow: hidden;   
}

jsFiddle.

Насколько я знаю, для content нет значения, которое будет автоматически использовать этот текст элемента node. Вы можете поместить его в атрибут title и использовать attr(title) (или любой другой атрибут).

Вы также можете использовать JavaScript для повторения.

var textRepeat = document.createElement('span'),
    textRepeatTextNode = document.createTextNode(element.firstChild.data);

element.appendChild(textRepeat.appendChild(textRepeatNode));

Если первый ребенок не обязательно был текстовым node, вы могли бы использовать element.textContent || element.innerText.

Ответ 2

Мне очень нравится метод @alex. Альтернативное решение, поддерживающее белую кривую, но не перекрестный браузер, я предполагаю * на данный момент, может быть следующим:

CSS

#text {
    color: #5283CA;
    font-size: 70px;
    height: 100px;
    overflow: hidden;
    width: 210px;
}
#curve {
    -moz-transform: rotate(60deg);
    -webkit-transform:rotate(60deg);
    -o-transform:rotate(60deg);
    -ms-transform:rotate(60deg);
    background: none repeat scroll 0 0 white;
    border-radius: 200px 20px 80px 20px;
    bottom: 270px;
    display: block;
    height: 1000px;
    opacity: 0.5;
    filter: alpha(opacity=50);
    position: relative;
    right: 330px;
    width: 200px;
}

HTML

<div id="text">Mingly<div id="curve"></div>

Демо: http://jsfiddle.net/ENPnU/

Я не знаю никакого свойства css, которое может сделать границу изогнутой. Поэтому я использовал закругленные углы, которые я могу создать с помощью css. Затем я поворачиваю элемент с закругленными углами (в данном случае #curve) в правильное положение, чтобы выглядеть как белая кривая внутри текста. Затем добавлена ​​белая непрозрачность.

* Я попробовал, чтобы он работал с ie, но я не нашел полного решения, вы можете найти результат здесь: http://jsfiddle.net/3TpeA/ p >