Контур для текста
Задача
Сделать контур тексту средствами CSS.
Решение
На момент написания этого материала только разработчики Webkit предусмотрели такую возможность — CSS свойство -webkit-text-stroke. Чтобы нам сделать белый текст с черным контуром, достаточно двух строк кода:
color: white; -webkit-text-stroke: 1px black;
Т.к. контур появится только у webkit браузеров, остальным незачем цвет текста сливать с цветом фона. Для этого предусмотрено еще одно свойство — -webkit-text-fill-color:
color: white; /* цвет текста для всех браузеров */ -webkit-text-fill-color: white; /* цвет текста для webkit */ -webkit-text-stroke: 1px black;
Само собой не подходит вариант, который работает только в паре браузеров, поэтому для остальных браузеров будет все немного сложнее. Для эмуляции контура будем использовать text-shadow:
color: #fff; text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;
Данный прием сработает во всех распространенных ныне браузеров, кроме IE8 и ниже. Для них можно либо сделать заголовки по проще (без контура), либо использовать картинки, или же применить небольшой скрипт + несколько дополнительных CSS правил для эмуляции тени. Ниже приведенный код подключаем только для IE8 и версий ниже:
h1 { position: relative; } h1 span { position: absolute; z-index: -1; color: #000; } .h1 { left: -1px; top: -1px; } .h2 { left: 1px; top: -1px; } .h3 { left: -1px; top: 1px; } .h4 { left: 1px; top: 1px; }
function stroke() { var header = document.getElementById("strokeHeader"), text = header.innerText, strokeIE = text+ &<span class="h1"><+text+&</span>&+ &<span class="h2">&+text+&</span>&+ &<span class="h3">&+text+&</span>&+ &<span class="h4">&+text+&</span>&; header.innerHTML = strokeIE; } window.onload = stroke;
Демо пример. Проверено в:
- IE 6-8
- Firefox 4
- Opera 11
- Safari 5
- Chrome
Недостатки
- для «особых» браузеров нужен Javascript;
- кроссбраузерно можно сделать контур только в 1px;
- начертание в разных браузерах немного отличается.
Возможно когда-то в будущем, свойство text-stroke появится в спецификациях и его начнут поддерживать браузеры, мы не будем городить такие костыли.
И на последок более симпатичный пример.
P.S.
Интересно как на такое решение отреагируют поисковики, ведь цвет текста (color) совпадает с цветом фона (background-color).
Материалы
- Adding Stroke to Web Text