Vanilla JS 및 CSS와 스크롤 애니메이션
10074 단어 csswebdevdesignjavascript
소개
Questa quida vedremo에서 JS Vanilla e CSS와 함께 delle 스크롤 애니메이션을 만들 수 있습니다.
교차 관찰자 API
Per ottenerle utilizzeremo questa API: ciò che fa è determinare se un elemento del DOM è visibile all'utente finale.
HTML 및 CSS
Per questa parte avrete carta bianca. caso caso animeremo delle scritte에서. Per avere abbastanza spazio per lo scroll ho dato ad ogni
<section> un'altezza di100vh e ho centrato i titoli<h1> condisplay:grid; eplace-items: center . Identifichiamo gli elementi che vogliamo osservare con una classe: in questo caso hidden e le diamo un' opacity: 0; (poichè inizialmente questi elementi non saranno visibili).Inoltre creiamo un'altra casse
show con opacity: 1; che andremo ad aggiungere agli elementi con classe hidden quando saranno visibili all'utente finale. Per rendere tutto piu fluido aggiungiamo una transizione transition: all .6s a hidden .<section class="hidden">
<h1>
Lorem ipsum dolor sit amet consectetur adipisicing elit.
</h1>
</section>
<section class="hidden">
<h1>
Lorem ipsum dolor sit amet consectetur adipisicing elit.
</h1>
</section>
<section class="hidden">
<h1>
Lorem ipsum dolor sit amet consectetur adipisicing elit.
</h1>
</section>
section{
height: 100vh;
background-color: #1B1F24;
color: #ffffff;
display: grid;
place-items: center;
}
.hidden{
opacity: 0;
transition: all .6s;
}
.show {
opacity: 1;
}
자바스크립트
Ora prendiamo tutti gli elementi con classe
hidden :const hiddenElements = document.querySelectorAll(".hidden");
Il prossimo step è quello di creare l'intersection observer che è una classe che prende una callback nel suo constructor.
Il vantaggio è che può osservare più elementi allo stesso tempo. Quindi itereremo ogni
entry와 unforEach:const observer = new IntersectionObserver((entries) => {
entries.forEach((entry) => {
})
})
Questa funzione verrà eseguita ogni volta che la visibilità di un elemento osservato cambierà.
Ora aggiungeremo un check su ogni
entry per vedere se è visibile nel viewport, ed in caso avvenga aggiungeremo all'elemento la classe show dichiarata in pregenza:const observer = new IntersectionObserver((entries) => {
entries.forEach((entry) => {
if(entry.isIntersecting){
entry.target.classList.add('show');
}
})
})
Se vogliamo che l'animazione venga eseguita ogni volta che un elemento rientra nel viewport ci basterà inserire un
else 문 in cui togliamo la classeshow:const observer = new IntersectionObserver((entries) => {
entries.forEach((entry) => {
if(entry.isIntersecting){
entry.target.classList.add('show');
} else {
entry.target.classList.remove('show');
}
})
})
Ora che abbiamo l'
observer dobbiamo dirgli cosa osservare: in questo caso possiamo fee un loop su tutti gli elementi e dire all' observer di osservare ogniuno di essi:hiddenElements.forEach((el) => observer.observe(el));
에스엠피오 프라티코
In questo esempio potete notare che le scritte animate provengono da destra. Per ottenere questo effetto basta giocare con le proprietà di trasformazione CSS:
.hidden{
opacity: 0;
transform: translateX(100px);
transition: all .6s;
}
.show {
opacity: 1;
transform: translateX(0px);
}
Spero questa mini guida vi sia piaciuta , thinka di mettere ❤️ al post e seguirmi sui miei 사회적:
GitHub
Reference
이 문제에 관하여(Vanilla JS 및 CSS와 스크롤 애니메이션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/giandomenicopagliara/scroll-animation-con-vanilla-js-e-css-ple텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)