Цель данной статьи - вывести многоцветный текст при помощи css. Для этого будем применять метод наложения текста один над другим. Лишнее скроем при помощи overflow: hidden;
В интернете встречались подобные методы, но текст выводился при помощи нескольких дивов, что для нас неприемлемо.
Мы семантически выведем только одну строку текста, все остальное доводим стилями.
Будем использовать :before и :after, ими мы можем добавить кроме основного, еще два цвета. Если необходимо использовать больше трех цветов, необходимо использовать два класса, к примеру, class="zimbabve zimbabve2"
текст будем набирать просто:
<div class="flags">
<div class="russia">РОССИЯ МАТУШКА</div>
<div class="ukraina">РЕБЯТА, ДАВАЙТЕ ЖИТЬ ДРУЖНО</div>
<div class="belarus">БЕЛОРУССИЯ</div>
<div class="germania">DEUTSCHLAND</div>
</div>
Но есть одно препятствие, как добавить остальной текст в :before и :after? Решение есть, content: attr(data); и в атрибутах DIV прописываем data="Текст, который в div".
Раскрашивание текста уже дело техники:
.russia, .belarus, .ukraina, .germania, .italia {
font-size: 42px;
font-weight: bold;
position: relative;
text-shadow: 1px 0 0 #000, 0 1px 0 #000, -1px 0 0 #000, 0 -1px 0 #000;
}
.russia:after, .russia:before, .ukraina:before,
.belarus:before, .germania:after, .germania:before {
content: attr(data);overflow: hidden;position: absolute;
}
.russia{color: #f00;}
.russia:before {color: #08f;height: 66.6%;left: 0;top: 0;}
.russia:after {color: #fff;height: 33.3%;left: 0;top: 0;}
.ukraina{color: #ff0;}
.ukraina:before {color: #08f;height: 50%;left: 0;top: 0;}
.belarus{color: #0a0;}
.belarus:before {color: #d00;height: 66%;left: 0;top: 0;}
.germania{color: #fc0;}
.germania:before {color: #f00;height: 66.6%;left: 0;top: 0;}
.germania:after {color: #000;height: 33.3%;left: 0;top: 0;}
Но неудобно, каждый раз прописывать текст в диве и в атрибуте. Доверим это дело JQUERY:
$(document).ready(function(){
$('.flags div').each(function (){
$(this).attr("data",$(this).text());
});
});
Посмотреть демо скачать пример
|