#html #css #css-animations
Вопрос:
У меня есть этот простой код анимированного линейного графика. Анимация работает хорошо, но она начинается при загрузке страницы. Я хочу, чтобы он начинался, когда раздел находится на экране средства просмотра/когда средство просмотра прокручивает этот раздел страницы.
Если ему нужен другой код, например JS. Пожалуйста, скажи мне. Спасибо!
Вот коды HTML и CSS. А вот демо-версия Codepen
HTML:
<div class="wrapper">
<h3>Papua New Guinea</h3>
<br>
<p>Papua New Guinea is one of the most culturally diverse countries in the world.
As of 2019, it is also the most rural, as only 13.25% of its people live in urban centres.
Most of the
population of more than 8,000,000 people live in customary communities, which are as diverse
as the languages.</p>
<h5>Living in Urban communities</h5>
<div class="line line1">13.25%</div>
<h5>Living in Customary Communities</h5>
<div class="line line2">86.75</div>
</div>
CSS:
.wrapper {
width: 800px;
margin: 0 auto;
}
.wrapper h3 {
text-align: center;
text-transform: uppercase;
margin-top: 40px;
}
.wrapper h5 {
text-align: left;
}
.line {
height: 25px;
min-width: 800px;
margin: 0 auto 10px;
line-height: 25px;
font-size: 14px;
color: #fff;
padding: 0 0 0 10px;
position: relative;
}
.line:before {
content: "";
width: 100%;
position: absolute;
left: 0;
height: 25px;
top: 0;
z-index: -2;
background: #d2d6d7;
}
.line:after {
content: "";
background: #333;
height: 25px;
transition: 0, 8s;
display: block;
width: 100%;
animation: animate 1 4s;
position: absolute;
top: 0;
left: 0;
z-index: -1;
}
.line1:after {
max-width: 13.25%;
}
.line2:after {
max-width: 86.75%;
}
@keyframes animate {
0% {
width: 0;
}
100% {
width: 100%;
}
}
Комментарии:
1. Да, вам понадобится немного JS. Исследуйте IntersectionObserver, который сообщит вам, когда бит, который вы хотите анимировать, появится в окне просмотра. Также, возможно, вы могли бы добавить тег javascript в свой вопрос.
Ответ №1:
Вы можете использовать анимацию-задержку, но это вам не поможет. Вы можете использовать код JS и отслеживать событие. Это код, например:
var $win = $(window);
var $marker = $('#marker');
$win.scroll(function() {
if ($win.scrollTop() $win.height() >= $marker.offset().top) {
$win.unbind('scroll');
// load there
}
});
Комментарии:
1. Как использовать файл JS? Мне просто вставить его?
2. Вы должны добавить его в код своего веб-сайта либо с помощью отдельного файла .js, либо непосредственно в свой HTML-код с помощью
<script>
тега.