Skip to main content

Penguin

The Project​

Animated and interactive penguin developed with CSS Transforms, creating a complete character with animations, interactions and an Antarctic landscape. The last guided project before the final portfolio.

Source Code​

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Penguin</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="left-mountain"></div>
<div class="back-mountain"></div>
<div class="sun"></div>
<div class="penguin">
<div class="penguin-head">
<div class="face left"></div>
<div class="face right"></div>
<div class="chin"></div>
<div class="eye left">
<div class="eye-lid"></div>
</div>
<div class="eye right">
<div class="eye-lid"></div>
</div>
<div class="blush left"></div>
<div class="blush right"></div>
<div class="beak top"></div>
<div class="beak bottom"></div>
</div>
<div class="shirt">
<div>💜</div>
<p>I CSS</p>
</div>
<div class="penguin-body">
<div class="arm left"></div>
<div class="arm right"></div>
<div class="foot left"></div>
<div class="foot right"></div>
</div>
</div>
<div class="ground"></div>
</body>
</html>

The "Total Review" Feeling​

At multiple moments during this project I thought it was oriented toward total review. freeCodeCamp was created with this perspective, but in this last project, maybe because it's the last guided project to conclude the course, I felt this sensation even more.

It's like the "greatest hits" of everything I've learned so far: CSS Variables, transforms, animations, positioning, gradients, pseudo-elements, advanced selectors... all in one adorable project!

The CSS Cursors Discovery​

I really liked the part where I learned cursor: not-allowed, I wanted to delve deeper to discover the others and this is what I found:

cursor: pointer;        /* 👆 Hand (clickable) */
cursor: grab; /* ✋ Open hand (grabbable) */
cursor: grabbing; /* ✊ Closed hand (dragging) */
cursor: not-allowed; /* 🚫 Access denied */
cursor: wait; /* ⏳ Hourglass (wait) */
cursor: help; /* ❓ Question mark */
cursor: text; /* 📝 Text cursor */

The UX impact of cursors: Each cursor instantly communicates an affordance to the user. pointer says "you can click", grab suggests "you can drag", wait informs "the system is processing", not-allowed prevents frustration by clearly showing limits. They're micro-interactions that make the interface more intuitive.

What I Learned​

Advanced CSS Transforms:

  • transform-origin for custom rotation points
  • scaleX(-1) to flip elements horizontally
  • Complex combinations of rotate + scale
  • transform on interactive states (:active)

Sophisticated Animations:

  • @keyframes with precise timing
  • animation with linear, infinite and custom durations
  • Waving animations that repeat infinitely

CSS Variables in Action:

  • Design system for penguin colors
  • Chromatic consistency throughout the project
  • Easy global modification

Creative Pseudo-elements:

  • ::before to create additional shapes
  • Layering with z-index for depth
  • Opacity for overlay effects

Creative Layout:

  • Absolute positioning for millimetric precision
  • Complex border-radius for organic shapes
  • Linear gradients for realistic gradations

The Energy for the Final Project​

I'm super excited for the final project, namely Personal Portfolio Webpage Certification Project!

Now it's time to put everything together in a portfolio that tells this incredible journey.


Next Project: Personal Portfolio Webpage (CERTIFICATION PROJECT!)