gpt4 book ai didi

javascript - 百分比图表 CSS3 动画,在 View 上开始,滚动后,而不是在页面加载时

转载 作者:行者123 更新时间:2023-11-29 23:40:26 28 4
gpt4 key购买 nike

我遇到了圆形动画的问题。 CSS 动画工作正常,但我无法在元素 View 而不是所有页面的加载上让它工作。

我已经解决了很多关于 stackoverflow 的问题,但无论如何都无法完成这项工作,我不确定到底出了什么问题,但是当我调用动画类“.slice-right”时,没有任何反应,但是,如果该类只是插入 HTML 中一切都很好。

浏览器的控制台也没有显示错误。

任何人都可以做到这一点吗?

非常感谢。

<head>
<link rel="stylesheet" type="text/css" href="charts.css">
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js">
</script>
<script src="charts.js"></script>
</head>
<body>
<div class="content"></div>
<div class="xc-one-chart">
<h1>
hello
</h1><div class="pie">
<div class= "right"></div>

<div class="percent">
<div class="number">100%</div>
</div>
</div>
</div>
</body>

CSS

.content{
height:0px
}
.pie {
display:inline-block;
position: relative;
width: 1em;
height: 1em;
background-color:transparent;
font-size: 7em;
text-align: center;
border-radius:50%;
}

.right {
position: absolute;
z-index: 11;
background-color: #ff5252;
width: 100%;
height: 100%;
clip: rect(0, 0.5em, 0.5em, 0.5em);
border-radius:50%;

}


.percent {
position: absolute;
z-index: 20;
top: 3px;
right: 3px;
bottom: 3px;
left: 3px;
background: #1d2225;
border-radius:50%;
}


.number {
position: absolute;
z-index: 30;
width: 100%;
height: 100%;
padding-top: 50%;
line-height: 0;
font-size: .3em;
color:white;
}

.slice-right{
-webkit-animation-delay: 1.2s;
-webkit-animation-duration: 0.3s;
-webkit-animation-name: right-slice;
-webkit-animation-iteration-count: 1;
-webkit-animation-fill-mode: forwards;
}


@-webkit-keyframes right-slice {
from {
clip: rect(0, 50%, 0.5em, 0.5em);
}

50% {
clip: rect(0, 1em, 0.5em, 0.5em);
}

to {
clip: rect(0, 1em, 1em, 0.5em);
}
}

JavaScript

function isElementInViewport(elem) {
var $elem = $(elem);

// Get the scroll position of the page.
var scrollElem = ((navigator.userAgent.toLowerCase().indexOf('webkit') !=
-1) ? 'body' : 'html');
var viewportTop = $(scrollElem).scrollTop();
var viewportBottom = viewportTop + $(window).height();

// Get the position of the element on the page.
var elemTop = Math.round( $elem.offset().top );
var elemBottom = elemTop + $elem.height();

return ((elemTop < viewportBottom) && (elemBottom > viewportTop));
}

// Check if it's time to start the animation.
function checkAnimation() {
var $elem = $('.pie .right');

// If the animation has already been started
if ($elem.hasClass('slice-right')) return;

if (isElementInViewport($elem)) {
// Start the animation
$elem.addClass('slice-right');
}
}

// Capture scroll events
$(window).scroll(function(){
checkAnimation();
});

最佳答案

这不起作用的原因是因为没有滚动的地方,所以滚动事件没有被触发。添加一些空间以便您可以滚动使代码工作。

.content{
height:500px /*add space*/
}

fiddle : https://jsfiddle.net/ekgugx76/1/

关于javascript - 百分比图表 CSS3 动画,在 View 上开始,滚动后,而不是在页面加载时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45348408/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com