Chapter 5: Animating Douglas - Start
From Chapter 5 of Writing Computer Code by Andrew Hall.
by Daniel Hall
HTML
<div id="robot">
<div id="head">
<div class="eye" id="righteye"></div>
<div class="eye" id="lefteye"></div>
<div id="nose"></div>
<div id="mouth"></div>
</div>
<div class="arm" id="rightarm"></div>
<div id="body"><p id="message">I Love to Code!</p></div>
<div class="arm" id="leftarm"></div>
</div>
CSS
body {
font-family: "Comic Sans MS", cursive, sans-serif;
}
p {
font-size: 3em;
}
.eye {
background-color:blue;
width:30%;
height:30%;
border-radius: 50%;
}
.arm {
background-color: #cacaca;
position: absolute;
top: 35%;
width: 5%;
height: 40%;
}
#head {
width:30%;
height:30%;
border-radius: 15%;
background-color: #cacaca;
position: absolute;
left: 32%;
top: 5%;
}
#righteye {
position: absolute;
left: 20%;
top: 20%;
}
#lefteye {
position: absolute;
left: 60%;
top: 20%;
}
#nose {
position: absolute;
left: 45%;
top: 50%;
width: 10%;
height: 10%;
background-color: black;
}
#mouth {
position: absolute;
width: 65%;
height: 15%;
left: 20%;
top: 70%;
background-color: red;
}
#body {
position: absolute;
left: 25%;
top: 35%;
width: 45%;
height: 55%;
background-color: #cacaca;
text-align:center;
padding-top: 30px;
}
#rightarm {
position:absolute;
left:20%;
}
#leftarm {
position: absolute;
left: 70%;
}
JavaScript
// This is called a 'comment'
// It's here for you to read
// JavaScript doesn't care what you type in a comment.
// Put your code below to animate Douglas!
function moveUpDown(e) {
var robotPart = e.target;
var top = 0;
var id = setInterval(frame, 10) // draw every 10ms
function frame() {
// the frame function makes animation frames.
robotPart.style.top = top + '%';
// this line changes the position of the clicked part.
top++;
// this line adds 1 to the top variable.
if (top === 20){
// this checks the value of top and does the next thing
// unless top is equal to 20.
clearInterval(id);
// This statement runs when top is equal to 20.
// It stops the animation.
}
}
}
function moveRightLeft(e) {
var robotPart = e.target;
var left = 0;
var id = setInterval(frame, 10) // draw every 10ms
function frame() {
robotPart.style.left = left + '%';
left++;
if (left === 70){
clearInterval(id);
}
}
}