Вы можете достичь этого, используя CSS Position
Установив родительский контейнер на относительный, а дочерний элемент на абсолютный, вы можете получить эффект выделения без задержек.
Ниже приведен пример фрагмента, демонстрирующий, что вы хотите, чтобы произошло в вашей области. Здесь мы использовали положение : относительное; к родительскому классу wrap , чтобы сделать положение абсолютным; элемента выделения h4 признать его в качестве родителя.
Переходя к ключевым кадрам , мы устанавливаем для h4 значение top: 0% , чтобы оно удерживалось над контейнером в начале и top: calc (100% - 18px); на пике.
Почему мы должны использовать calc () здесь?
- По существу, добавление всего лишь 100% к его пиковой позиции приведет к переполнению выделенной области вне родительского элемента, что приведет к странному поведению.
Почему calc (100% - 18px) ?
- 18px - это размер шрифта по умолчанию для каждого текста, который вы добавляете в элемент, и мы устанавливаем css для выделения на padding: 0; и margin: 0 для удаления лишних пробелов внутри и снаружи, из-за которых выделение выглядит так, как будто у нас есть задержка запуска, потому что мы видим только пробелы, не занятые текстом внутри выделенного поля;
.wrap {
position: relative;
height: 150px;
width: 100px;
background: gray;
}
.wrap h4 {
text-align: center;
position: absolute;
top: 0%;
left: 0%;
padding: 0;
margin: 0;
background-color: red;
width: 100%;
animation: marquee 5s linear infinite;
}
@keyframes marquee {
0% {
top: 0%;
}
100% {
top: calc(100% - 18px);
}
}
@-moz-keyframes marquee {
0% {
top: 0%;
}
100% {
top: calc(100% - 18px);
}
}
@-webkit-keyframes marquee {
0% {
top: 0%;
}
100% {
top: calc(100% - 18px);
}
}
<div class="wrap">
<h4>Oopsie</h4>
</div>