Практический пример использования функции attr в CSS
Рассмотрим на примере анимации текста, как можно использовать CSS функцию attr.
Создание, позиционирование и стилизация текста
Data-text представляет из себя data-атрибут, который используется для хранения информации. К тегу h1 добавлен атрибут data-text со значением Animation для дальнейших манипуляций с ним.
//HTML разметка
<h1 data-text="Animation...">Animation...</h1>
//CSS код
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@700&display=swap');
*{
margin: 0;/*обнуление отступов*/
padding: 0;/*обнуление полей*/
box-sizing: border-box;/*чистая ширина блоков*/
font-family: 'Poppins', sans-serif;/*название шрифта*/
}
body{
display: flex;/*отображать как гибкий контейнер*/
justify-content: center;/*горизонтальное выравнивание*/
align-items: center;/*вертикальное выравнивание*/
min-height: 100vh;/*на всю высоту экрана*/
background: #0091EA;/*цвет фона*/
}
h1{
position: relative;/*относительное позиционирование*/
font-size: 14vw;/*размер шрифта*/
color: #64B5F6;/*цвет текста*/
line-height: 1.2em;/*вертикальное выравнивание*/
text-transform: uppercase;/*трансформация от заглавных к маленьким буквам*/
-webkit-text-stroke: 0.3vw #fff;/*цвет и толщина обводки текста*/
}
Создание копии текста
Сейчас у нас текст голубого цвета. Созданная копия текста должна плавно менять голубой текст на розовый. Функция attr передаст в качестве контента псевдоэлементу h1, значение data-text (слово Animation).
h1:before {
content: attr(data-text);/*передача data-атрибута*/
position: absolute;/*абсолютное позиционирование*/
top: 0;/*позиция копии текста сверху*/
left: 0;/*позиция копии текста слева*/
width: 0;/*нулевая ширина копии текста*/
height: 100%;/*вертикальное выравнивание*/
color: #FFAB00;/*вертикальное выравнивание*/
overflow: hidden;/*скрыть переполненность*/
-webkit-text-stroke: 0vw #263238;/*ширина и цвет обводки*/
border-right: 4px solid #FFAB00;/*рамка-курсор*/
animation: animate 4s linear infinite;/*свойства анимации*/
}
Создание анимации текста
Анимация происходит за счет изменений значения ширины у розовой копии текста на разных кадрах.
@keyframes animate{
0%,10%,100%
{
width: 0;
}
70%,90%
{
width: 100%;
}
}
Посмотрите пример на CodePen
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.