Web Animations
CSS Transforms
Scale
Skew
Translate
Rotate
Scale
.thing {
width: 20px;
height: 20px;
transform: scale(2);
}
Scale
.thing {
width: 20px;
height: 20px;
transform: scale(0.5, 2);
}
ScaleX, ScaleY
.thing {
width: 20px;
height: 20px;
transform: scaleX(0.5);
transform: scaleY(2);
}
Skew
.thing {
width: 20px;
height: 20px;
background-color: green;
transform: skew(20deg);
}
SkewX
.thing {
width: 20px;
height: 20px;
background-color: green;
transform: skewX(20deg);
}
SkewY
.thing {
width: 20px;
height: 20px;
background-color: green;
transform: skewY(20deg);
}
Rotate
.thing {
width: 20px;
height: 20px;
background-color: green;
transform: rotate(45deg);
}
Rotate
x
y
z
RotateX
.thing {
width: 20px;
height: 20px;
background-color: green;
transform: rotateX(45deg);
}
RotateY
.thing {
width: 20px;
height: 20px;
background-color: green;
transform: rotateY(45deg);
}
RotateZ
.thing {
width: 20px;
height: 20px;
background-color: green;
transform: rotateZ(45deg);
}
Translate
.thing {
width: 20px;
height: 20px;
background-color: green;
transform: translate(20px, 10px);
}
TranslateX
.thing {
width: 20px;
height: 20px;
background-color: green;
transform: translateX(20px);
}
TranslateY
.thing {
width: 20px;
height: 20px;
background-color: green;
transform: translateY(10px);
}
TranslateZ
.thing {
width: 20px;
height: 20px;
background-color: green;
transform: perspective(500px) translateZ(20px);
}
3D Animations is hard
https://desandro.github.io/3dtransforms/
https://css-tricks.com/almanac/properties/p/perspective/
Animating via Keyframes
Image courtesy of Adobe Flash
Animating via Keyframes
@keyframes ANIMATION-NAME {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
.element {
animation-duration: 2s;
animation-name: ANIMATION-NAME;
animation-iteration-count: infinite;
}
Define keyframes
Include animation
Animating via Keyframes
@keyframes ANIMATION-NAME {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
.element {
animation: ANIMATION-NAME 5s infinite;
}
Define keyframes
Include animation
Animating via Keyframes
Animating via Keyframes
[animation-name]
[animation-duration]
[animation-timing-function]
[animation-delay]
[animation-iteration-count]
[animation-direction]
[animation-fill-mode]
[animation-play-state];
animation:
Animating via Keyframes
@keyframes ANIMATION-NAME {
0% {
opacity: 0;
}
50% {
opacity: 1;
}
100% {
opacity: 0;
}
}
.element {
animation: ANIMATION-NAME 5s infinite;
}
@keyframes ANIMATION-NAME {
0%, 100% {
opacity: 0;
}
50% {
opacity: 1;
}
}
Animating via Keyframes
Animating via Keyframes
@keyframes infinite-spinner {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.element {
animation: infinite-spinner 5s infinite;
}
Animating via Keyframes
Jumpy Animations
@keyframes infinite-spinner {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.element {
animation: infinite-spinner 5s steps(10) infinite;
}
Jumpy Animations
Mouse events
.element:hover {
//do something here//
}
.element:active {
//do something here//
}
Animation + Mouse events
@keyframes bounceIn {
0% {
transform: scale(0.1);
opacity: 0;
}
60% {
transform: scale(1.2);
opacity: 1;
}
100% {
transform: scale(1);
}
}
.element {
width: 200px;
height: 200px;
background-color: red;
animation: bounceIn 5s infinite;
}
.element:hover {
animation-play-state: paused;
}
Animation + Mouse events
More Animations
https://robots.thoughtbot.com/css-animation-for-beginners
Let's animate!
bit.ly/animatemountain
Let's animate CSS Animals!
bit.ly/bouncebox
Javascript
//this is a log statement//
console.log('hello world!')
Data Types
String
Number
Object
Boolean
Null
Undefined
'Barry Manilow'
5
{firstName: 'Barry', lastName: 'Manilow'}
True/False
Null
Undefined
Declaring a variable
var hello;
//hello is undefined//
var hello = 'world';
//hello is the string 'world'//
Declaring a variable
Case-sensitive.
Unique name.
Need to start with a letter, $, or _.
Avoid reserved words
clarity and meaning for readability
Reserved keywords
break, case, catch, class, const, continue, debugger, default, delete, do, else, export, extends, finally, for, function, if, import, in, instanceof, new, return, super, switch, this, throw, try, typeof, var, void, while, with, yield
Using Variables
var hello = "Hello! ";
console.log(hello)
> Hello!
Numbers
Number === Int
Number === Floats
var numberOfKittens = 5;
var cutenessRating = 9.6;
Arithmetic
+ | Addition | a + b |
- | Subtraction | a - b |
* | Multiplication | a * b |
/ | Division | a / b |
% | Modulus | a % b |
String concatenation
var hello = "Hello! ";
var world += "World"
console.log(hello world)
> Hello World
String concatenation
var hello = "Hello! ";
var name = {firstName: 'Jane', lastName: 'Doe'}
var age = 30;
console.log(hello + "My name is " + name.firstname + name.lastName + " I am " + age)
> Hello! My name is Jane Doe and I am 30
Exercise: Calculate Tip
Have variables for the bill pre-tip and the tip percentage.
Calculate the total bill.
Output a sentence like "Your total bill, with tip, is $14.75".
Bonus: Use toFixed() to round the bill total to 2 decimals.
Fun Fun Functions
There are 2 ways to write functions:
Function Expression
Function Declaration
Function Declaration
function square(number) {
return number * number
}
console.log(square(4));
> 16
Function Expression
console.log(square(4));
> 16
var square = function(number) {
return number * number;
};
Function Scope
square();
console.log(number)
> 4
var number = 4
var square = function() {
return number * number;
};
Assignment
square();
console.log(number)
> 16
var number = 4
var square = function() {
number = number * number;
return number
};
Loops: While
var x = 0;
while (x < 10) {
// do stuff here//
x++;
}
> 10
Loops: For
for ([initialization]; [condition]; [final-expression]) {
statement
}
Loops: For
var x;
for (x = 0; x < 10; x++) {
// do stuff here//
}
console.log(x)
> 10
Loops: For
var x = 0;
for (; x < 10; x++) {
// do stuff here//
}
console.log(x)
> 10
Conditionals
function foo(i) {
if (i < 0) {
console.log(i + " is positive")
} else {
console.log(i + " is negative")
}
}
> 3 is positive
foo(3)
Fizzbuzz Exercise
Problem: In the number sequence 0-100 inclusive print `fizz` for all multiples of 3 and `buzz` for all multiples of 5.
Fizzbuzz Extension
Problem: In the number sequence 0-100 inclusive print `fizz` for all multiples of 3 and `buzz` for all multiples of 5 and `fizzbuzz` for multiples of 15
For More
http://jsforcats.com/
Intro to web animations
By shortdiv
Intro to web animations
- 665