Cute animated LION made with HTML + CSS SASS

HTML
<html lang="en"> <head> <meta charset="utf-8"> <title>Mr. Cutest CSS Lion</title> <link href="http://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic" rel="stylesheet" type="text/css"> </head> <body> <div class="lion"> <span class="mane"> <span class="head"> <span class="eye left"></span> <span class="eye right"></span> <span class="nose"></span> </span> <span class="ear left"> <span class="inner"></span> </span> <span class="ear right"> <span class="inner"></span> </span> </span> <span class="body"> <span class="paw left"></span> <span class="paw right"></span> <span class="leg left"></span> <span class="leg right"></span> </span> <span class="tail">s</span> </div> </body> </html>
SASS
@import compass // ============== { ('_') } ============== // Let's make a lion with CSS and then animate him. Why? BECAUSE REASONS. // I also thought I'd use Mr.Lion to show a few examples of why I love using Sass to write CSS (http://sass-lang.com/) // I'm also using Compass (http://compass-style.org/) which goes along with Sass really well and saves you from writing all of the required vendor prefixes out. For example, instead of writing all the prefixes for border-radius you can just do @include border-radius(amount). Yay! @import compass/reset @import compass/css3 // ====================================== // Sass rocks because VARIABLES { ('_') } // ====================================== // Let's define some colours for Mr. Lion. Sass is AWESOME for this, since you can re-use these colour names all over and not have to change them in a bunch of places if Mr.Lion decides he wants to dye his fur pink one day. $tan: #f5cd88 $mane: #ed8641 $dkbrown: #604f31 // You can also use variables for other things, anything that you might want to repeat a lot or refer to in a way that's easy to see why you're using it. I'll use one for a common border style. $border-oval: 50% // ============================================ // Sass rocks because COLOUR FUNCTIONS { ('_') } // ============================================ // Mr. Lion also has a few highlights and shaded areas. Sass has this very cool inbuilt function to lighten or darken colours to create new colours based on our existing colour variables. Shiny. $tan-highlight: lighten($tan, 15%) $mane-shade: darken($mane, 5%) // =================================== // Sass rocks because MIXINS { ('_') } // =================================== // If we find ourselves repeating a bunch of properties on multiple elements, we can put these in a mixin to save ourselves repetition when using them over and over. Mixins can also be passed arguments if we need to customise them further! // For example, a good way to center absolutely positioned elements regardless of their width is to give them the below properties which we'll reuse as mixins. @mixin center-element-x left: 50% @include transform(translateX(-50%)) @mixin center-element left: 50% top: 50% @include transform(translateX(-50%) translateY(-50%)) // =================================== // Sass rocks because NESTING { ('_') } // =================================== // We can avoid so much of the usual repetition we get with writing CSS. W00t. body font-family: 'Lato', sans-serif padding: 50px 0 .lion width: 250px height: 300px position: relative margin: 0 auto span position: absolute .head width: 140px height: 105px top: 50px z-index: 2 background-color: $tan @include border-radius($border-oval) @include center-element-x .eye width: 15px height: 22px top: 30px z-index: 2 background-color: $dkbrown border: solid 10px $tan-highlight @include border-radius($border-oval) // &.left in Sass is the equivalent of doing .eye.left to chain classes in CSS. Less to write! Yay! &.left left: 10px &.right right: 10px -webkit-animation: blink 8s infinite .nose width: 18px height: 12px top: 70px z-index: 2 background-color: $dkbrown @include border-radius($border-oval) @include center-element-x .mane width: 219px height: 180px top: 0 z-index: 1 background-color: $mane @include border-radius($border-oval) @include center-element-x -webkit-animation: head-tilt 6s infinite //Bottom of mane &:before content: '' display: block position: absolute width: 0 height: 0 bottom: -54px left: 60px color: $mane // You can also indent within properties in Sass to make things like // border sides easier to write! border: 50px solid transparent top: 100px solid $mane bottom: 0 @include transform(scaleX(1.9)) //Mane shading &:after content: '' display: block position: absolute width: 140px height: 105px bottom: 15px left: 40px background-color: $mane-shade @include border-radius($border-oval) .ear // You can use variables within selectors too, where you might find yourself // repeating a value multiple times. $ear: 60px width: $ear height: $ear top: 18px z-index: 2 background-color: $tan @include border-radius($ear) &.left left: -15px &:before left: 60px @include transform(scaleX(1.5) rotate(-20deg)) &.right right: -15px &:before right: 120px top: -35px @include transform(scaleX(1.5) rotate(20deg)) .inner // Another super-useful thing that Sass can do is calculations! :D // To make sure that Mr. Lion's inner ear always stays in proportion // with his outer ear, we could do this: $inner-ear: $ear * 0.66 width: $inner-ear height: $inner-ear background-color: $tan-highlight @include border-radius($inner-ear) @include center-element // Mane fluff &:before content: '' position: absolute width: 0 height: 0 top: -30px color: $mane border: 15px solid transparent bottom: 30px solid $mane top: 0 @include transform(scaleX(1.5)) .body width: 120px height: 260px top: 30px background-color: $tan @include border-radius(40px) @include center-element-x // Belly &:after content: '' position: absolute width: 80px height: 200px left: 20px top: 40px background-color: $tan-highlight @include border-radius(40px) .tail font-size: 150px right: 0 top: 160px color: $tan @include transform(rotate(20deg)) -webkit-animation: sway 2s linear alternate infinite -webkit-transform-origin: 20px 80px &:after content: 'w' position: absolute top: 49px left: 43px font: size: 40px weight: 700 color: $mane @include transform(rotate(110deg)) .leg width: 50px height: 100px bottom: -30px z-index: -1 background-color: $tan @include border-radius(15px) &.left left: 0 &.right right: 0 &:after content: 'm' display: block position: absolute font-size: 30px bottom: -3px color: $tan-highlight @include center-element-x .paw width: 60px height: 35px top: 133px background-color: $tan @include border-radius(15px) &.left left: -35px &:after left: 5px &.right right: -35px &:after right: 5px -webkit-animation: wave 0.5s 5s linear 3 //inner paw &:after $paw: 20px content: '' display: block position: absolute top: 7px width: $paw height: $paw background-color: $tan-highlight @include border-radius($paw) // ============================================ // Animations for Mr. Lion { ('_') } // ============================================ @-webkit-keyframes sway from @include transform(rotate(20deg)) to @include transform(rotate(40deg)) @-webkit-keyframes head-tilt 0% @include transform(translateX(-50%) rotate(0deg)) 50% @include transform(translateX(-50%) rotate(-5deg)) 0% @include transform(translateX(-50%) rotate(0deg)) @-webkit-keyframes blink 0% @include transform(scaleY(1)) 50% @include transform(scaleY(1)) 51% @include transform(scaleY(0.1)) 52% @include transform(scaleY(1)) 100% @include transform(scaleY(1)) @-webkit-keyframes wave 0% @include transform(rotate(0deg)) 50% @include transform(rotate(-30deg)) 100% @include transform(rotate(0deg))
JAVASCRIPT
Expand for more options Login