a {
  color: green;
}
a:hover {
  color: orange;
}
     Hover Over Me
a {
  color: green;
}
a:hover {
  color: orange;
}
     Hover Over Me
a {
  color: red;
  transition: 1s;
}
a:hover {
  color: yellow;
}
     Hover Over Me
Enables the transition of properties from one state to the next over a defined length of time
code {
   color: black;
   font-size: 85%;
   background-color: rgba(255,255,255,0.9);
   transition: all 2s ease-in 50ms;
}
code:hover {
   color: red;
   font-size: 120%;
   background-color: rgba(255,255,255,0.8);
}
code {
   transition:
      color, font-size, background-color 2s ease-in 50ms;
}
code {
   color: black;
   font-size: 85%;
   background-color: rgba(255,255,255,0.9);
   transition: all 2s ease-in 50ms;
}
code:hover {
   color: red;
   transform: scale(1.4);
   transform-origin: 0 0;
   background-color: rgba(255,255,255,0.8);
}
code {
   transition:
      transform 2s ease-in 50ms;
}
Anything that has intermediate values
code {
  opacity: 1;
}
code:halfway {
  opacity: 0.5;
}
code:hover {
  opacity: 0;
}
     code {
  display: block;
}
code:halfway {
  display: ???
}
code:hover {
  display: none;
}
     2 values that have REAL intermediary values
code {
  font-size: 100%;
}
code:halfway {
  font-size: 110%;
}
code:hover {
  font-size: 120%;
}
     code {
  height: auto;
}
code:halfway {
  height: ???
}
code:hover {
  height: 1000px;
}
     
.pencil {
    transition: all 1s ease-in 50ms;
    transform-origin: 100px 123px;
}
.pencil:hover {
    transform: rotate(360deg) scale(2);
}
     nav ul li {
  list-style-type: none;
}
nav > ul > li {
  display: inline-block;
  position:relative;
}
nav ul ul {
  transform: scale(1,0);
  transform-origin: top center;
  transition:0.2s linear 50ms;
  position:absolute;
  top: 100%;
}
nav li:hover ul {
  transform: scale(1,1);
}
     .card {
  position: absolute;
  perspective: 600px;
}
.card:hover {
  transition: 1s ease;
}
.card .front {
  transform: rotateX(0deg) rotateY(0deg);
  transform-style: preserve-3d;
  backface-visibility: hidden;
  transition: all .4s ease-in-out;
}
.card:hover .front {
  transform: rotateY(180deg);
}
.card .back {
  transform: rotateY(-180deg);
  transform-style: preserve-3d;
  backface-visibility: hidden;
  transition: all .4s ease-in-out;
}
.card:hover .back {
  transform: rotateY(0);
}
.card:first-of-type {
  transform: rotate(-5deg);
}
.card:nth-of-type(2):hover {
  transform: rotate(0) translatex(120px);
}
.card:last-of-type {
  transform: rotate(5deg);
}
.card:first-of-type:hover {
  transform: rotate(10deg) translatey(180px);
}
| 
 | 
 | 
 | 
 | 
 | 
| Prefix <=38 | Prefix | 5/16 | Prefix <=26 | 10 | 
| Only need -webkit- vendor prefix. | ||||
@keyframes ... @-webkit-keyframes ....
@keyframes clever_name_here ... @-webkit-keyframes clever_name_here ...
Don't use keyterms!
@keyframes slides {
}
@-webkit-keyframes slides {
}
     @keyframes writing {
    from {
      left: 0;
    }
    to {
      left: 100%;
    }
}
@keyframes writing {
    0% {
      left: 0;
    }
    100% {
      left: 100%;
    }
}
	Don't forget the %
Don't quote the animation name
@keyframes writingWhileTired {
    0% {
      left: 0;
    }
    10% {
      left: 45%;
    }
    90% {
      left: 55%;
    }
    100% {
      left: 100%;
    }
}
@keyframes W {
    0% {
      left: 0;
      top: 0;
    }
    25%, 75% {
      top: 400px;
    }
    50% {
      top: 50px;
    }
    100% {
      left: 80%;
      top: 0;
    }
}
        .pencil {
     width:100px;
     text-align: right;
     border-bottom: 10px solid;
   }
   .pencil::after {
	content: '✎';
	position: absolute;
	bottom: -20px;
	right: -10px;
   }
@keyframes drawALine {
  0%{
    width:0;
    color:green;
  }
  100% {
    width: 100%;
    color:blue;
  }
}
     .pencil { 
   animation-name: drawALine;
animation-duration: 3s;
  }
-webkit- | reset
.pencil { 
  animation-name: drawALine;
  animation-duration: 5s;
  animation-timing-function: ease-in-out;
}
ease linear ease-in ease-out ease-in-out cubic-bezier(x1, y1, x2, y2) step-start /* same as steps(1, start) */ step-end /* same as steps(1, end) */ steps( X, start|end) /* X = # of steps + when change of value occurs */
-webkit- | reset
.pencil {
  ...
  animation-name: drawALine;
  animation-duration: 3s;
  animation-timing-function: ease-in-out;
  animation-iteration-count: 3;
}
‘infinite’ or number. Default is ‘1’.
-webkit-animation-iteration-count: 3;
-webkit- | -moz- | -o-
.pencil { 
  animation-name: drawALine;
  animation-duration: 8s;
  animation-timing-function: ease-in-out;
  animation-iteration-count: 2;
  animation-delay: 2s;
}
-webkit- | reset
.pencil {
  ...
  animation-name: drawALine;
  animation-duration: 5s;
  animation-timing-function: ease-in-out;
  animation-iteration-count: 5;
  animation-direction: normal
}
4 possible values: normal | alternate | reverse | alternate-reverse;
animation-direction: alternate;
-webkit- | reset
.pencil {
  animation-name: drawALine;
  animation-duration: 5s;
  animation-delay: 100ms;
  animation-timing-function: ease-in-out;
  animation-iteration-count: 5;
  animation-direction: normal;
}
. . . can also be written as . . .
.pencil {
  animation: drawALine 5s ease-in-out 100ms 5;
}
-webkit- | reset
.carda.flipped .front,
.carda.unflipped .back {
  animation: flipme 1s linear forwards;
}
.carda.unflipped .front,
.carda.flipped .back {
  animation: unflipme 1s linear both;
}
.card.flipped:nth-of-type(2){
  transform:
    rotate(0)
    translatex(120px);
}
.carda.flipped:first-of-type{
  transform:
    rotate(-5deg)
    translate(240px, 25px);
}
@keyframes flipme {
  0% {transform: rotatey(0deg)}
  100% {transform: rotateY(-180deg);}
}
@keyframes unflipme {
  0% {transform: rotatey(180deg)}
  100% {transform: rotateY(0deg);}
}
values: none | forwards | backwards | both
.pencil {
  animation-name: gettingThePencil;
  animation-duration: 3s;
  animation-timing-function: ease-in-out;
  animation-iteration-count: 1;
  animation-delay: 2s;
 animation-fill-mode: none;
}
. . . or . . . -webkit- | reset
.pencil {
animation: gettingThePencil 3s ease-in-out 1s   forwards;
}
.box { animation: showme 5s linear 5s 1;}
@keyframes showme {
	0% {left: 200px; background-color:blue;}
	50% {background-color:green;}
	100% {left: 600px; background-color: yellow;}
}
animation-play-state: paused | running
.pencil {
	transform-origin: center 300px;
	animation: writingInCircles 3s linear infinite;
 }
.pencil:hover {
	animation-play-state:paused;
 }
@keyframes writingInCircles {
  100% {
    transform:
      rotate(360deg);
  }
}
-webkit- | reset
animation-play-state: paused | running
.pencil:hover {
  -webkit-animation-play-state: paused;
  animation-play-state: paused;
  }
el.addEventListener( 'webkitAnimationEnd',
    function( event ) {
        console.log('Animation Ended');
    }, false );
el.addEventListener( 'webkitAnimationEnd',
    function( event ) {
        el.removeClassName('newClass');
        setTimeout("el.addClassName('newClass')", 100ms)
    },
    false );
webkitAnimationEnd animationend




#AnimDeepDive 5 Sooooo much cowbell