<div id="a-robot">
      <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="334 -116 1280 1024" style="enable-background:new 334 -116 1280 1024;" xml:space="preserve">
        <style type="text/css">
        	.st0{display:none;}
        	.st1{display:inline;}
        	.st2{fill:#76CC71;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
        	.st3{fill:#7F7FD3;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
        	.st4{fill:#FFFFFF;}
        	.st5{fill:#498943;}
        	.st6{fill:#FFFFFF;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
        	.st7{fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
        	.st8{display:inline;fill:#76CC71;stroke:#000000;stroke-width:5;stroke-miterlimit:10;}
        	.st9{display:inline;fill:#7F7FD3;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
        	.st10{display:inline;fill:#76CC71;stroke:#000000;stroke-width:2;stroke-miterlimit:10;}
        	.st11{display:inline;fill:#7F7FD3;stroke:#231F20;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
        	.st12{fill:#76CC71;stroke:#231F20;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
        	.st13{fill:#7F7FD3;stroke:#231F20;stroke-width:2;stroke-linecap:round;stroke-miterlimit:10;}
        </style>

        <g id="voetvoorrechts">
        	<polygon class="st3" points="1014,557 1050.2,560 1057.8,583.5 1059,599.2 1016,598 1009.8,574 	"/>
        	<polygon class="st2" points="1011,583 1014,612 1067.4,611.5 1062.6,590.8 1058.2,583.5 1058.6,598.8 1016,598 	"/>
        	<path class="st12" d="M1054.6,574c0,5.3-1.4,9.6-3.2,9.6c-1.8,0-3.2-4.3-3.2-9.6s0-14,1.8-14C1051.8,560,1054.6,568.6,1054.6,574z"
        		/>
        </g>
        <g id="voetvoorlinks">
        	<polygon class="st3" points="989.2,557 953,560 945.4,583.5 944.2,599.2 987.2,598 993.4,574 	"/>
        	<polygon class="st2" points="992.2,583 989.2,612 935.8,611.5 940.6,590.8 945,583.5 944.6,598.8 987.2,598 	"/>
        	<path class="st12" d="M948.6,574c0,5.3,1.4,9.6,3.2,9.6s3.2-4.3,3.2-9.6s0-14-1.8-14S948.6,568.6,948.6,574z"/>
        </g>
        <g id="voetrechts">
        	<g>
        		<polygon class="st3" points="1013,594 1130,594 1126,577 1109,574 1098,561 1013,561 		"/>
        		<polygon class="st2" points="1129,590 1129,590 1144,604 1111,604 1008,604 1013,584 1013,583.7 1020,594 		"/>
        		<circle class="st12" cx="1039" cy="577" r="12.5"/>
        	</g>
        	<g>
        		<polygon class="st3" points="1013,594 1130,594 1126,577 1109,574 1098,561 1013,561 		"/>
        		<polygon class="st2" points="1129,590 1129,590 1144,604 1111,604 1008,604 1013,584 1013,583.7 1020,594 		"/>
        		<circle class="st12" cx="1039" cy="577" r="12.5"/>
        	</g>
        </g>
        <g id="voetlinks">
        	<g>
        		<polygon class="st3" points="990,594 873,594 877,577 894,574 905,561 990,561 		"/>
        		<polygon class="st2" points="874,590 874,590 859,604 892,604 995,604 990,584 990,583.7 983,594 		"/>
        		<circle class="st12" cx="964" cy="577" r="12.5"/>
        	</g>
        	<g>
        		<polygon class="st3" points="990,594 873,594 877,577 894,574 905,561 990,561 		"/>
        		<polygon class="st2" points="874,590 874,590 859,604 892,604 995,604 990,584 990,583.7 983,594 		"/>
        		<circle class="st12" cx="964" cy="577" r="12.5"/>
        	</g>
        </g>
        <g id="bovenbeenrechts">
        	<rect x="1013" y="335" class="st2" width="39" height="58"/>
        	<rect x="1019" y="393" class="st2" width="26" height="48"/>
        </g>
        <g id="onderbeenrechts">
        	<g>
        		<rect x="1013" y="503" class="st2" width="39" height="58"/>
        		<rect x="1019" y="455" class="st2" width="26" height="48"/>
        		<circle class="st3" cx="1031.5" cy="448.5" r="20.5"/>
        	</g>
        </g>
        <g id="bovenbeenlinks">
        	<rect x="951" y="335" class="st2" width="39" height="58"/>
        	<rect x="958" y="393" class="st2" width="26" height="48"/>
        </g>
        <g id="onderbeenlinks">
        	<g>
        		<rect x="951" y="503" class="st2" width="39" height="58"/>
        		<rect x="958" y="455" class="st2" width="26" height="48"/>
        		<circle class="st3" cx="971.5" cy="448.5" r="20.5"/>
        	</g>
        </g>
        <g id="armrechts">
          <g id="bovenarmrechts">
          	<rect x="1085" y="144" class="st3" width="33" height="33"/>
          	<polygon class="st3" points="1061,154 1103,167 1103,125 1061,125 	"/>
          	<rect x="1092" y="172" class="st3" width="33" height="33"/>
          	<circle class="st2" cx="1092.5" cy="153.5" r="3.5"/>
            </g>
            <g id="onderarmrechts-hand">
              <g id="onderarmrechts">
                <g>
                  <g>
                    <polygon class="st3" points="1108,247 1125,247 1125,215 1092,215 			"/>
                    <polygon class="st3" points="1108,277 1125,277 1125,245 1105,241 			"/>
                  </g>
                </g>
                <circle class="st3" cx="1108.5" cy="205.5" r="21.5"/>
              </g>
              <g id="handrechts">
          	<g>
          		<g>
          			<rect x="1110.7" y="300.8" class="st2" width="7.7" height="21.1"/>
          			<rect x="1110.6" y="321.9" class="st2" width="7.7" height="14.1"/>
          		</g>
          		<g>

          				<rect x="1094" y="304.6" transform="matrix(-0.5 0.866 -0.866 -0.5 1923.9934 -493.8651)" class="st2" width="21.1" height="7.7"/>

          				<rect x="1088.7" y="319.8" transform="matrix(-0.5 0.866 -0.866 -0.5 1923.9197 -463.3809)" class="st2" width="14.1" height="7.7"/>
          		</g>
          		<g>

          				<rect x="1088" y="296.3" transform="matrix(-0.6428 0.766 -0.766 -0.6428 2034.5994 -348.3445)" class="st2" width="21.1" height="7.7"/>

          				<rect x="1083.4" y="306.6" transform="matrix(0.766 0.6428 -0.6428 0.766 456.0049 -625.4946)" class="st2" width="7.7" height="14.1"/>
          		</g>
          		<g>
          			<rect x="1123.3" y="300.8" class="st2" width="7.7" height="21.1"/>
          			<rect x="1123.2" y="321.9" class="st2" width="7.7" height="14.1"/>
          		</g>
          		<circle class="st2" cx="1117" cy="291.8" r="19.8"/>
          		<g>
          			<g>
          				<rect x="1138.8" y="293.1" class="st2" width="19.2" height="10.2"/>
          				<rect x="1147.8" y="293.1" class="st2" width="10.2" height="16"/>
          			</g>
          			<circle class="st2" cx="1134.3" cy="298.2" r="7.7"/>
          		</g>
          	</g>
          </g>
          </g>
        </g>
        <g id="armlinks">
        	<g>
        		<g>
        			<polygon class="st3" points="891,247 874,247 874,215 907,215 			"/>
        			<polygon class="st3" points="891,277 874,277 874,245 894,241 			"/>
        		</g>
        	</g>
        	<circle class="st3" cx="888.5" cy="205.5" r="21.5"/>
        </g>
        <g id="handlinks">
        	<g>
        		<g>
        			<rect x="880.7" y="300.8" class="st2" width="7.7" height="21.1"/>
        			<rect x="880.7" y="321.9" class="st2" width="7.7" height="14.1"/>
        		</g>
        		<g>

        				<rect x="890.6" y="297.9" transform="matrix(-0.866 0.5 -0.5 -0.866 1823.2738 128.3152)" class="st2" width="7.7" height="21.1"/>

        				<rect x="899.4" y="316.6" transform="matrix(-0.866 0.5 -0.5 -0.866 1847.2578 152.299)" class="st2" width="7.7" height="14.1"/>
        		</g>
        		<g>

        				<rect x="896.6" y="289.6" transform="matrix(-0.766 0.6428 -0.6428 -0.766 1783.1064 -48.7322)" class="st2" width="7.7" height="21.1"/>

        				<rect x="908" y="306.5" transform="matrix(-0.766 0.6428 -0.6428 -0.766 1811.8617 -32.3203)" class="st2" width="7.7" height="14.1"/>
        		</g>
        		<g>
        			<rect x="868.1" y="300.8" class="st2" width="7.7" height="21.1"/>
        			<rect x="868.1" y="321.9" class="st2" width="7.7" height="14.1"/>
        		</g>
        		<circle class="st2" cx="882" cy="291.8" r="19.8"/>
        		<g>
        			<g>
        				<rect x="841" y="293.1" class="st2" width="19.2" height="10.2"/>
        				<rect x="841" y="293.1" class="st2" width="10.2" height="16"/>
        			</g>
        			<circle class="st2" cx="864.7" cy="298.2" r="7.7"/>
        		</g>
        	</g>
        </g>
        <g id="bovenarmlinks">
        	<rect x="881" y="144" class="st3" width="33" height="33"/>
        	<polygon class="st3" points="938,154 896,167 896,125 938,125 	"/>
        	<rect x="874" y="172" class="st3" width="33" height="33"/>
        	<circle class="st2" cx="906.5" cy="153.5" r="3.5"/>
        </g>
        <g id="onderlichaam">
        	<polygon class="st3" points="951,311 951,336 989,358 1011,358 1052,334 1052,311 	"/>
        	<path class="st2" d="M1016.9,332.5h-29.4H1016.9c-0.8-7.6-7.1-13.5-14.9-13.5c-8.3,0-15,6.7-15,15s6.7,15,15,15
        		c7.8,0,14.2-5.9,14.9-13.5h-29.4h29.4c0-0.5,0.1-1,0.1-1.5S1017,333,1016.9,332.5z"/>
        </g>
        <g id="bovenlichaam">
        	<polygon class="st2" points="1053,311 950,311 923,128 1079,128 	"/>
        	<path id="tandwiel" class="st13" d="M1041.4,213.1v-10.2h-9.7c-0.1-0.8-0.3-1.7-0.5-2.5l9-3.7l-3.9-9.5l-9,3.7c-0.1-0.1-0.1-0.2-0.2-0.3
        		c-0.2-0.3-0.3-0.5-0.5-0.8s-0.3-0.5-0.5-0.8c-0.1-0.1-0.1-0.2-0.2-0.3l6.9-6.9l-7.2-7.2l-6.9,6.9c-0.7-0.5-1.4-1-2.1-1.4l3.7-9
        		l-9.5-3.9l-3.7,9c-0.8-0.2-1.6-0.4-2.5-0.5V166h-10.2v9.8c-0.8,0.1-1.6,0.3-2.4,0.5l-3.8-9.1l-9.5,3.9l3.8,9.2
        		c-0.7,0.4-1.4,0.9-2,1.4l-7-7l-7.2,7.2l7.1,7.1c-0.5,0.7-0.9,1.3-1.3,2l-9.3-3.9l-3.9,9.5l9.4,3.9c-0.2,0.8-0.3,1.5-0.4,2.3h-10.2
        		V213H968c0.1,0.8,0.3,1.5,0.5,2.3l-9.5,3.9l3.9,9.5l9.5-4l0,0c0.2,0.3,0.4,0.6,0.6,0.9c0.2,0.3,0.4,0.6,0.6,0.9l0,0l-7.3,7.3
        		l7.2,7.2l7.3-7.3c0.6,0.5,1.3,0.9,1.9,1.3l-3.9,9.5l9.5,3.9l3.9-9.4c0.8,0.2,1.5,0.3,2.3,0.5v10.2h10.2v-10.1
        		c0.8-0.1,1.6-0.3,2.3-0.4l3.9,9.3l9.5-3.9l-3.8-9.2c0.7-0.4,1.4-0.9,2-1.3l7,7l7.2-7.2l-7-7c0.5-0.7,1-1.3,1.4-2l9.1,3.8l3.9-9.5
        		l-9-3.7c0.2-0.8,0.4-1.6,0.5-2.5h9.7V213.1z M1007.4,227.1c-10.7,4.4-23-0.6-27.4-11.4c-3.8-9.3-0.5-19.7,7.4-25.3
        		c0.1-0.1,0.2-0.1,0.3-0.2s0.2-0.1,0.3-0.2c8.1-5.2,19.1-4.3,26.2,2.8c8.2,8.2,8.2,21.5,0,29.7c-1,1-2,1.8-3.1,2.6
        		C1009.9,225.9,1008.7,226.6,1007.4,227.1z"/>
        </g>
        <g id="nek">
        	<rect x="975" y="106" class="st3" width="49" height="12"/>
        	<rect x="975" y="116" class="st3" width="49" height="12"/>
        </g>
        <g id="Hoofd">
        	<g>
        		<g>
        			<path class="st2" d="M931.1,22.3l-8.5-27.7c0,0,46.8-29.2,76.4-29.2c29.6,0,78.8,29.2,78.8,29.2l-37.2,111.6H957l-14.7-47.6
        				L931,22"/>
        			<path class="st2" d="M958.4,39.6"/>
        		</g>
        		<g>
        			<path class="-st4" d="M989.6-4.4"/>
        		</g>
        		<g>
        			<path class="st4" d="M923.6-4.4"/>
        		</g>
        		<path class="st6" d="M1052.8,36.4"/>
        	</g>
        </g>
        <g id="Ogen_en_mond">
        	<g>
        		<g>
        			<path class="st4" d="M989.6-4.4"/>
        		</g>
        		<g>
        			<path class="st4" d="M923.6-4.4"/>
        		</g>
        		<g>
        			<circle cx="962.6" cy="19.8" r="5.5"/>
        			<g>
        				<path class="st5" d="M968.1,19.8c0,1.4-0.5,2.9-1.5,4s-2.4,1.9-4,2s-3.3-0.4-4.5-1.5s-2-2.8-2-4.5s0.8-3.4,2-4.5
        					s2.9-1.7,4.5-1.5c1.6,0.1,3,0.9,4,2C967.6,16.9,968.1,18.3,968.1,19.8z M968.1,19.8c0-1.5-0.7-2.9-1.7-3.8
        					c-1.1-0.9-2.5-1.4-3.8-1.2c-1.3,0.1-2.5,0.8-3.3,1.7s-1.2,2.1-1.2,3.3s0.4,2.4,1.2,3.3c0.8,0.9,2,1.6,3.3,1.7
        					c1.3,0.1,2.7-0.3,3.8-1.2C967.4,22.6,968.1,21.2,968.1,19.8z"/>
        			</g>
        		</g>
        		<polygon class="st6" points="976.4,56.8 960.4,56.8 952.4,40.4 964.4,40.4 		"/>
        		<polygon class="st6" points="1000.4,56.8 976.4,56.8 964.4,40.4 1000.4,40.4 		"/>
        		<path class="st6" d="M952.4,40.4c0,0,8.8,8.6,18,8.4"/>
        		<path class="st6" d="M1052.8,36.4"/>
        		<g>
        			<polyline class="st9" points="1008,-41.7 998.8,-27.2 989.6,-41.7 			"/>
        			<path d="M1008-41.7c-1.2,2.6-2.5,5.1-3.9,7.6s-2.9,4.9-4.4,7.3l-0.8,1.3l-0.8-1.3c-1.5-2.4-3-4.8-4.4-7.3s-2.8-5-3.9-7.6
        				c1.9,2.2,3.6,4.5,5.3,6.8s3.2,4.7,4.8,7.1h-1.7c1.6-2.4,3.1-4.8,4.8-7.1C1004.4-37.2,1006.1-39.5,1008-41.7z"/>
        		</g>
        		<polygon class="st6" points="1024.4,56.8 1040.4,56.8 1048.4,40.4 1036.4,40.4 		"/>
        		<polygon class="st6" points="1000.4,56.8 1024.4,56.8 1036.4,40.4 1000.4,40.4 		"/>
        		<path class="st6" d="M1048.4,40.4c0,0-8.8,8.6-18,8.4"/>
        		<line class="st7" x1="970.4" y1="48.8" x2="1030.4" y2="48.8"/>
        		<g>
        			<circle cx="1038.6" cy="19.8" r="5.5"/>
        			<g>
        				<path class="st5" d="M1044.1,19.8c0,1.4-0.5,2.9-1.5,4s-2.4,1.9-4,2s-3.3-0.4-4.5-1.5s-2-2.8-2-4.5s0.8-3.4,2-4.5
        					s2.9-1.7,4.5-1.5c1.6,0.1,3,0.9,4,2C1043.6,16.9,1044.1,18.3,1044.1,19.8z M1044.1,19.8c0-1.5-0.7-2.9-1.7-3.8
        					c-1.1-0.9-2.5-1.4-3.8-1.2c-1.3,0.1-2.5,0.8-3.3,1.7c-0.8,0.9-1.2,2.1-1.2,3.3s0.4,2.4,1.2,3.3c0.8,0.9,2,1.6,3.3,1.7
        					c1.3,0.1,2.7-0.3,3.8-1.2C1043.4,22.6,1044.1,21.2,1044.1,19.8z"/>
        			</g>
        		</g>
        	</g>
        </g>
      </svg>
    </div>

    <ul id="buttons">
      <li><button id="robot-button">Robot</button></li>
      <li><button id="head-button">Head</button></li>
      <li><button id="arms-button">Arm</button></li>
      <li><button id="hands-button">Hand</button></li>
      <li><button id="body-button">Body</button></li>
      <li><button id="restart-button">Restart</button></li>
    </ul>
:root {
      --primary: #fff;
      --secondary: #333;
      --bg: #ccc;
      --highlight:#7F7FD3;
    }
    * {
      box-sizing:border-box;
    }
    html {
      font:100% / 250% "Helvetica";
      padding:0;
      margin:0;
      height:100%;
    }
    body {
      font-size: 1.5em;
      padding:0;
      margin:0;
      overflow:hidden;
      background-color: #000;
      display:flex;
      justify-content:center;
      flex-direction:column;
    }
    ul {
      list-style:none;
      margin:0;
      display:flex;
    }
    body > ul {
      box-shadow:inset 0 0 3px rgba(0,0,0,.2);
      padding:.5em;
      justify-content: center;
      position:absolute;
      bottom:0;
      width:100%;
      background-color: var(--highlight);
    }
    body > div,
svg {
       width:100vw;
       height:100vh;
    }
      
    li {
      margin-right:.5em
    }
    button {
      font-size: .7em;
      border-radius:.25em;
      padding:.15em .5em;
      box-shadow: 0 0 1px rgba(0,0,0,.6);
      background-color: var(--primary);
      color:var(--secondary);
      border:none;
    }
    button.paused {
      background-color: var(--secondary);
      color: var(--primary)
    }

ul li:last-of-type {
  margin-left:auto
}
// timelines
var tlRobot = new TimelineMax({ repeat: -1, paused: true, yoyo: true });
var tlHands = new TimelineMax({ repeat: -1, paused: true, yoyo: true });
var tlArms = new TimelineMax({ repeat: -1, paused: true, yoyo: true });
var tlHead = new TimelineMax({ repeat: -1, paused: true, yoyo: true });
var tlBody = new TimelineMax({ repeat: -1, paused: true, yoyo: true });


// robot elements
var robot = $('svg');
var robotParts = $$('svg > *');
var rightHand = $('#handrechts');
var rightArm = $('#armrechts');
var head = $('#Hoofd');
var rightBottomArmHand = $('#onderarmrechts-hand');
var body = $('#bovenlichaam');
var gear = $('#tandwiel');


// buttons
var robotBtn = $('#robot-button');
var headBtn = $('#head-button');
var armsBtn = $('#arms-button');
var handsBtn = $('#hands-button');
var bodyBtn = $('#body-button');
var restartBtn = $('#restart-button');

var buttons = $$('button');


// animate robot
tlRobot.staggerTo(
  robotParts,
  .25,
  {
    //scale: 1.5,
    //rotation: 360,
    opacity: 0,
    transformOrigin: '50% 50%',
    ease: Elastic.easeOut.config(1, 0.3)
  },
  .05
);

// animate hands
tlHands
  .to(rightHand, 0.125, {
    rotation: 30,
    transformOrigin: '50% 50%'
  })
  .to(rightHand, 0.125, {
    rotation: -30,
    transformOrigin: '50% 50%'
  });

// animate arms
tlArms
  .to(rightArm, 0.25, {
    rotation: -90,
    transformOrigin: '15% 0'
  })
  .to(rightBottomArmHand, 0.25, {
    rotation: -90,
    transformOrigin: '50% 10%'
  });

// animate head
tlHead
  .to(head, 0.25, {
    rotation: 360,
    transformOrigin: 'center, center'
  })
  .to(head, 0.25, {
    x: -20,
    transformOrigin: 'center, center',
    ease: Back.easeOut.config(1.7)
  });

// animate body
tlBody
  .to(body, 0.25, {
    scale: 1.3,
    transformOrigin: 'center, center'
  })
  .to(body, 0.25, {
    y: -20,
    transformOrigin: 'center, center',
    ease: Back.easeOut.config(1.7)
  })
  .to(
    gear,
    0.75,
    {
      rotation: 360,
      y: 30,
      transformOrigin: '50% 50%',
      ease: Elastic.easeOut.config(1, 0.3)
    },
    '-=0.5'
  );

// button events
robotBtn.addEventListener('click', function() {
  tlRobot.paused(!tlRobot.paused());
  this.classList.toggle('paused');
});
headBtn.addEventListener('click', function() {
  tlHead.paused(!tlHead.paused());
  this.classList.toggle('paused');
});
armsBtn.addEventListener('click', function() {
  tlArms.paused(!tlArms.paused());
  this.classList.toggle('paused');
});
handsBtn.addEventListener('click', function() {
  tlHands.paused(!tlHands.paused());
  this.classList.toggle('paused');
});
bodyBtn.addEventListener('click', function() {
  tlBody.paused(!tlBody.paused());
  this.classList.toggle('paused');
});
restartBtn.addEventListener('click', function() {
  
  
  buttons.forEach(function(button){
    button.classList.remove('paused');
  });
  tlRobot.restart().stop();
  tlHead.restart().stop();
  tlArms.restart().stop();
  tlHands.restart().stop();
  tlBody.restart().stop();

});

// helper functions
function $(el) {
  return document.querySelector(el);
}
function $$(els) {
  return document.querySelectorAll(els);
}
Run Pen

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. //cdnjs.cloudflare.com/ajax/libs/gsap/1.16.1/TweenMax.min.js
  2. //s3-us-west-2.amazonaws.com/s.cdpn.io/16327/DrawSVGPlugin.js?r=11
  3. https://cdnjs.cloudflare.com/ajax/libs/gsap/1.17.0/plugins/BezierPlugin.min.js