Mario creado solo con CSS

Esta es una creacion de Alexander Howes a quien cito:

Me sentía como poner mis habilidades CSS a prueba e intentar algo que nunca he hecho antes, pareció bastante complicado y algo siempre se puede mejorar, al igual que la “M” o incluso añadir algunas sombras y luces pero no está mal creo!

Alexander no utilizo ningun Javascript o imagenes para creacion del rostro de Mario, solo recurrio a la semantica HTML5 y CSS3, lo que en mi opinion resulto algo muy cool.

Sin hablar mas este es el codigo de Alexander, el cual me complace en compartir.

Super Mario CSS

<div id="logo">
    <div id="m1"></div>
    <div id="m2"></div>
    <div id="m3"></div>
    <div id="m4"></div>
  </div>
  <div id="left-ear"></div>
  <div id="right-ear"></div>
<div id="face"></div>
  <div id="moreface"></div>
  <div id="left-sideburn"></div>
  <div id="right-sideburn"></div>
  <div id="cheeks"></div>
  <div id="left-brow"></div>
  <div id="right-brow"></div>
  <div id="moustache">
<span></span>
   <span></span>
   <span></span>
   <span></span>
   <span></span>
   <span></span>
</div>
  <div id="left-eye"></div>
  <div id="right-eye"></div>
  <div id="nose"></div>
  <div id="mouth"></div>
  <div id="bubble">
   <h3>Its-a-me Mario!</h3>
</div>
</div> 

como lo ven solo utilizo IDs para ir dibujando todo con propiedades de CSS. Algo muy cool.

* {
	-webkit-transition: all 0.4s ease-in-out;
  -moz-transition:    all 0.4s ease-in-out;
  -o-transition:			all 0.4s ease-in-out;
  transition: 				all 0.4s ease-in-out;
}

#head {
  width: 240px;
  height: 300px;
  margin: 20px auto;
  border-radius: 150px;
  position: relative;
}

#hat {
  position: absolute;
  width: 270px;
  height: 200px;
  -webkit-border-radius: 50% 50% 100px 100px;
  -moz-border-radius: 50% 50% 100px 100px;
  -o-border-radius: 50% 50% 100px 100px;
	border-radius: 50% 50% 100px 100px;
  background: #f30015;
  left: -15px;
  top: -15px;
}

#face {
  border-top: solid 15px #9c0008;
  position: absolute;
  width: 230px;
  height: 90px;
  top: 100px;
  left: 5px;
  background: #ffcca4;
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  -o-border-radius: 50%;
  border-radius: 50%;
}

#face:before {
  content: &quot;&quot;;
  border-top: solid 15px #d60410;
  position: absolute;
  width: 200px;
  height: 68px;
  top: -23px;
  left: 15px;
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  -o-border-radius: 50%;
  border-radius: 50%;
}

#logo {
  position: absolute;
  width: 90px;
  height: 90px;
  background: #FFF;
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  -o-border-radius: 50%;
  border-radius: 50%;
  top: 25px;
  left: 50%;
  margin-left: -45px;
}

#m1 {  
  width: 10px;
  height: 50px;
  position: absolute;
  background: #f30015;
	top: 14px;
  left: 20px;
  -webkit-transform: skew(-35deg) rotate(-15deg);
  -moz-transform: skew(-35deg) rotate(-15deg);
  -o-transform: skew(-35deg) rotate(-15deg);
  transform: skew(-35deg) rotate(-15deg);
}

#m4 {  
  width: 10px;
  height: 50px;
  position: absolute;
  background: #f30015;
	top: 14px;
  right: 20px;
  -webkit-transform: skew(35deg) rotate(15deg);
  -moz-transform: skew(35deg) rotate(15deg);
  -o-transform: skew(35deg) rotate(15deg);
  transform: skew(35deg) rotate(15deg);
}

#m2 {  
  width: 10px;
  height: 30px;
  position: absolute;
  background: #f30015;
	top: 15px;
  left: 35px;
  -webkit-transform: skew(15deg);
  -moz-transform: skew(15deg);
  -o-transform: skew(15deg);
  transform: skew(15deg);
}

#m3 {  
  width: 10px;
  height: 30px;
  position: absolute;
  background: #f30015;
	top: 15px;
  left: 45px;
  -webkit-transform: skew(-15deg);
  -moz-transform: skew(-15deg);
  -o-transform: skew(-15deg);
  transform: skew(-15deg);
}

#moreface {
  position: absolute;
  width: 230px;
  height: 160px;
  top: 150px;
  left: 5px;
  -webkit-border-radius: 0px 0px 200px 200px;
  -moz-border-radius: 0px 0px 200px 200px;
  -o-border-radius: 0px 0px 200px 200px;
  border-radius: 0px 0px 200px 200px;
  background: #ffcca4;
}

#left-sideburn {
  position: absolute;
  width: 15px;
  height: 50px;
  top: 134px;
  left: 5px;
  -webkit-border-radius: 60px 0px;
  -moz-border-radius: 60px 0px;
  -o-border-radius: 60px 0px;
  border-radius: 60px 0px;
  background: #552305;
}

#right-sideburn {
  position: absolute;
  width: 15px;
  height: 50px;
  top: 134px;
  right: 5px;
  -webkit-border-radius: 0px 60px;
  -moz-border-radius: 0px 60px;
  -o-border-radius: 0px 60px;
  border-radius: 0px 60px;
  background: #552305;
}

#left-ear{
  position: absolute;
  top: 138px;
  left: -28px;
  width: 60px;
  height: 80px;
  background: #ffcca4;
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  -o-border-radius: 50%;
  border-radius: 50%;
}

#right-ear{
  position: absolute;
  top: 138px;
  right: -28px;
  width: 60px;
  height: 80px;
  background: #ffcca4;
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  -o-border-radius: 50%;
  border-radius: 50%;
}

#cheeks {
  position: absolute;
  width: 150px;
  height: 100px;
  top: 210px;
  left: 50%;
  margin-left: -75px;
  background: #ffcca4;
  -webkit-border-radius: 100px;
  -moz-border-radius: 100px;
  -o-border-radius: 100px;
  border-radius: 100px;
}

#cheeks:before {
  content: &quot;&quot;;
  position: absolute;
  width: 150px;
  height: 120px;
  top: -50px;
  left: 30px;
  margin-left: -75px;
  background: #ffcca4;
  -webkit-border-radius: 100px;
  -moz-border-radius: 100px;
  -o-border-radius: 100px;
  border-radius: 100px;
}

#cheeks:after {
  content: &quot;&quot;;
  position: absolute;
  width: 150px;
  height: 120px;
  top: -50px;
  right: 30px;
  margin-right: -75px;
  background: #ffcca4;
  -webkit-border-radius: 100px;
  -moz-border-radius: 100px;
  -o-border-radius: 100px;
  border-radius: 100px;
}

#nose {
  position: absolute;
  width: 90px;
  height: 70px;
  background: #ffcca4;
  background: -webkit-radial-gradient(30px 21px, circle farthest-side, #fffcce, #fdd4ac, #f8c49f, #dd9c7f);
  background: -moz-radial-gradient(30px 21px, circle farthest-side, #fffcce, #fdd4ac, #f8c49f, #dd9c7f);
  background: -o-radial-gradient(30px 21px, circle farthest-side, #fffcce, #fdd4ac, #f8c49f, #dd9c7f);
	background: radial-gradient(30px 21px, circle farthest-side, #fffcce, #fdd4ac, #f8c49f, #dd9c7f);
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  -o-border-radius: 50%;
  border-radius: 50%;
  top: 180px;
  left: 50%;
  margin-left: -45px;
}

#left-eye {
  position: absolute;
  top: 150px;
  width: 40px;
  height: 70px;
  background: #FFF;
  left: 25%;
  -webkit-border-radius: 40px 25px;
  -moz-border-radius: 40px 25px;
  -o-border-radius: 40px 25px;
  border-radius: 40px 25px;
}

#left-eye:before {
  content: &quot;&quot;;
  position: absolute;
  width: 30px;
  height: 50px;
  right: 0px;
  bottom: 10px;
  background: #4eefff;
  -webkit-border-radius: 40px 30px;
  -moz-border-radius: 40px 30px;
  -o-border-radius: 40px 30px;
  border-radius: 40px 30px;
}

#left-eye:after {
  content: &quot;&quot;;
  position: absolute;
  width: 25px;
  height: 40px;
  right: 0px;
  bottom: 10px;
  background: #000;
  -webkit-border-radius: 40px 30px;
  -moz-border-radius: 40px 30px;
  -o-border-radius: 40px 30px;
  border-radius: 40px 30px;
}

#right-eye {
  position: absolute;
  top: 150px;
  width: 40px;
  height: 70px;
  background: #FFF;
  right: 25%;
  -webkit-border-radius: 25px 40px;
  -moz-border-radius: 25px 40px;
  -border-radius: 25px 40px;
  border-radius: 25px 40px;
}

#right-eye:before {
  content: &quot;&quot;;
  position: absolute;
  width: 30px;
  height: 50px;
  left: 0px;
  bottom: 10px;
  background: #4eefff;
  -webkit-border-radius: 30px 40px;
  -moz-border-radius: 30px 40px;
  -o-border-radius: 30px 40px;
  border-radius: 30px 40px;
}

#right-eye:after {
  content: &quot;&quot;;
  position: absolute;
  width: 25px;
  height: 40px;
  left: 0px;
  bottom: 10px;
  background: #000;
  -webkit-border-radius: 30px 40px;
  -moz-border-radius: 30px 40px;
  -o-border-radius: 30px 40px;
  border-radius: 30px 40px;
}

#right-brow {
  position: absolute;
  background: #552305;
  right: 20%;
  top: 125px;
  width: 60px;
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  -o-border-radius: 50%;
	border-radius: 50%;
  height: 50px;
  -webkit-transform: rotate(8deg);
  -moz-transform: rotate(8deg);
  -o-transform: rotate(8deg);
  transform: rotate(8deg);
}

#right-brow:after {
  content: &quot;&quot;;
  position: absolute;
  width: 60px;
  height: 50px;
  top: 18px;
  right: 0px;
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  -o-border-radius: 50%;
  border-radius: 50%;
  background: #ffcca4;
}

#left-brow {
  position: absolute;
  background: #552305;
  left: 20%;
  top: 125px;
  width: 60px;
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  -o-border-radius: 50%;
  border-radius: 50%;
  height: 50px;
  -webkit-transform: rotate(-8deg);
  -moz-transform: rotate(-8deg);
  -o-transform: rotate(-8deg);
  transform: rotate(-8deg);
}

#left-brow:after {
  content: &quot;&quot;;
  position: absolute;
  width: 60px;
  height: 50px;
  top: 18px;
  left: 0px;
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  -o-border-radius: 50%;
  border-radius: 50%;
  background: #ffcca4;
}

#moustache:after {
  content: &quot;&quot;;
  position: absolute;
  width: 180px;
  height: 50px;
  top: 176px;
  background: #ffcca4;
  left: 50%;
  margin-left: -90px;
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  -o-border-radius: 50%;
  border-radius: 50%;
}

#mouth {
  position: absolute;
  width: 70px;
  height: 20px;
  top: 255px;
  left: 50%;
  margin-left: -35px;
  border-bottom: 3px solid #bb7a61;
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  -o-border-radius: 50%;
  border-radius: 50%;
  -webkit-animation: talking 1s 4;
  -moz-animation: talking 1s 4;
  -o-animation: talking 1s 4;
  animation: talking 1s 4;
}

#moustache span {
  display: block;
  position: absolute;
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  -o-border-radius: 50%;
  border-radius: 50%;
  background: #552305;
}

#moustache span:nth-child(1) { 
  width: 40px;
  height: 50px;
  top: 200px;
  left: 30px;
  -webkit-transform: rotate(15deg);
  -moz-transform: rotate(15deg);
  -o-transform: rotate(15deg);
  transform: rotate(-15deg);
}

#moustache span:nth-child(2) { 
  width: 40px;
  height: 50px;
  top: 210px;
  left: 60px;
  -webkit-transform: rotate(15deg);
  -moz-transform: rotate(15deg);
  -o-transform: rotate(15deg);
  transform: rotate(15deg);
}

#moustache span:nth-child(3) { 
  width: 42px;
  height: 50px;
  top: 213px;
  left: 86px;
}

#moustache span:nth-child(4) { 
  width: 42px;
  height: 50px;
  top: 212px;
  left: 118px;
}

#moustache span:nth-child(5) { 
  width: 42px;
  height: 50px;
  top: 206px;
  left: 145px;
}

#moustache span:nth-child(6) { 
  width: 40px;
  height: 50px;
  top: 204px;
  right: 30px;
  -webkit-transform: rotate(15deg);
  -moz-transform: rotate(15deg);
  -o-transform: rotate(15deg);
  transform: rotate(15deg);
}

#credits {
  position: fixed;
  right: 0;
  top: 0;
  width: 300px;
}

h1 {
  margin: 0;
}

h1 span, p strong {
  color: #f30015;
}

#bubble {
  position: absolute;
  padding: 15px;
  background: #f30015;
  left: -100px;
  top: 270px;
  color: white;
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  -o-border-radius: 50%;
  border-radius: 50%;
}

#bubble:after{
	content: &quot;&quot;;
	position: absolute;
	right: 0px;
  top: 10px;
	border-width: 29px 0 0 35px;
	border-style: solid;
	border-color: #f30015 transparent;

Ejemplo desde CodePen

Recomendado