31 Mar 2023

Designing a custom animated banner with HTML, CSS, and JavaScript

In the digital world, one of the most effective ways to grab attention and promote your brand or product is through animated banners. A well-designed custom animated banner can engage your audience, increase click-through rates, and ultimately drive conversions.

In this tutorial, we will walk you through the process of designing a custom animated banner using HTML, CSS, and JavaScript. We will cover the basics of each language and provide step-by-step instructions on how to create a basic animated banner.


HTML (Hypertext Markup Language) is the backbone of any website. It is the language used to structure content and define the layout of a webpage. In our case, we will use HTML to create the basic structure of our animated banner.

To get started, open a new file in your preferred text editor and save it as "index.html". Then, copy and paste the following code into your file:

<!DOCTYPE html>
    <meta charset="utf-8">
    <title>Custom Animated Banner</title>
    <div class="banner">
      <img src="your-image-url.jpg">

Let's break down what this code does. The first line <!DOCTYPE html> is a declaration that tells the browser that this is an HTML document. The <html> tags mark the beginning and end of the document, and everything between them is HTML code.

The <head> section contains information about the document, such as the character set and the title of the page. In this case, we set the title to "Custom Animated Banner".

The <body> section is where we define the content of the webpage. In our case, we create a <div> element with the class "banner" and insert an <img> element with the source attribute set to the URL of our banner image.


CSS (Cascading Style Sheets) is a language used to style HTML elements. It allows you to change the appearance of your webpage, including the layout, colors, fonts, and more.

In our case, we will use CSS to position and style our banner. Copy and paste the following code into a new file named "style.css":

.banner {
  position: relative;
  width: 100%;
  height: 200px;
  overflow: hidden;

.banner img {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  animation: slide 10s infinite;

@keyframes slide {
  0% {
    transform: translateX(0%);
  100% {
    transform: translateX(-100%);

Let's break down what this code does. We first select the .banner class and set its position to relative, which allows us to position the child elements relative to the parent element. We also set the width to 100% and the height to 200px, which will define the size of our banner.

Next, we select the <img> element inside the .banner div and set its position to absolute. This allows us to position the image within the banner div. We also set the left and top properties to 0, which aligns the image to the top left corner of the banner. Finally, we set the width and height to 100%, which ensures that the image fills the entire banner.

We then define an animation for the image using the @keyframes rule. This animation is named "slide" and will last for 10 seconds and repeat indefinitely (infinite). The transform property is used to move the image horizontally across the banner by using the translateX function. We set the starting position to 0% (the image is at the left edge of the banner) and the ending position to -100% (the image has moved to the left of the banner and is no longer visible).


JavaScript is a scripting language used to add interactivity to webpages. In our case, we will use JavaScript to preload the banner image and ensure that the animation starts only when the image has loaded.

Copy and paste the following code into a new file named "script.js":

const banner = document.querySelector('.banner');
const image = banner.querySelector('img');

function preloadImage() {
  const src = image.getAttribute('src');
  const img = new Image();
  img.src = src;
  img.onload = () => {

window.addEventListener('load', preloadImage);

Let's break down what this code does. We first select the .banner element and the <img> element inside it using the querySelector method.

We then define a function called preloadImage, which gets the source attribute of the image using getAttribute. We then create a new Image object and set its source to the image URL. We use the onload property to add a class called "loaded" to the banner div once the image has loaded.

Finally, we add an event listener to the window object that listens for the load event, which indicates that all resources on the page have finished loading. When this event fires, we call the preloadImage function to start preloading the banner image.

Putting it all together

Now that we have our HTML, CSS, and JavaScript files, we need to link them together. Copy and paste the following code into your "index.html" file, between the <head> and <body> tags:

<link rel="stylesheet" href="style.css">
<script src="script.js"></script>

This code links to the "style.css" and "script.js" files we created earlier.

Save all three files and open the "index.html" file in your web browser. You should see your custom animated banner, which should slide to the left indefinitely. The animation should start only after the image has loaded, and you should see a "loaded" class added to the banner div in the HTML code.

Customizing your banner

You can customize your banner by changing the image, adjusting the banner size, or modifying the animation. For example, you could change the animation duration by modifying the animation property in the CSS file, or you could add more CSS rules to style the banner and make it stand out.

With some creativity and experimentation, you can create a custom animated banner that effectively promotes your brand or product and engages your audience. You can also add more interactivity to your banner by using JavaScript. For example, you could add event listeners to the banner to trigger certain actions when the user clicks on it or hovers over it. You could also add dynamic content to the banner by fetching data from an API or database and displaying it in the banner.

In conclusion, designing a custom animated banner with HTML, CSS, and JavaScript is a fun and creative way to promote your brand or product and engage your audience. By following the steps outlined in this tutorial, you can create a basic but effective animated banner that slides to the left indefinitely. With some additional customization and interactivity, you can make your banner stand out and capture your audience's attention.