Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

141
Views
each-event with scroll in jquery

I would like to have an simple animation for text, but the animation should start when the user is scrolled to the element.

I found this Fade in letter by letter with JQuery and modified like this:

(function($) {

//get the welcome msg element
var $all_msg = $('#welcome_msg');
//get a list of letters from the welcome text
var $wordList = $('#welcome_msg').text().split("");
//clear the welcome text msg
$('#welcome_msg').text("");
//loop through the letters in the $wordList array
$.each($wordList, function(idx, elem) {
    //create a span for the letter and set opacity to 0
    var newEL = $("<span/>").text(elem).css({
        opacity: 0
    });
    //append it to the welcome message
    newEL.appendTo($all_msg);
    //set the delay on the animation for this element
    newEL.delay(idx * 20);
    // Var for scrolling
    var hT = $('#welcome_msg').offset().top,
        hH = $('#welcome_msg').outerHeight(),
        wH = $(window).height(),
        wS = $(this).scrollTop();

    $(window).scroll(function() {
       if (wS > (hT+hH-wH)){
            //animate the opacity back to full 1
            newEL.animate({
              opacity: 1
             }, 1100);
       }
    });
    
});
})( jQuery );

Sadly it's not working. What am I doing wrong?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

You have to get scroll top inside the window scroll handler not outside of it

(function($) {

//get the welcome msg element
var $all_msg = $('#welcome_msg');
//get a list of letters from the welcome text
var $wordList = $('#welcome_msg').text().split("");
//clear the welcome text msg
$('#welcome_msg').text("");
//loop through the letters in the $wordList array
$.each($wordList, function(idx, elem) {
    //create a span for the letter and set opacity to 0
    var newEL = $("<span/>").text(elem).css({
        opacity: 0
    });
    //append it to the welcome message
    newEL.appendTo($all_msg);
    //set the delay on the animation for this element
    newEL.delay(idx * 20);
    // Var for scrolling
    var hT = $('#welcome_msg').offset().top,
        hH = $('#welcome_msg').outerHeight(),
        wH = $(window).height();

        //console.log(hT,hH, wH);

    $(window).scroll(function() {
      wS = $(this).scrollTop(); 
      //console.log(wS, hT+hH-wH);
       if (wS > (hT+hH-wH)){
            //animate the opacity back to full 1
            newEL.animate({
             opacity: 1
            }, 1100);
       }
    });
    
});
})( jQuery );
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div style="height:800px">section with height to scroll</div>
<div id="welcome_msg">Welcome to the example snippet</div>

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!