브라우저의 뷰포트에서 진행률 표시 줄이 보이면 0에서부터 백분율로 애니메이션을 적용해야하는 진행률 표시 줄 애니메이션 작업을하고 있습니다. 애니메이션 은 요소가 뷰로 스크롤 될 때 항상을 발생시켜야합니다. 즉, 외부로 스크롤하면 애니메이션이 시작되도록 재설정해야합니다.애니메이션 진행률 표시 줄
var $animation_elements = $('.progressAnimation');
var $window = $(window);
function check_if_in_view() {
var window_height = $window.height();
var window_top_position = $window.scrollTop();
var window_bottom_position = (window_top_position + window_height);
$.each($animation_elements, function() {
var $element = $(this);
var element_height = $element.outerHeight();
var element_top_position = $element.offset().top;
var element_bottom_position = (element_top_position + element_height);
//check to see if this current container is within viewport
if ((element_bottom_position >= window_top_position) &&
(element_top_position <= window_bottom_position)) {
$element.animate({
"width": (600 * $($element).data("percent"))/100
}, 3000);
} else {
$element.animate({
"width": "0"
}, 1000)
}
});
}
$window.on('scroll resize', check_if_in_view);
$window.trigger('scroll');
body{
height:4000px;
margin-top:800px;
}
.myContainer{
width:1000px;
margin:50px auto;
}
.myContainer .progressBackground{
width:600px;
height:40px;
margin:0 auto 40px;
background-color:#eaeaea;
}
.myContainer .progressAnimation{
width:0;
height:100%;
background-color:#00f36d;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="myContainer">
<div class="progressBackground">
<div class="progressAnimation" data-percent="80">
</div>
</div>
<div class="progressBackground">
<div class="progressAnimation" data-percent="60">
</div>
</div>
</div>
참고 : 전체 화면에서 실행 코드
은 여기 내 비 작동 코드입니다.
그래서 문제가 정확히 무엇입니까? – Option
뷰포트에서 애니메이션이 실행되지 않습니까? –