Skip to main content

Command Palette

Search for a command to run...

CSS makes the world go round 🌎

Published
β€’2 min read
CSS makes the world go round 🌎
C

I'm a full-stack developer from South Africa πŸ‡ΏπŸ‡¦. I love writing about JavaScript, HTML and CSS.

On Thursday I came across this really great tweet by Antonia

And I was inspired by it, so I wanted to have a look at this! (Yes, I'm addicted to smileys!)

So today we'll make the world go round with CSS

World round css

It's not as smooth as Antonia's example because the world only has three emoji's ☹️

HTML Structure

Our HTML is the simplest ever. Only one div!

<div class="world"></div>

CSS spinning world emoji

As for CSS this is where the magic happens!

Let's start my making the body a display flex and center everything with flex.

body {
  background: #333;
  display: flex;
  height: 100vh;
  align-items: center;
  justify-content: center;
}

Next up to our div!

.world {
  font-size: 250px;
  width: 250px;
  height: 328px;
}
.world::before {
  position: absolute;
  content: "🌎";
  z-index: 1;
  animation: world-tween 1s infinite;
}
.world::after {
  position: absolute;
  content: "🌎";
  animation: world 1s infinite;
}

We make the font-size really big and set our starting emoji 🌎 on our pseudo after class.

Then we set our animation to be world, for a duration of 1 second and loop forever!

All we need to do now is make the world animation:

@keyframes world {
  33% {
    content: '🌍';
  }
  66% {
    content: '🌏';
  }
}

Spencer, mentioned we can actually have another layer on top of this, which can hold a tween animation including opacity to make it slightly smoother. We added a ::before pseudo element to make this happen.

And for our world-tween animation:

@keyframes world-tween {
  16.5% {
    content: "🌍";
    opacity: 0.5;
  }
  33% {
    opacity: 0;
  }
  50% {
    content: "🌏";
    opacity: 0.5;
  }
  66% {
    opacity: 0;
  }
  83% {
    content: "🌎";
    opacity: 0.5;
  }
}

There are only two world emoji's left, so we split our animation in two, and set our content!

That's it, CSS can make the world go round!

View this demo on Codepen.

Thank you for reading, and let's connect!

Thank you for reading my blog. Feel free to subscribe to my email newsletter and connect on Facebook or Twitter

S

You can make the animation sliiiightly smoother, by adding "in between" frames by creating a crossfade layer that displays in bewteen the current frames.

Say, add a ::before pseudo element to .world, layer it directly on top of the ::after, and give it the following keyframes:

@keyframes world-tween{
    16.5% {
        content: '🌍';
        opacity: .5;
    } 
    33% {
        opacity: 0;
    }
    50% {
        content: '🌏';
        opacity: .5;
    }
    66% {
        opacity: 0;
    }
    83% {
        content: '🌎';
        opacity: .5;
    }
}
C

Wow Spencer, golden tip buddy!

That looks way better, going to update the code man!

More from this blog

D

Daily Dev Tips

887 posts

Looking to get into development? As a full-stack developer I guide you on this journey and give you bite sized tips every single day πŸ‘Š