Is it possible to embed countup.js code into a Webflow website and have the count up start once the parent section is in view?

Published on
September 22, 2023

Yes, it is possible to embed countup.js code into a Webflow website and have the count up start once the parent section is in view. Here's how you can achieve this:

  1. Start by adding the countup.js library to your Webflow project. You can either download the library and host it on your own server, or you can use a CDN (Content Delivery Network) to load it directly into your project. To add countup.js using a CDN, you can add the following code to the head section of your Webflow project's custom code:
<script src="https://cdn.jsdelivr.net/npm/countup.js@2.0.7/dist/countUp.min.js"></script>
  1. Once you've added countup.js to your project, you need to create a new code block in Webflow to house your count up script. To do this, select the parent section where you want the count up to be located, and choose "Add Field" > "Custom Code" from the toolbar.

  2. In the custom code block, you can write the JavaScript code that initializes the count up and triggers it to start when the parent section is in view. Here's an example code snippet that you can modify to suit your needs:

<script>  // Define the count up target element  var countupElement = document.getElementById('countup-element');  // Options for count up animation  var options = {    startVal: 0, // Starting value of the count up    endVal: 100, // Ending value of the count up    duration: 2, // Duration of the count up animation in seconds    useEasing: true, // Use easing functions for smooth animation    separator: ',', // Separator for thousands    decimal: '.' // Decimal point character  };  // Create a new count up instance  var countup = new CountUp(countupElement, options);  // Function that checks if the parent section is in view  function isElementInViewport(el) {    var rect = el.getBoundingClientRect();    return (      rect.top >= 0 &&      rect.left >= 0 &&      rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&      rect.right <= (window.innerWidth || document.documentElement.clientWidth)    );  }  // Function that starts the count up when the parent section is in view  function startCountUp() {    if (isElementInViewport(countupElement) && !countup.error) {      countup.start();      window.removeEventListener('scroll', startCountUp);    }  }  // Event listener that triggers the count up when the parent section is scrolled into view  window.addEventListener('scroll', startCountUp);</script>
  1. In the above code snippet, make sure to replace 'countup-element' with the ID of the element that you want to animate with count up. For example, if you have a text element with the ID "my-countup", you would update the code to var countupElement = document.getElementById('my-countup');.

  2. Customize the options object to set the desired starting value, ending value, duration, separator, and decimal point for your count up animation.

  3. Once you've set up the count up script, you can preview and publish your Webflow site to see the count up animation in action. As you scroll and the parent section comes into view, the count up will start animating.

By following these steps, you can embed countup.js code into a Webflow website and ensure that the count up animation starts once the parent section is in view.

  1. How do I add custom JavaScript code to my Webflow project?
  2. Can I use other JavaScript libraries or plugins in Webflow?
  3. How can I optimize my Webflow website for better performance?