gpt4 book ai didi

javascript - 仅当您在特定 div 的 View 上滚动时才激活 CSS 动画

转载 作者:行者123 更新时间:2023-11-30 15:14:35 26 4
gpt4 key购买 nike

我有一个用 CSS 和 HTML 制作的图表,在这个图表中有一个图表加载动画。我只想在滚动包含图表的 div View 时启动此动画。

我只想在页面上显示图表时才收费,我知道我必须使用 javascript 但我是 JS 的初学者,所以我不知道是否可以做一些事情就像那样。

这是图表的 fiddle :

https://jsfiddle.net/matteous1/pdL0kbqk/

HTML

<ul class="chart">
<li>
<span style="height:5%; background: rgba(0, 102, 255, 0.80);" title="ActionScript"></span>
</li>
<li>
<span style="height:70%; background: rgba(204, 51, 51, 0.80);" title="JavaScript"></span>
</li>
<li>
<span style="height:50%; background: rgba(255, 186, 2, 0.80);" title="CoffeScript"></span>
</li>
<li>
<span style="height:75%; background: rgba(0, 153, 102, 0.80);" title="HTML"></span>
</li>
<li>
<span style="height:90%; background: rgba(0, 102, 255, 0.80);" title="HTML"></span>
</li>
<li>
<span style="height:15%; background: rgba(204, 51, 51, 0.80);" title="HTML"></span>
</li>
<li>
<span style="height:40%; background: rgba(255, 186, 2, 0.80);" title="HTML"></span>
</li>
<li>
<span style="height:55%; background: rgba(0, 153, 102, 0.80);" title="HTML"></span>
</li>
</ul>

CSS

.chart {
display: table;
table-layout: fixed;
width: 90%;
/*max-width: 700px;*/
height: 65%;
margin: 0 auto;
background-image: linear-gradient(to top, rgba(0, 0, 0, 0.1) 2%, rgba(0, 0, 0, 0) 2%);
background-size: 100% 50px;
background-position: left top;
}
.chart li {
position: relative;
display: table-cell;
vertical-align: bottom;
height: 200px;
}
.chart span {
margin: 0 1em;
display: block;
/*background: rgba(209, 236, 250, 0.75);*/
animation: draw 1s ease-in-out;
}
.chart span:before {
position: absolute;
left: 0;
right: 0;
top: 100%;
padding: 5px 1em 0;
display: block;
text-align: center;
content: attr(title);
word-wrap: break-word;
}

@keyframes draw {
0% {
height: 0;
}
}

最佳答案

您可以使用 onscroll 事件并检查元素是否在视口(viewport)中

 document.addEventListener('DOMContentLoaded', function() {
var charElem = document.querySelector('.chart');

var isVisible = false;
window.onscroll = function() {
if(isElementInViewport(charElem) && !isVisible) {
charElem.className += " anim";
isVisible = true;
}
}

function isElementInViewport (el) {

//special bonus for those using jQuery
if (typeof jQuery === "function" && el instanceof jQuery) {
el = el[0];
}

var rect = el.getBoundingClientRect();

return (
rect.top >= 0 &&
rect.left >= 0 &&
rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && /*or $(window).height() */
rect.right <= (window.innerWidth || document.documentElement.clientWidth) /*or $(window).width() */
);
}
});

https://jsfiddle.net/karthick6891/pdL0kbqk/1/

注意:视口(viewport)代码中的元素引用自此链接 How to tell if a DOM element is visible in the current viewport?

关于javascript - 仅当您在特定 div 的 View 上滚动时才激活 CSS 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44664165/

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