Fun little interactive icon inspired by the brilliant icon designs for Dustin's Words.
https://thenounproject.com/dustinswords/
A Pen by Chris Gannon on CodePen.
Fun little interactive icon inspired by the brilliant icon designs for Dustin's Words.
https://thenounproject.com/dustinswords/
A Pen by Chris Gannon on CodePen.
<div class="container"> | |
<svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="600px" height="600px" viewBox="0 0 600 600" > | |
<line class="seesaw" fill="none" stroke="#000000" stroke-width="10" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="87.9" y1="484.8" x2="511.1" y2="269.2"/> | |
<g class="person"> | |
<path d="M179.1,428.8c-3-7-8.6-11.5-15.8-12.5v-30.2c0-14.9-8.6-28.3-20.6-35c12.5-6.7,20.6-19.7,20.6-35 | |
c0-22.1-17.8-39.8-39.8-39.8s-38.9,18.7-38.9,40.3c0,14.9,8.6,28.3,20.6,35c-12.5,6.7-20.6,19.7-20.6,35v35 | |
c0,16.3,9.6,30.2,24,36.5c6.3,2.8,17.3,2.9,17.3,2.9h11v11.5c0,12.5,9.1,22.6,21.1,23c0.5,0,1,0,1,0c5.8,0,11.5-2.4,15.8-6.7 | |
c4.3-4.3,6.7-9.6,6.7-15.8c0,0,0-31.2,0-35C181,434,180.5,432,179.1,428.8z"/> | |
<path fill="#FFFFFF" d="M94.1,316.5c0-16.8,13.4-30.2,30.2-30.2s30.2,13.4,30.2,30.2s-13.4,30.2-30.2,30.2S94.1,333.3,94.1,316.5z" | |
/> | |
<path fill="#FFFFFF" d="M171.9,473.5h-0.5c0,3.4-1.4,6.7-3.8,9.1c-2.4,2.4-5.8,3.8-9.1,3.8H158c-6.7-0.5-12-6.2-12-13.4v-21.6 | |
h-22.1c-16.3,0-29.8-13.4-29.8-30.2v-35c0-16.8,13.4-30.2,30.2-30.2s30.2,13.4,30.2,30.2V426h6.7c5.8,0,10.6,4.8,10.6,10.6V473.5z" | |
/> | |
</g> | |
<g class="arrow"> | |
<polygon points="503,195.7 503,98.3 439.2,98.3 439.2,195.7 396,195.7 470.9,253.8 546.2,195.7 "/> | |
<polygon fill="#FFFFFF" points="424.3,205.3 448.8,205.3 448.8,107.9 493.4,107.9 493.4,205.3 517.9,205.3 471.4,241.8 "/> | |
</g> | |
<g class="fulcrum"> | |
<g> | |
<path d="M339.8,479V377.2c0-4.8-1.2-9-2.4-13s-4.3-9.1-4.3-9.1c-7.2-10.6-19.2-17.8-33.1-17.8c-22.1,0-39.8,17.8-39.8,39.8v7.2 | |
l0.5,10.6v84H240v9.6h120V479H339.8z"/> | |
<path fill="#FFFFFF" d="M330.7,477.1h-60.5v-99.8c0-16.8,13.4-30.2,30.2-30.2c16.8,0,30.2,13.4,30.2,30.2V477.1z"/> | |
</g> | |
<circle cx="300.5" cy="377.2" r="8.6"/> | |
</g> | |
</svg> | |
</div> |
var container = document.querySelector('.container'),person = document.querySelector('.person'),arrow = document.querySelector('.arrow'),seesaw = document.querySelector('.seesaw'), bottle = document.querySelector('.bottle'), fulcrum = document.querySelector('.fulcrum') | |
TweenMax.set(container, { | |
position:'absolute', | |
top:'50%', | |
left:'50%', | |
xPercent:-50, | |
yPercent:-50 | |
}) | |
TweenMax.set(seesaw, {transformOrigin:"50% 50%"}); | |
Draggable.create(arrow, { | |
type:'y', | |
bounds:{maxY:0, minY:165}, | |
onDrag:onDrag, | |
throwProps:true, | |
onThrowUpdate:onDrag, | |
snap:[0], | |
maxDuration:1.22, | |
minDuration:1, | |
overshootTolerance:0, | |
ease:Bounce.easeOut | |
}) | |
function onDrag(e){ | |
TweenMax.set(person, { | |
y:-arrow._gsTransform.y | |
}) | |
TweenMax.set(seesaw, { | |
rotation:arrow._gsTransform.y/Math.PI | |
}) | |
} | |
<script src="//cdnjs.cloudflare.com/ajax/libs/gsap/1.19.1/TweenMax.min.js"></script> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/1.19.1/utils/Draggable.min.js"></script> | |
<script src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/16327/ThrowPropsPlugin.min.js"></script> |
body{ | |
background-color:#059EFF; | |
overflow:hidden; | |
} | |
body, html { | |
height: 100%; | |
width: 100%; | |
margin: 0; | |
padding: 0; | |
} | |
.container{ | |
max-width:600px; | |
max-height:600px; | |
} | |
svg{ | |
max-width:100%; | |
} |