SlideShare a Scribd company logo
1 of 68
CSS3 Transitions,
                                Transforms &
                                 Animations
                                Rota%ng	
  the	
  Web	
  Forward




Wednesday, November 2, 2011
Greg Rewis
                              assortedgarbage.com
                                     @garazi



Wednesday, November 2, 2011
Transforms



                              9
Wednesday, November 2, 2011
CSS Transforms
                       “The	
  2D	
  Transforma/ons	
  Module	
  defines	
  a	
  property	
  
                       that	
  applies	
  rota/ons,	
  transla/ons	
  and	
  other	
  affine	
  
                       transforma/ons	
  to	
  a	
  box.”

                       In	
  the	
  2D	
  space,	
  think	
  of	
  the	
  transform	
  controls	
  in	
  your	
  
                       favorite	
  graphics	
  program
                              Scale
                              Rotate
                              Skew
                              Translate	
  


Wednesday, November 2, 2011
Ready When You Are
                       CSS3	
  Transforms	
  can	
  be	
  applied	
  to	
  any	
  element	
  —
                       which	
  now	
  also	
  includes	
  generated	
  content

                       Transforms	
  are	
  applied	
  immediately	
  at	
  the	
  ;me	
  the	
  
                       page	
  is	
  rendered	
  

                       When	
  applied	
  to	
  an	
  element,	
  all	
  the	
  children	
  are	
  
                       transformed	
  as	
  well

                       Transforms	
  can	
  also	
  be	
  triggered	
  via	
  a	
  pseudo	
  class	
  
                       or	
  Javascript

Wednesday, November 2, 2011
transform: scale()*
                         .square	
  {
                            height:	
  250px;
                            width:	
  250px;
                            background-­‐color:	
  rgb(171,	
  38,	
  41);
                            }
                         becomes
                         .square	
  {
                            height:	
  250px;
                            width:	
  250px;
                            background-­‐color:	
  rgb(171,	
  38,	
  41);
                            transform:	
  scale(2);
                            }
                         *scaleX	
  and	
  scaleY	
  are	
  also	
  possible


Wednesday, November 2, 2011
transform: scale() on :hover
                         .square	
  {
                           height:	
  250px;
                           width:	
  250px;
                           background-­‐color:	
  rgb(171,	
  38,	
  41);
                           }


                         .square:hover	
  {
                           transform:	
  scale(2);
                           }



Wednesday, November 2, 2011
If only it were that simple...
                       As	
  individual	
  browsers	
  add	
  support	
  for	
  
                       transforms	
  (and	
  transi%ons),	
  they	
  use	
  vendor-­‐
                       specific	
  prefixes.

                       You	
  should	
  list	
  the	
  vendor	
  specific	
  
                       implementa%ons	
  first.	
  The	
  actual	
  CSS	
  property	
  
                       (without	
  a	
  browser	
  prefix)	
  should	
  always	
  be	
  last.

                       If	
  you	
  aren’t	
  confident	
  coding	
  the	
  vendor-­‐specific	
  
                       prefixes	
  yourself,	
  you	
  can	
  use	
  CSSPrefixer.


Wednesday, November 2, 2011
transform: scale() in reality
                         .square	
  {
                           height:	
  250px;
                           width:	
  250px;
                           background-­‐color:	
  rgb(171,	
  38,	
  41);
                           }
                         .square:hover	
  {
                           -­‐webkit-­‐transform:	
  scale(2);
                           -­‐moz-­‐transform:	
  scale(2);	
  
                           -­‐ms-­‐transform:	
  scale(2);
                           -­‐o-­‐transform:	
  scale(2);
                           transform:	
  scale(2);
                           }


Wednesday, November 2, 2011
transform: rotate() & transform: skew()*
                         .square	
  {
                            height:	
  250px;
                            width:	
  250px;
                            background-­‐color:	
  rgb(171,	
  38,	
  41);
                            transform:	
  rotate(45deg);
                            }
                         .square	
  {
                            height:	
  250px;
                            width:	
  250px;
                            background-­‐color:	
  rgb(171,	
  38,	
  41);
                            transform:	
  skew(45deg);
                            }
                         *skewX	
  and	
  skewY	
  are	
  also	
  possible
                         [browser	
  specific	
  varia;ons	
  inten;onally	
  omiXed]




Wednesday, November 2, 2011
transform: translate()
                         .square	
  {
                           height:	
  250px;
                           width:	
  250px;
                           background-­‐color:	
  rgb(171,	
  38,	
  41);
                           }


                         .square:hover	
  {
                           transform:	
  translate(50px,	
  50px);
                           }
                              *translateX	
  and	
  translateY	
  are	
  also	
  possible
                              [browser	
  specific	
  varia;ons	
  inten;onally	
  omiXed]



Wednesday, November 2, 2011
multiple transforms*
                         .square	
  {
                           height:	
  250px;
                           width:	
  250px;
                           background-­‐color:	
  rgb(171,	
  38,	
  41);
                           }


                         .square:hover	
  {
                           transform:	
  scale(2)	
  rotate(45deg);
                           }
                         *all	
  proper;es	
  are	
  applied	
  simultaneously
                         [browser	
  specific	
  varia;ons	
  inten;onally	
  omiXed]



Wednesday, November 2, 2011
Transform-origin
                    By	
  default,	
  all	
  transforms	
  occur	
  “around”	
  the	
  
                    center	
  of	
  the	
  object	
  (x=50%,	
  y=50%)


                    .square:hover	
  {
                      transform:	
  rotate(45deg);
                      }
                                                                       origin




Wednesday, November 2, 2011
Transform-origin
                    .square:hover	
  {                                                      origin
                       transform:	
  rotate(45deg);
                       transform-­‐origin:	
  right	
  top;
                       }
                              leZ,	
  center,	
  right	
  and	
  top,	
  center,	
  boXom
                    .square:hover	
  {
                       transform:	
  rotate(45deg);
                       transform-­‐origin:	
  100%	
  100%;
                       }
                              the	
  point	
  of	
  origin	
  can	
  even	
  be	
           origin
                              outside	
  of	
  the	
  object	
  itself
                         [browser	
  specific	
  varia;ons	
  inten;onally	
  omiXed]



Wednesday, November 2, 2011
Wednesday, November 2, 2011
I Didn’t See That Coming!
                       Much	
  like	
  absolute	
  posi%oning,	
  the	
  CSS3	
  
                       Transform	
  property	
  does	
  not	
  affect	
  the	
  box	
  
                       model




Wednesday, November 2, 2011
Going Crazy!




Wednesday, November 2, 2011
Feature Testing




Wednesday, November 2, 2011
Modernizr - Feature Detection
                       Link	
  to	
  the	
  script	
  &	
  add	
  <html	
  class=”no-­‐js”>
                       Modernizr	
  changes	
  the	
  no-­‐js	
  class	
  to	
  a	
  long	
  string	
  
                       of	
  classes	
  that	
  you	
  can	
  use	
  to	
  serve	
  different	
  CSS	
  
                       or	
  JS	
  to	
  a	
  browser	
  depending	
  on	
  its	
  lack	
  of	
  
                       capabili%es.	
  ie:
                       <html	
  class=”	
  js	
  canvas	
  canvastext	
  geoloca/on	
  
                       crosswindowmessaging	
  no-­‐websqldatabase  no-­‐indexeddb	
  
                       hashchange	
  no-­‐historymanagement	
  draganddrop	
  no-­‐websockets	
  
                       rgba	
  hsla	
  mul/plebgs	
  backgroundsize	
  borderimage	
  borderradius	
  
                       boxshadow	
  opacity	
  no-­‐cssanima/ons	
  csscolumns	
  cssgradients	
  no-­‐
                       cssreflec9ons	
  csstransforms	
  no-­‐csstransforms3d  no-­‐csstransi9ons	
  
                       video	
  audio	
  localstorage	
  sessionstorage	
  webworkers	
  
                       applica/oncache	
  svg	
  no-­‐smilsvgclippaths	
  fonLace”>


Wednesday, November 2, 2011
Transforms – based on abilities
                    .no-­‐csstransforms	
  #foo	
  #soo	
  {
                    	
  	
  	
  	
  display:block;
                    }
                    Or	
  write	
  CSS	
  so	
  it’s	
  only	
  shown	
  to	
  capable	
  
                    browsers:
                    .csstransforms	
  #foo	
  {
                    	
  	
  	
  transform:	
  rotate(10deg);
                    }




Wednesday, November 2, 2011
Feeding The Dinosaurs




Wednesday, November 2, 2011
Transitions



                4 10          10
Wednesday, November 2, 2011
:hover - before CSS3
               nav	
  li	
  a	
  {
                      background-­‐color:	
  rgb(0,0,0);
                      }


               nav	
  li	
  a:hover	
  {
                      background-­‐color:	
  rgb(86,	
  125,33);
                      }




Wednesday, November 2, 2011
CSS Transitions
                       CSS	
  Transi%ons	
  allows	
  property	
  changes	
  in	
  CSS	
  
                       values	
  to	
  occur	
  smoothly	
  over	
  a	
  specified	
  
                       dura%on.
                       Transi%ons	
  can	
  be	
  thought	
  of	
  as	
  anima%ons	
  in	
  
                       their	
  simplest	
  form.
                       Only	
  animatable	
  CSS	
  proper%es	
  can	
  be	
  
                       transi%oned.




Wednesday, November 2, 2011
Animatable Properties
                       background-­‐color                       fill                               padding	
  (-­‐top,	
  -­‐right,	
  -­‐
                                                                                                  boXom,	
  -­‐leZ)
                       background-­‐image	
                     font-­‐size
                       (gradients)                                                                posi;on	
  (top,	
  right,	
  
                                                                font-­‐weight                     boXom,	
  leZ)
                       background-­‐posi;on
                                                                height                            stroke	
  (-­‐opacity,	
  -­‐
                       background-­‐size                                                          width)
                                                                leXer-­‐spacing
                       border	
  (-­‐color,-­‐width)                                              text-­‐indent
                                                                line-­‐height
                       border-­‐radius                                                            text-­‐shadow
                                                                margin	
  (-­‐top,	
  -­‐right,
                       border-­‐spacing                         -­‐boXom,	
  -­‐leZ)              transform
                       box-­‐flex                                max-­‐	
  /	
  min-­‐height       transform-­‐origin
                       box-­‐shadow                             max-­‐	
  /	
  min-­‐width        ver;cal-­‐align
                       color                                    opacity                           visibility
                       column	
  (-­‐count,	
  -­‐gap,	
  -­‐   outline	
  (color,	
  width)      width
                       width)
                                                                outline-­‐offset                   word-­‐spacing
                       clip
                                                                                                  z-­‐index




Wednesday, November 2, 2011
Anatomy of a Transition
                                                         keyframe
                                                         (rule	
  1)




                                                  tween

               keyframe
                 (rule	
  2)


Wednesday, November 2, 2011
Basic Anatomy of a Transition
                       Basic	
  styling	
  of	
  the	
  element	
  in	
  rule	
  1
                              It	
  may	
  contain	
  proper;es	
  that	
  won’t	
  be	
  modified
                              The	
  proper;es	
  to	
  be	
  “animated”	
  are	
  iden;fied	
  
                              with	
  the	
  transi;on	
  property
                       Rule	
  2	
  contains	
  the	
  modifica;ons	
  to	
  the	
  element	
  &	
  
                       uses	
  a	
  pseudo-­‐class	
  (:hover,	
  :focus,	
  :target)	
  to	
  
                       trigger	
  the	
  transi;on
                       OR	
  Javascript	
  can	
  also	
  be	
  used	
  to	
  trigger	
  a	
  
                       transi;on


Wednesday, November 2, 2011
:hover - with CSS3 transitions
              nav	
  li	
  a	
  {
                     background-­‐color:	
  rgb(0,0,0);
                     transi%on-­‐property:	
  background-­‐color;
                     transi%on-­‐dura%on:	
  1s;
                     }


              nav	
  li	
  a:hover	
  {
                     background-­‐color:	
  rgb(86,	
  125,33);
                     }



Wednesday, November 2, 2011
Property Listings
                    In	
  the	
  previous	
  example,	
  only	
  a	
  single	
  property	
  was	
  
                    transi;oned:
                                  transi;on-­‐property:	
  background-­‐color;

                    Mul;ple	
  proper;es	
  can	
  be	
  defined	
  at	
  one	
  ;me:
                                  transi;on-­‐property:	
  background-­‐color,	
  
                                  padding,	
  font-­‐size,	
  color;
                                  or
                                  transi;on-­‐property:	
  all;

Wednesday, November 2, 2011
Time it Right!
                       The	
  dura%on	
  of	
  the	
  transi%on	
  is	
  determined	
  by	
  
                       the	
  transi%on-­‐dura%on	
  property.
                       Time	
  can	
  be	
  designated	
  in	
  seconds	
  or	
  
                       milliseconds
                              transi%on-­‐dura%on:	
  2s;
                              transi%on-­‐dura%on:	
  500ms;
                       Time	
  is	
  not	
  precise	
  and	
  can	
  vary	
  slightly	
  between	
  
                       browsers



Wednesday, November 2, 2011
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Transition Speed
                       By	
  default,	
  transi%ons	
  play	
  at	
  a	
  constant	
  rate	
  
                       (called	
  linear).	
  
                       The	
  transi%on-­‐%ming-­‐func%on	
  allows	
  you	
  to	
  
                       specify	
  a	
  variable	
  rate	
  of	
  speed	
  for	
  the	
  transi%on
                              linear                     ease-­‐out
                              ease                       ease-­‐in-­‐out
                              ease-­‐in                  cubic-­‐bezier(0,.33,1,.75)

                       transi%on-­‐%ming-­‐func%on:	
  ease;



Wednesday, November 2, 2011
Ceasar - Easing tool




Wednesday, November 2, 2011
Wait a Second!
                    By	
  default,	
  a	
  transi%on	
  will	
  play	
  immediately	
  when	
  
                    triggered
                    The	
  transi%on-­‐delay	
  property	
  allows	
  you	
  to	
  specify	
  
                    a	
  period	
  of	
  %me	
  to	
  wait	
  before	
  performing	
  the	
  
                    transi%on
                    As	
  with	
  the	
  transi%on-­‐dura%on	
  property,	
  %me	
  can	
  
                    be	
  specified	
  in	
  either	
  seconds	
  or	
  milliseconds
                              transi%on-­‐delay:	
  3s;
                              transi%on-­‐delay:	
  250ms;


Wednesday, November 2, 2011
Putting It All Together
               nav	
  li	
  a	
  {
                        background-­‐color:	
  rgb(0,0,0);
                        padding:	
  9px	
  5px;
                        transi;on-­‐property:	
  background-­‐color,	
  padding,	
  transform;
                        transi;on-­‐dura;on:	
  1s;
                        transi;on-­‐delay:	
  100ms;
                        transi;on-­‐;ming-­‐func;on:	
  ease;
                        }


               nav	
  li	
  a:hover	
  {
                        background-­‐color:	
  rgb(86,	
  125,33);
                        padding:	
  12px	
  5px;
                        transform:	
  rotate(-­‐5deg);
                        }


Wednesday, November 2, 2011
Well, Actually...
                         nav	
  li	
  a	
  {
                                  background-­‐color:	
  rgb(0,0,0);
                                  padding:	
  9px	
  5px;
                                  -­‐webkit-­‐transi;on-­‐property:	
  background-­‐color,	
  padding,	
  transform;	
  
                                  	
  	
  	
  	
  	
  -­‐moz-­‐transi;on-­‐property:	
  background-­‐color,	
  padding,	
  transform;
                                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  -­‐o-­‐transi;on-­‐property:	
  background-­‐color,	
  padding,	
  transform;
                                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  transi;on-­‐property:	
  background-­‐color,	
  padding,	
  transform;
                                  -­‐webkit-­‐transi;on-­‐dura;on:	
  1s;
                                  	
  	
  	
  	
  	
  -­‐moz-­‐transi;on-­‐dura;on:	
  1s;
                                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  -­‐o-­‐transi;on-­‐dura;on:	
  1s;
                                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  transi;on-­‐dura;on:	
  1s;
                                  -­‐webkit-­‐transi;on-­‐delay:	
  100ms;
                                  	
  	
  	
  	
  	
  -­‐moz-­‐transi;on-­‐delay:	
  100ms;
                                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  -­‐o-­‐transi;on-­‐delay:	
  100ms;
                                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  transi;on-­‐delay:	
  100ms;
                                  -­‐webkit-­‐transi;on-­‐;ming-­‐func;on:	
  ease;
                                  	
  	
  	
  	
  	
  -­‐moz-­‐transi;on-­‐;ming-­‐func;on:	
  ease;
                                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  -­‐o-­‐transi;on-­‐;ming-­‐func;on:	
  ease;
                                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  transi;on-­‐;ming-­‐func;on:	
  ease;
                                  }
                         nav	
  li	
  a:hover	
  {
                                  background-­‐color:	
  rgb(86,	
  125,33);
                                  padding:	
  12px	
  5px;
                                  -­‐webkit-­‐transform:	
  rotate(-­‐5deg);
                                  	
  	
  	
  	
  	
  -­‐moz-­‐transform:	
  rotate(-­‐5deg);
                                  	
  	
  	
  	
  	
  	
  	
  -­‐ms-­‐transform:  rotate(-­‐5deg);
                                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  -­‐o-­‐transform:	
  rotate(-­‐5deg);
                                  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  transform:	
  rotate(-­‐5deg);
                                  }



Wednesday, November 2, 2011
Let’s Mix It Up
                    You	
  can	
  target	
  mul%ple	
  proper%es	
  and	
  assign	
  
                    differing	
  speeds	
  —	
  all	
  within	
  the	
  same	
  rule	
  using	
  
                    comma-­‐separated	
  values.
               nav	
  li	
  a	
  {
                      transi%on-­‐property:	
  background-­‐color,	
  padding,	
  
                      transform;
                      transi%on-­‐dura%on:	
  1s,	
  2s,	
  500ms;
                      transi%on-­‐delay:	
  100ms,	
  0,	
  2s;
                      transi%on-­‐%ming-­‐func%on:	
  ease,	
  linear,	
  ease-­‐in;
                      }



Wednesday, November 2, 2011
Transition Shorthand
                    Using	
  shorthand,	
  we	
  can	
  combine	
  all	
  four	
  of	
  the	
  
                    transi;on	
  proper;es	
  into	
  a	
  single	
  property
                    Order	
  is	
  important	
  due	
  to	
  the	
  existence	
  of	
  2	
  ;ming	
  
                    proper;es	
  —	
  the	
  first	
  !me	
  value	
  will	
  be	
  assigned	
  to	
  
                    transi;on-­‐dura;on	
  and	
  the	
  last	
  to	
  the	
  delay
                    Values	
  are	
  separated	
  by	
  a	
  space  (not	
  comma)
                                                    %ming-­‐func%on
                                                                                   delay
                              transi%on:	
  all	
  1s	
  ease	
  100ms
                          property
                                                            dura%on
Wednesday, November 2, 2011
That’s Better
                         nav	
  li	
  a	
  {
                            background-­‐color:	
  rgb(0,0,0);
                            padding:	
  9px	
  5px;
                            -­‐webkit-­‐transi;on:	
  all	
  1s	
  ease	
  100ms;
                            	
  	
  	
  	
  -­‐moz-­‐transi;on:	
  all	
  1s	
  ease	
  100ms;	
  
                            	
  	
  	
  	
  	
  	
  	
  	
  	
  -­‐o-­‐transi;on:	
  all	
  1s	
  ease	
  100ms;	
  
                            	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  transi;on:	
  all	
  1s	
  ease	
  100ms;
                            }
                         nav	
  li	
  a:hover	
  {
                            background-­‐color:	
  rgb(86,	
  125,33);
                            padding:	
  12px	
  5px;
                            -­‐webkit-­‐transform:	
  rotate(-­‐5deg);
                            	
  	
  	
  	
  	
  -­‐moz-­‐transform:	
  rotate(-­‐5deg);
                            	
  	
  	
  	
  	
  	
  	
  -­‐ms-­‐transform:	
  rotate(-­‐5deg);
                            	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  -­‐o-­‐transform:	
  rotate(-­‐5deg);
                            	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  transform:	
  rotate(-­‐5deg);
                            }


Wednesday, November 2, 2011
Let’s Mix It Up
                    It’s	
  also	
  possible	
  to	
  shorthand	
  the	
  mul%ple	
  
                    proper%es	
  with	
  differing	
  speeds
                    (use	
  a	
  comma	
  between	
  the	
  groupings)
               nav	
  li	
  a	
  {
                      transi%on:	
  
                      	
  	
  	
  	
  	
  background-­‐color	
  1s	
  ease	
  100ms,	
  
                      	
  	
  	
  	
  	
  padding	
  2s	
  linear	
  0,	
  
                      	
  	
  	
  	
  	
  transform	
  500ms	
  ease-­‐in	
  2s;
                      }
                         [placed	
  on	
  separate	
  lines	
  for	
  readability]



Wednesday, November 2, 2011
Wednesday, November 2, 2011
UI Enhancements
                    Transi%ons	
  and	
  transforms	
  can	
  be	
  added	
  to	
  
                    pseudo-­‐elements	
  (::before	
  and	
  ::ajer).
                    The	
  :focus	
  pseudo-­‐class	
  can	
  add	
  interes%ng	
  effects	
  
                    to	
  form	
  elements	
  by	
  highligh%ng	
  the	
  element	
  with	
  
                    focus.
                    :focus	
  is	
  also	
  good	
  to	
  use	
  in	
  combina%on	
  
                    with	
  :hover	
  —	
  keyboard	
  navigators	
  have	
  a	
  visual	
  
                    cue	
  of	
  their	
  focus	
  on	
  the	
  page.




Wednesday, November 2, 2011
Stay :focus’ed
                    Use	
  the	
  :focus	
  pseudo-­‐class	
  to	
  add	
  interes;ng	
  effects	
  to	
  form	
  
                    elements.
                    input	
  {
                         -­‐webkit-­‐transi;on:	
  border	
  .5s;
                         	
  	
  	
  	
  	
  -­‐moz-­‐transi;on:	
  border	
  .5s;
                         	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  -­‐o-­‐transi;on:	
  border	
  .5s;
                         	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  transi;on:	
  border	
  .5s;
                         }
                    input:focus	
  {
                         outline:0;
                         border:	
  rgba(72,	
  107,	
  11,	
  .7)	
  9px	
  solid;
                         -­‐webkit-­‐border-­‐radius:	
  6px;
                         	
  	
  	
  	
  -­‐moz-­‐border-­‐radius:	
  6px;
                         	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  border-­‐radius:	
  6px;
                                                 }


Wednesday, November 2, 2011
Stay :focus’ed
                    textarea	
  {
                    	
   height:	
  20px;
                    	
  	
  	
  	
  	
  	
  -­‐webkit-­‐transi;on:	
  height	
  .5s,	
  border	
  .5s;
                    	
   	
  	
  	
  	
  -­‐moz-­‐transi;on:	
  height	
  .5s,	
  border	
  .5s;
                    	
   	
  	
  	
  	
  	
  	
  	
  	
  	
  -­‐o-­‐transi;on:	
  height	
  .5s,	
  border	
  .5s;
                    	
   	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  transi;on:	
  height	
  .5s,	
  border	
  .5s;
                    }
                    textarea:focus	
  {
                    	
   outline:	
  0;
                    	
   height:	
  250px;
                    	
   border:	
  rgba(72,	
  107,	
  11,	
  .7)	
  9px	
  solid;
                    	
   -­‐webkit-­‐border-­‐radius:	
  6px;
                    	
   	
  	
  	
  	
  -­‐moz-­‐border-­‐radius:	
  6px;
                    	
   	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  border-­‐radius:	
  6px;	
  
                    }


Wednesday, November 2, 2011
Click If You Love Javascript
                       Transi%ons	
  and	
  transforma%ons	
  are	
  simply	
  a	
  
                       change	
  from	
  one	
  state	
  of	
  an	
  element	
  to	
  another.	
  
                       CSS	
  can	
  only	
  do	
  so	
  much	
  –	
  but	
  using	
  Javascript,	
  
                       we	
  can	
  trigger	
  transforma%ons	
  and	
  transi%ons	
  
                       for	
  any	
  catchable	
  event,	
  such	
  as	
  onload,	
  
                       onchange	
  or	
  click.
                       jQuery	
  or	
  any	
  other	
  Javascript	
  framework	
  can	
  be	
  
                       used.




Wednesday, November 2, 2011
Wednesday, November 2, 2011
Animations



                5             10
Wednesday, November 2, 2011
Like Transitions on Steroids
                       A	
  CSS3	
  Anima;on,	
  animates	
  between	
  CSS	
  proper;es	
  
                       exactly	
  like	
  transi;ons	
  –	
  however,	
  we	
  can	
  specify	
  the	
  
                       number	
  of	
  ;mes	
  it	
  plays	
  and	
  whether	
  it	
  plays	
  in	
  a	
  
                       single	
  direc;on	
  or	
  both	
  direc;ons
                    -­‐webkit-­‐anima;on-­‐itera9on-­‐count:	
  number	
  or	
  infinite;

                    -­‐webkit-­‐anima;on-­‐direc9on:	
  normal	
  or	
  alternate;


                       Anima;ons	
  are	
  named,	
  and	
  can	
  therefore	
  be	
  reused	
  
                       by	
  more	
  than	
  one	
  CSS	
  rule
                    -­‐webkit-­‐anima;on-­‐name:	
  moveIt;


Wednesday, November 2, 2011
I Was Keyframed, I Tell You
                    An	
  anima;on	
  defines	
  a	
  set	
  of	
  start	
  (from)	
  
                    proper;es	
  and	
  a	
  set	
  of	
  end	
  (to)	
  proper;es	
  as	
  values	
  
                    of	
  keyframes	
  assigned	
  to	
  the	
  named	
  anima;on
                    @-­‐webkit-­‐keyframes	
  moveIt	
  {
                    	
  	
  from	
  {
                    	
  	
  	
  	
  proper!es/values  go  here
                    }
                    	
  	
  to	
  {
                    	
  	
  	
  	
  proper!es/values  go  here
                    }
                    }


Wednesday, November 2, 2011
A Simple Animation
                    .anima;on-­‐rule	
  {
                    	
  	
  	
  -­‐webkit-­‐anima;on-­‐name:	
  moveIt;
                    	
  	
  	
  -­‐webkit-­‐anima;on-­‐dura;on:	
  4s;
                    	
  	
  	
  -­‐webkit-­‐anima;on-­‐itera;on-­‐count:	
  infinite;
                    	
  	
  	
  -­‐webkit-­‐anima;on-­‐direc;on:	
  normal;
                    	
  	
  	
  -­‐webkit-­‐anima;on-­‐;ming-­‐func;on:	
  ease;
                    }
                    @-­‐webkit-­‐keyframes	
  moveIt	
  {
                    from	
  {
                    	
  	
  	
  width:	
  200px;
                    	
  	
  	
  background:	
  #f00;
                    	
  	
  	
  opacity:	
  0.5;
                    	
  	
  	
  -­‐webkit-­‐transform:	
  scale(0.5)	
  rotate(15deg);
                    }
                    to	
  {
                    	
  	
  	
  width:	
  400px;
                    	
  	
  	
  background:	
  #ffffa2;
                    	
  	
  	
  opacity:	
  1;
                    	
  	
  	
  -­‐webkit-­‐transform:	
  scale(1)	
  rotate(0deg);
                    }
                    }

Wednesday, November 2, 2011
Smoothing out the bumps
                       As	
  with	
  transi%ons,	
  the	
  anima%on-­‐%ming-­‐
                       func%on	
  can	
  use	
  linear,	
  ease,	
  ease-­‐in,	
  ease-­‐out,	
  
                       ease-­‐in-­‐out
                       For	
  more	
  control	
  over	
  the	
  look	
  of	
  the	
  anima%on,	
  
                       addi%onal	
  keyframes	
  allow	
  you	
  to	
  specify	
  the	
  
                       values	
  for	
  proper%es	
  at	
  a	
  certain	
  percentage	
  of	
  
                       the	
  anima%on
                       Anima%ons	
  can	
  also	
  be	
  wrimen	
  as	
  shorthand
                    -­‐webkit-­‐anima;on:	
  name	
  dura;on	
  ;ming	
  itera;ons	
  direc;on;




Wednesday, November 2, 2011
A Simple Animation
                    .anima;on-­‐rule	
  {
                    	
  	
  	
  height:	
  60px;
                    	
  	
  	
  padding:	
  10px;
                    	
  	
  	
  -­‐webkit-­‐anima;on:	
  ‘moveIt’	
  4s	
  ease	
  3	
  normal;
                    }
                    @-­‐webkit-­‐keyframes	
  ‘moveIt’	
  {
                    0%  {
                    	
  	
  	
  width:	
  200px;
                    	
  	
  	
  background:	
  #A74240;
                    	
  	
  	
  opacity:	
  0.5;
                    	
  	
  	
  -­‐webkit-­‐transform:	
  scale(0.5)	
  rotate(15deg);
                    }
                    40%	
  {
                    	
  	
  	
  width:	
  300px;
                    	
  	
  	
  background:	
  #A74240;
                    	
  	
  	
  opacity:	
  1;
                    	
  	
  	
  -­‐webkit-­‐transform:	
  scale(1.3)	
  rotate(15deg);
                    }
                    100%  {
                    	
  	
  	
  width:	
  400px;
                    	
  	
  	
  background:	
  #ffffa2;
                    	
  	
  	
  opacity:	
  0.5;
                    	
  	
  	
  -­‐webkit-­‐transform:	
  scale(1)	
  rotate(0deg);
                    }
                    	
  }
Wednesday, November 2, 2011
Animation Values
                    anima;on-­‐name:	
  'yourName';	
  
                    anima;on-­‐dura;on:	
  !me;	
  

                    anima;on-­‐;ming-­‐func;on:	
  
                    	
  	
  	
  	
  	
  	
  	
  linear	
  |	
  ease	
  |	
  ease-­‐in	
  |	
  ease-­‐out	
  |	
  
                    	
  	
  	
  	
  	
  	
  	
  ease-­‐in-­‐out	
  |	
  cubic-­‐bezier();
                    anima;on-­‐itera;on-­‐count:	
  number	
  or	
  infinite;

                    anima;on-­‐direc;on:	
  normal	
  |	
  alternate;
                    anima;on-­‐delay:	
  !me;

                    anima9on-­‐fill-­‐mode:	
  
                    	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  backwards|forwards|none|both;

                    -­‐webkit-­‐anima9on:  'disappear'  0.6s    linear  0.5s  alternate  5  forwards;


Wednesday, November 2, 2011
Animated Radial Gradients




Wednesday, November 2, 2011
Wednesday, November 2, 2011
Wednesday, November 2, 2011
Animate.css




         http://daneden.me/animate/
Wednesday, November 2, 2011
Accelerate!
                    -­‐webkit-­‐transform:	
  translateZ(0);
                    -­‐webkit-­‐transform:	
  translate3d(0,0,0)

                    Both	
  these	
  tricks	
  will	
  make	
  your	
  webkit	
  browser	
  
                    believe	
  it	
  needs	
  to	
  use	
  the	
  GPU,	
  rather	
  than	
  the	
  
                    CPU,	
  which	
  can	
  increase	
  performance.
                    As	
  always,	
  test	
  to	
  be	
  sure	
  performance	
  is	
  
                    increased—and	
  that	
  you’re	
  not	
  simply	
  decreasing	
  
                    bamery	
  life	
  for	
  your	
  user.



Wednesday, November 2, 2011
3D Transforms



                               10
Wednesday, November 2, 2011
Putting it in Perspective
                       “The	
  3D	
  Transforma%ons	
  Module	
  extends	
  the	
  2D	
  
                       transforma%ons	
  with	
  a	
  perspec%ve	
  
                       transforma%on.”
                       Actually,	
  it’s	
  really	
  more	
  about	
  2.5D	
  —	
  think	
  
                       postcards	
  in	
  space
                              X,	
  Y	
  &	
  Z	
  axis	
  rota%on
                              Perspec%ve
                       Applied	
  via	
  the	
  same	
  transform	
  property	
  as	
  2D	
  
                       tranforms	
  (our	
  examples	
  will	
  use	
  -­‐webkit-­‐)


Wednesday, November 2, 2011
Translate in 3d
                       Several	
  new	
  transform	
  func;ons.	
  Remember:
                       transform:	
  translate(50px,	
  50px);
                       transform:	
  translateX(50px);

                       We	
  now	
  add:
                       -­‐webkit-­‐transform:	
  translate3d(x,	
  y,	
  z);
                       -­‐webkit-­‐transform:	
  translateZ(z);

                       For	
  the	
  z	
  axis,	
  a	
  posi;ve	
  number	
  represents	
  a	
  move	
  
                       toward	
  the	
  viewer.
                       *	
  The	
  z	
  value	
  cannot	
  be	
  a	
  percentage.

Wednesday, November 2, 2011
3d Scale & Rotation
                       In	
  addi/on	
  to	
  movement	
  (translate),	
  objects	
  can	
  be	
  
                       scaled	
  and	
  rotated
                               scale3d(sx,	
  sy,	
  sz)
                               scaleZ(sz)
                               rotateX(angle)
                               rotateY(angle),	
  
                               rotate3d(x,	
  y,	
  z,	
  angle)
                       When	
  rota/ng,	
  the	
  first	
  two	
  examples	
  rotate	
  an	
  
                       element	
  around	
  a	
  horizontal	
  or	
  ver/cal	
  axis	
  defined	
  
                       using	
  degrees	
  (deg),	
  radians	
  (rad)	
  or	
  gradians	
  (grad).	
  
                       The	
  last	
  example	
  rotates	
  an	
  element	
  around	
  a	
  defined	
  
                       vector	
  in	
  3D	
  space.

Wednesday, November 2, 2011
Animations
                       You	
  can	
  use	
  these	
  in	
  anima%ons	
  as	
  well:
                       @-­‐webkit-­‐keyframes	
  x-­‐spin	
  {
                       	
  	
  0%	
  {	
  -­‐webkit-­‐transform:	
  rotateX(0deg);	
  }
                       	
  	
  50%	
  {	
  -­‐webkit-­‐transform:	
  rotateX(180deg);	
  }
                       	
  	
  100%	
  {	
  -­‐webkit-­‐transform:	
  rotateX(360deg);	
  }
                       }




Wednesday, November 2, 2011
I See Where You’re Coming From
                       Perspec%ve	
  can	
  be	
  applied	
  to	
  a	
  single	
  element	
  
                       using	
  the	
  perspec%ve(p)	
  func%on	
  or	
  applied	
  to	
  all	
  
                       the	
  children	
  of	
  an	
  element	
  using	
  the	
  -­‐webkit-­‐
                       perspec%ve	
  property
                       -­‐webkit-­‐transform:	
  rotateY(45deg)	
  perspec%ve
                       (400px);
                       -­‐webkit-­‐perspec%ve:	
  800px;
                       Smaller	
  numbers	
  indicate	
  that	
  the	
  perspec%ve	
  
                       begins	
  closer	
  to	
  the	
  viewer



Wednesday, November 2, 2011
Stay Away From Me
                       By	
  default	
  the	
  children	
  of	
  a	
  transformed	
  element	
  
                       are	
  flamened	
  into	
  the	
  parent	
  element
                       Using	
  -­‐webkit-­‐transform-­‐style	
  allows	
  you	
  to	
  
                       specify	
  whether	
  the	
  elements	
  should	
  follow	
  their	
  
                       default	
  behavior	
  (flat)	
  or	
  “live”	
  in	
  the	
  3D	
  world	
  
                       with	
  their	
  own	
  transforma%ons	
  (preserves-­‐3d)




Wednesday, November 2, 2011
3D Package




Wednesday, November 2, 2011
Tools
                       Wallaby	
  -­‐	
  Flash	
  to	
  HTML
                       Westciv	
  Transform	
  Tool	
  -­‐	
  sliders	
  for	
  crea%on
                       CSS3	
  Please	
  (test	
  transforms	
  &	
  transi%ons)
                       Project	
  Edge	
  -­‐	
  Upcoming	
  tool	
  for	
  crea%ng	
  
                       anima%ons	
  &	
  transi%ons




Wednesday, November 2, 2011

More Related Content

Similar to Greg rewis move-itsession

CSS3 TTA (Transform Transition Animation)
CSS3 TTA (Transform Transition Animation)CSS3 TTA (Transform Transition Animation)
CSS3 TTA (Transform Transition Animation)
창석 한
 
HTML5 and CSS3 – exploring mobile possibilities - Dynabyte event
HTML5 and CSS3 – exploring mobile possibilities - Dynabyte eventHTML5 and CSS3 – exploring mobile possibilities - Dynabyte event
HTML5 and CSS3 – exploring mobile possibilities - Dynabyte event
Robert Nyman
 
Interactive Graphics
Interactive GraphicsInteractive Graphics
Interactive Graphics
Blazing Cloud
 
XNA L10–Shaders Part 1
XNA L10–Shaders Part 1XNA L10–Shaders Part 1
XNA L10–Shaders Part 1
Mohammad Shaker
 

Similar to Greg rewis move-itsession (20)

Stephanie Rewis - css-startech
Stephanie Rewis -  css-startechStephanie Rewis -  css-startech
Stephanie Rewis - css-startech
 
CSS3 TTA (Transform Transition Animation)
CSS3 TTA (Transform Transition Animation)CSS3 TTA (Transform Transition Animation)
CSS3 TTA (Transform Transition Animation)
 
Ext GWT 3.0 Theming and Appearances
Ext GWT 3.0 Theming and AppearancesExt GWT 3.0 Theming and Appearances
Ext GWT 3.0 Theming and Appearances
 
DotNetNuke World CSS3
DotNetNuke World CSS3DotNetNuke World CSS3
DotNetNuke World CSS3
 
Css3
Css3Css3
Css3
 
HTML5 Canvas - The Future of Graphics on the Web
HTML5 Canvas - The Future of Graphics on the WebHTML5 Canvas - The Future of Graphics on the Web
HTML5 Canvas - The Future of Graphics on the Web
 
Html5
Html5Html5
Html5
 
HTML5 and CSS3 – exploring mobile possibilities - Dynabyte event
HTML5 and CSS3 – exploring mobile possibilities - Dynabyte eventHTML5 and CSS3 – exploring mobile possibilities - Dynabyte event
HTML5 and CSS3 – exploring mobile possibilities - Dynabyte event
 
Migrating from Touch 1.x to 2.0
Migrating from Touch 1.x to 2.0Migrating from Touch 1.x to 2.0
Migrating from Touch 1.x to 2.0
 
Intro to HTML5 Game Programming
Intro to HTML5 Game ProgrammingIntro to HTML5 Game Programming
Intro to HTML5 Game Programming
 
HTML5 - A Whirlwind tour
HTML5 - A Whirlwind tourHTML5 - A Whirlwind tour
HTML5 - A Whirlwind tour
 
SVGo: a Go Library for SVG generation
SVGo: a Go Library for SVG generationSVGo: a Go Library for SVG generation
SVGo: a Go Library for SVG generation
 
Interactive Graphics
Interactive GraphicsInteractive Graphics
Interactive Graphics
 
Html5 more than just html5 v final
Html5  more than just html5 v finalHtml5  more than just html5 v final
Html5 more than just html5 v final
 
Iagc2
Iagc2Iagc2
Iagc2
 
CSS Transitions, Transforms, Animations
CSS Transitions, Transforms, Animations CSS Transitions, Transforms, Animations
CSS Transitions, Transforms, Animations
 
XNA L10–Shaders Part 1
XNA L10–Shaders Part 1XNA L10–Shaders Part 1
XNA L10–Shaders Part 1
 
CSS and CSS3
CSS and CSS3CSS and CSS3
CSS and CSS3
 
Solving CSS Problems With eCSStender - An Event Apart - Chicago 2009
Solving CSS Problems With eCSStender - An Event Apart - Chicago 2009Solving CSS Problems With eCSStender - An Event Apart - Chicago 2009
Solving CSS Problems With eCSStender - An Event Apart - Chicago 2009
 
CSS3 Transforms Transitions and Animations
CSS3 Transforms Transitions and AnimationsCSS3 Transforms Transitions and Animations
CSS3 Transforms Transitions and Animations
 

More from StarTech Conference

Mike hostetler - jQuery knowledge append to you
Mike hostetler - jQuery knowledge append to youMike hostetler - jQuery knowledge append to you
Mike hostetler - jQuery knowledge append to you
StarTech Conference
 
Stephen Anderson - Como construimos e hicimos crecer una empresa de consultor...
Stephen Anderson - Como construimos e hicimos crecer una empresa de consultor...Stephen Anderson - Como construimos e hicimos crecer una empresa de consultor...
Stephen Anderson - Como construimos e hicimos crecer una empresa de consultor...
StarTech Conference
 
Scott Chacon - Cuento de tres árboles
Scott Chacon - Cuento de tres árbolesScott Chacon - Cuento de tres árboles
Scott Chacon - Cuento de tres árboles
StarTech Conference
 
Robert Nyman - HTML5 apis where no man has gone before startechconf
Robert Nyman - HTML5 apis where no man has gone before startechconfRobert Nyman - HTML5 apis where no man has gone before startechconf
Robert Nyman - HTML5 apis where no man has gone before startechconf
StarTech Conference
 
Markos calderon lecciones aprendidas del desarrollo de un sistema de web co...
Markos calderon   lecciones aprendidas del desarrollo de un sistema de web co...Markos calderon   lecciones aprendidas del desarrollo de un sistema de web co...
Markos calderon lecciones aprendidas del desarrollo de un sistema de web co...
StarTech Conference
 
Ravi Mynampaty - developing findability standards
Ravi Mynampaty - developing findability standardsRavi Mynampaty - developing findability standards
Ravi Mynampaty - developing findability standards
StarTech Conference
 
Charles nutter star techconf 2011 - jvm languages
Charles nutter   star techconf 2011 - jvm languagesCharles nutter   star techconf 2011 - jvm languages
Charles nutter star techconf 2011 - jvm languages
StarTech Conference
 
Abraham Barrera - dev-cross-mobile
Abraham Barrera - dev-cross-mobileAbraham Barrera - dev-cross-mobile
Abraham Barrera - dev-cross-mobile
StarTech Conference
 
Eduardo Silva - monkey http-server everywhere
Eduardo Silva - monkey http-server everywhereEduardo Silva - monkey http-server everywhere
Eduardo Silva - monkey http-server everywhere
StarTech Conference
 
Rey Bango - HTML5: polyfills and shims
Rey Bango -  HTML5: polyfills and shimsRey Bango -  HTML5: polyfills and shims
Rey Bango - HTML5: polyfills and shims
StarTech Conference
 
Tom Preston Werner - Optimize for happiness
Tom Preston Werner -  Optimize for happinessTom Preston Werner -  Optimize for happiness
Tom Preston Werner - Optimize for happiness
StarTech Conference
 
Mark ramm To relate or not to relate
Mark ramm   To relate or not to relateMark ramm   To relate or not to relate
Mark ramm To relate or not to relate
StarTech Conference
 

More from StarTech Conference (18)

Mike hostetler - jQuery knowledge append to you
Mike hostetler - jQuery knowledge append to youMike hostetler - jQuery knowledge append to you
Mike hostetler - jQuery knowledge append to you
 
Luis Meijueiro - Open Data
Luis Meijueiro - Open DataLuis Meijueiro - Open Data
Luis Meijueiro - Open Data
 
Stephen Anderson - Como construimos e hicimos crecer una empresa de consultor...
Stephen Anderson - Como construimos e hicimos crecer una empresa de consultor...Stephen Anderson - Como construimos e hicimos crecer una empresa de consultor...
Stephen Anderson - Como construimos e hicimos crecer una empresa de consultor...
 
Jonathan snook - fake-it
Jonathan snook - fake-itJonathan snook - fake-it
Jonathan snook - fake-it
 
Scott Chacon - Cuento de tres árboles
Scott Chacon - Cuento de tres árbolesScott Chacon - Cuento de tres árboles
Scott Chacon - Cuento de tres árboles
 
T.Pollak y C.Yaconi - Prey
T.Pollak y C.Yaconi - PreyT.Pollak y C.Yaconi - Prey
T.Pollak y C.Yaconi - Prey
 
Jano Gonzalez - jruby
Jano Gonzalez - jrubyJano Gonzalez - jruby
Jano Gonzalez - jruby
 
Pedro Fuentes - star techconf
Pedro Fuentes - star techconfPedro Fuentes - star techconf
Pedro Fuentes - star techconf
 
Robert Nyman - HTML5 apis where no man has gone before startechconf
Robert Nyman - HTML5 apis where no man has gone before startechconfRobert Nyman - HTML5 apis where no man has gone before startechconf
Robert Nyman - HTML5 apis where no man has gone before startechconf
 
Markos calderon lecciones aprendidas del desarrollo de un sistema de web co...
Markos calderon   lecciones aprendidas del desarrollo de un sistema de web co...Markos calderon   lecciones aprendidas del desarrollo de un sistema de web co...
Markos calderon lecciones aprendidas del desarrollo de un sistema de web co...
 
Ravi Mynampaty - developing findability standards
Ravi Mynampaty - developing findability standardsRavi Mynampaty - developing findability standards
Ravi Mynampaty - developing findability standards
 
Charles nutter star techconf 2011 - jvm languages
Charles nutter   star techconf 2011 - jvm languagesCharles nutter   star techconf 2011 - jvm languages
Charles nutter star techconf 2011 - jvm languages
 
Caridy patino - node-js
Caridy patino - node-jsCaridy patino - node-js
Caridy patino - node-js
 
Abraham Barrera - dev-cross-mobile
Abraham Barrera - dev-cross-mobileAbraham Barrera - dev-cross-mobile
Abraham Barrera - dev-cross-mobile
 
Eduardo Silva - monkey http-server everywhere
Eduardo Silva - monkey http-server everywhereEduardo Silva - monkey http-server everywhere
Eduardo Silva - monkey http-server everywhere
 
Rey Bango - HTML5: polyfills and shims
Rey Bango -  HTML5: polyfills and shimsRey Bango -  HTML5: polyfills and shims
Rey Bango - HTML5: polyfills and shims
 
Tom Preston Werner - Optimize for happiness
Tom Preston Werner -  Optimize for happinessTom Preston Werner -  Optimize for happiness
Tom Preston Werner - Optimize for happiness
 
Mark ramm To relate or not to relate
Mark ramm   To relate or not to relateMark ramm   To relate or not to relate
Mark ramm To relate or not to relate
 

Recently uploaded

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Recently uploaded (20)

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 

Greg rewis move-itsession

  • 1. CSS3 Transitions, Transforms & Animations Rota%ng  the  Web  Forward Wednesday, November 2, 2011
  • 2. Greg Rewis assortedgarbage.com @garazi Wednesday, November 2, 2011
  • 3. Transforms 9 Wednesday, November 2, 2011
  • 4. CSS Transforms “The  2D  Transforma/ons  Module  defines  a  property   that  applies  rota/ons,  transla/ons  and  other  affine   transforma/ons  to  a  box.” In  the  2D  space,  think  of  the  transform  controls  in  your   favorite  graphics  program Scale Rotate Skew Translate   Wednesday, November 2, 2011
  • 5. Ready When You Are CSS3  Transforms  can  be  applied  to  any  element  — which  now  also  includes  generated  content Transforms  are  applied  immediately  at  the  ;me  the   page  is  rendered   When  applied  to  an  element,  all  the  children  are   transformed  as  well Transforms  can  also  be  triggered  via  a  pseudo  class   or  Javascript Wednesday, November 2, 2011
  • 6. transform: scale()* .square  { height:  250px; width:  250px; background-­‐color:  rgb(171,  38,  41); } becomes .square  { height:  250px; width:  250px; background-­‐color:  rgb(171,  38,  41); transform:  scale(2); } *scaleX  and  scaleY  are  also  possible Wednesday, November 2, 2011
  • 7. transform: scale() on :hover .square  { height:  250px; width:  250px; background-­‐color:  rgb(171,  38,  41); } .square:hover  { transform:  scale(2); } Wednesday, November 2, 2011
  • 8. If only it were that simple... As  individual  browsers  add  support  for   transforms  (and  transi%ons),  they  use  vendor-­‐ specific  prefixes. You  should  list  the  vendor  specific   implementa%ons  first.  The  actual  CSS  property   (without  a  browser  prefix)  should  always  be  last. If  you  aren’t  confident  coding  the  vendor-­‐specific   prefixes  yourself,  you  can  use  CSSPrefixer. Wednesday, November 2, 2011
  • 9. transform: scale() in reality .square  { height:  250px; width:  250px; background-­‐color:  rgb(171,  38,  41); } .square:hover  { -­‐webkit-­‐transform:  scale(2); -­‐moz-­‐transform:  scale(2);   -­‐ms-­‐transform:  scale(2); -­‐o-­‐transform:  scale(2); transform:  scale(2); } Wednesday, November 2, 2011
  • 10. transform: rotate() & transform: skew()* .square  { height:  250px; width:  250px; background-­‐color:  rgb(171,  38,  41); transform:  rotate(45deg); } .square  { height:  250px; width:  250px; background-­‐color:  rgb(171,  38,  41); transform:  skew(45deg); } *skewX  and  skewY  are  also  possible [browser  specific  varia;ons  inten;onally  omiXed] Wednesday, November 2, 2011
  • 11. transform: translate() .square  { height:  250px; width:  250px; background-­‐color:  rgb(171,  38,  41); } .square:hover  { transform:  translate(50px,  50px); } *translateX  and  translateY  are  also  possible [browser  specific  varia;ons  inten;onally  omiXed] Wednesday, November 2, 2011
  • 12. multiple transforms* .square  { height:  250px; width:  250px; background-­‐color:  rgb(171,  38,  41); } .square:hover  { transform:  scale(2)  rotate(45deg); } *all  proper;es  are  applied  simultaneously [browser  specific  varia;ons  inten;onally  omiXed] Wednesday, November 2, 2011
  • 13. Transform-origin By  default,  all  transforms  occur  “around”  the   center  of  the  object  (x=50%,  y=50%) .square:hover  { transform:  rotate(45deg); } origin Wednesday, November 2, 2011
  • 14. Transform-origin .square:hover  { origin transform:  rotate(45deg); transform-­‐origin:  right  top; } leZ,  center,  right  and  top,  center,  boXom .square:hover  { transform:  rotate(45deg); transform-­‐origin:  100%  100%; } the  point  of  origin  can  even  be   origin outside  of  the  object  itself [browser  specific  varia;ons  inten;onally  omiXed] Wednesday, November 2, 2011
  • 16. I Didn’t See That Coming! Much  like  absolute  posi%oning,  the  CSS3   Transform  property  does  not  affect  the  box   model Wednesday, November 2, 2011
  • 19. Modernizr - Feature Detection Link  to  the  script  &  add  <html  class=”no-­‐js”> Modernizr  changes  the  no-­‐js  class  to  a  long  string   of  classes  that  you  can  use  to  serve  different  CSS   or  JS  to  a  browser  depending  on  its  lack  of   capabili%es.  ie: <html  class=”  js  canvas  canvastext  geoloca/on   crosswindowmessaging  no-­‐websqldatabase  no-­‐indexeddb   hashchange  no-­‐historymanagement  draganddrop  no-­‐websockets   rgba  hsla  mul/plebgs  backgroundsize  borderimage  borderradius   boxshadow  opacity  no-­‐cssanima/ons  csscolumns  cssgradients  no-­‐ cssreflec9ons  csstransforms  no-­‐csstransforms3d  no-­‐csstransi9ons   video  audio  localstorage  sessionstorage  webworkers   applica/oncache  svg  no-­‐smilsvgclippaths  fonLace”> Wednesday, November 2, 2011
  • 20. Transforms – based on abilities .no-­‐csstransforms  #foo  #soo  {        display:block; } Or  write  CSS  so  it’s  only  shown  to  capable   browsers: .csstransforms  #foo  {      transform:  rotate(10deg); } Wednesday, November 2, 2011
  • 22. Transitions 4 10 10 Wednesday, November 2, 2011
  • 23. :hover - before CSS3 nav  li  a  { background-­‐color:  rgb(0,0,0); } nav  li  a:hover  { background-­‐color:  rgb(86,  125,33); } Wednesday, November 2, 2011
  • 24. CSS Transitions CSS  Transi%ons  allows  property  changes  in  CSS   values  to  occur  smoothly  over  a  specified   dura%on. Transi%ons  can  be  thought  of  as  anima%ons  in   their  simplest  form. Only  animatable  CSS  proper%es  can  be   transi%oned. Wednesday, November 2, 2011
  • 25. Animatable Properties background-­‐color fill padding  (-­‐top,  -­‐right,  -­‐ boXom,  -­‐leZ) background-­‐image   font-­‐size (gradients) posi;on  (top,  right,   font-­‐weight boXom,  leZ) background-­‐posi;on height stroke  (-­‐opacity,  -­‐ background-­‐size width) leXer-­‐spacing border  (-­‐color,-­‐width) text-­‐indent line-­‐height border-­‐radius text-­‐shadow margin  (-­‐top,  -­‐right, border-­‐spacing -­‐boXom,  -­‐leZ) transform box-­‐flex max-­‐  /  min-­‐height transform-­‐origin box-­‐shadow max-­‐  /  min-­‐width ver;cal-­‐align color opacity visibility column  (-­‐count,  -­‐gap,  -­‐ outline  (color,  width) width width) outline-­‐offset word-­‐spacing clip z-­‐index Wednesday, November 2, 2011
  • 26. Anatomy of a Transition keyframe (rule  1) tween keyframe (rule  2) Wednesday, November 2, 2011
  • 27. Basic Anatomy of a Transition Basic  styling  of  the  element  in  rule  1 It  may  contain  proper;es  that  won’t  be  modified The  proper;es  to  be  “animated”  are  iden;fied   with  the  transi;on  property Rule  2  contains  the  modifica;ons  to  the  element  &   uses  a  pseudo-­‐class  (:hover,  :focus,  :target)  to   trigger  the  transi;on OR  Javascript  can  also  be  used  to  trigger  a   transi;on Wednesday, November 2, 2011
  • 28. :hover - with CSS3 transitions nav  li  a  { background-­‐color:  rgb(0,0,0); transi%on-­‐property:  background-­‐color; transi%on-­‐dura%on:  1s; } nav  li  a:hover  { background-­‐color:  rgb(86,  125,33); } Wednesday, November 2, 2011
  • 29. Property Listings In  the  previous  example,  only  a  single  property  was   transi;oned: transi;on-­‐property:  background-­‐color; Mul;ple  proper;es  can  be  defined  at  one  ;me: transi;on-­‐property:  background-­‐color,   padding,  font-­‐size,  color; or transi;on-­‐property:  all; Wednesday, November 2, 2011
  • 30. Time it Right! The  dura%on  of  the  transi%on  is  determined  by   the  transi%on-­‐dura%on  property. Time  can  be  designated  in  seconds  or   milliseconds transi%on-­‐dura%on:  2s; transi%on-­‐dura%on:  500ms; Time  is  not  precise  and  can  vary  slightly  between   browsers Wednesday, November 2, 2011
  • 33. Transition Speed By  default,  transi%ons  play  at  a  constant  rate   (called  linear).   The  transi%on-­‐%ming-­‐func%on  allows  you  to   specify  a  variable  rate  of  speed  for  the  transi%on linear ease-­‐out ease ease-­‐in-­‐out ease-­‐in cubic-­‐bezier(0,.33,1,.75) transi%on-­‐%ming-­‐func%on:  ease; Wednesday, November 2, 2011
  • 34. Ceasar - Easing tool Wednesday, November 2, 2011
  • 35. Wait a Second! By  default,  a  transi%on  will  play  immediately  when   triggered The  transi%on-­‐delay  property  allows  you  to  specify   a  period  of  %me  to  wait  before  performing  the   transi%on As  with  the  transi%on-­‐dura%on  property,  %me  can   be  specified  in  either  seconds  or  milliseconds transi%on-­‐delay:  3s; transi%on-­‐delay:  250ms; Wednesday, November 2, 2011
  • 36. Putting It All Together nav  li  a  { background-­‐color:  rgb(0,0,0); padding:  9px  5px; transi;on-­‐property:  background-­‐color,  padding,  transform; transi;on-­‐dura;on:  1s; transi;on-­‐delay:  100ms; transi;on-­‐;ming-­‐func;on:  ease; } nav  li  a:hover  { background-­‐color:  rgb(86,  125,33); padding:  12px  5px; transform:  rotate(-­‐5deg); } Wednesday, November 2, 2011
  • 37. Well, Actually... nav  li  a  { background-­‐color:  rgb(0,0,0); padding:  9px  5px; -­‐webkit-­‐transi;on-­‐property:  background-­‐color,  padding,  transform;            -­‐moz-­‐transi;on-­‐property:  background-­‐color,  padding,  transform;                    -­‐o-­‐transi;on-­‐property:  background-­‐color,  padding,  transform;                              transi;on-­‐property:  background-­‐color,  padding,  transform; -­‐webkit-­‐transi;on-­‐dura;on:  1s;          -­‐moz-­‐transi;on-­‐dura;on:  1s;                    -­‐o-­‐transi;on-­‐dura;on:  1s;                              transi;on-­‐dura;on:  1s; -­‐webkit-­‐transi;on-­‐delay:  100ms;          -­‐moz-­‐transi;on-­‐delay:  100ms;                    -­‐o-­‐transi;on-­‐delay:  100ms;                              transi;on-­‐delay:  100ms; -­‐webkit-­‐transi;on-­‐;ming-­‐func;on:  ease;          -­‐moz-­‐transi;on-­‐;ming-­‐func;on:  ease;                    -­‐o-­‐transi;on-­‐;ming-­‐func;on:  ease;                              transi;on-­‐;ming-­‐func;on:  ease; } nav  li  a:hover  { background-­‐color:  rgb(86,  125,33); padding:  12px  5px; -­‐webkit-­‐transform:  rotate(-­‐5deg);          -­‐moz-­‐transform:  rotate(-­‐5deg);              -­‐ms-­‐transform:  rotate(-­‐5deg);                    -­‐o-­‐transform:  rotate(-­‐5deg);                              transform:  rotate(-­‐5deg); } Wednesday, November 2, 2011
  • 38. Let’s Mix It Up You  can  target  mul%ple  proper%es  and  assign   differing  speeds  —  all  within  the  same  rule  using   comma-­‐separated  values. nav  li  a  { transi%on-­‐property:  background-­‐color,  padding,   transform; transi%on-­‐dura%on:  1s,  2s,  500ms; transi%on-­‐delay:  100ms,  0,  2s; transi%on-­‐%ming-­‐func%on:  ease,  linear,  ease-­‐in; } Wednesday, November 2, 2011
  • 39. Transition Shorthand Using  shorthand,  we  can  combine  all  four  of  the   transi;on  proper;es  into  a  single  property Order  is  important  due  to  the  existence  of  2  ;ming   proper;es  —  the  first  !me  value  will  be  assigned  to   transi;on-­‐dura;on  and  the  last  to  the  delay Values  are  separated  by  a  space  (not  comma) %ming-­‐func%on delay transi%on:  all  1s  ease  100ms property dura%on Wednesday, November 2, 2011
  • 40. That’s Better nav  li  a  { background-­‐color:  rgb(0,0,0); padding:  9px  5px; -­‐webkit-­‐transi;on:  all  1s  ease  100ms;        -­‐moz-­‐transi;on:  all  1s  ease  100ms;                    -­‐o-­‐transi;on:  all  1s  ease  100ms;                              transi;on:  all  1s  ease  100ms; } nav  li  a:hover  { background-­‐color:  rgb(86,  125,33); padding:  12px  5px; -­‐webkit-­‐transform:  rotate(-­‐5deg);          -­‐moz-­‐transform:  rotate(-­‐5deg);              -­‐ms-­‐transform:  rotate(-­‐5deg);                    -­‐o-­‐transform:  rotate(-­‐5deg);                              transform:  rotate(-­‐5deg); } Wednesday, November 2, 2011
  • 41. Let’s Mix It Up It’s  also  possible  to  shorthand  the  mul%ple   proper%es  with  differing  speeds (use  a  comma  between  the  groupings) nav  li  a  { transi%on:            background-­‐color  1s  ease  100ms,            padding  2s  linear  0,            transform  500ms  ease-­‐in  2s; } [placed  on  separate  lines  for  readability] Wednesday, November 2, 2011
  • 43. UI Enhancements Transi%ons  and  transforms  can  be  added  to   pseudo-­‐elements  (::before  and  ::ajer). The  :focus  pseudo-­‐class  can  add  interes%ng  effects   to  form  elements  by  highligh%ng  the  element  with   focus. :focus  is  also  good  to  use  in  combina%on   with  :hover  —  keyboard  navigators  have  a  visual   cue  of  their  focus  on  the  page. Wednesday, November 2, 2011
  • 44. Stay :focus’ed Use  the  :focus  pseudo-­‐class  to  add  interes;ng  effects  to  form   elements. input  { -­‐webkit-­‐transi;on:  border  .5s;          -­‐moz-­‐transi;on:  border  .5s;                    -­‐o-­‐transi;on:  border  .5s;                              transi;on:  border  .5s; } input:focus  { outline:0; border:  rgba(72,  107,  11,  .7)  9px  solid; -­‐webkit-­‐border-­‐radius:  6px;        -­‐moz-­‐border-­‐radius:  6px;                            border-­‐radius:  6px; } Wednesday, November 2, 2011
  • 45. Stay :focus’ed textarea  {   height:  20px;            -­‐webkit-­‐transi;on:  height  .5s,  border  .5s;          -­‐moz-­‐transi;on:  height  .5s,  border  .5s;                    -­‐o-­‐transi;on:  height  .5s,  border  .5s;                              transi;on:  height  .5s,  border  .5s; } textarea:focus  {   outline:  0;   height:  250px;   border:  rgba(72,  107,  11,  .7)  9px  solid;   -­‐webkit-­‐border-­‐radius:  6px;          -­‐moz-­‐border-­‐radius:  6px;                              border-­‐radius:  6px;   } Wednesday, November 2, 2011
  • 46. Click If You Love Javascript Transi%ons  and  transforma%ons  are  simply  a   change  from  one  state  of  an  element  to  another.   CSS  can  only  do  so  much  –  but  using  Javascript,   we  can  trigger  transforma%ons  and  transi%ons   for  any  catchable  event,  such  as  onload,   onchange  or  click. jQuery  or  any  other  Javascript  framework  can  be   used. Wednesday, November 2, 2011
  • 48. Animations 5 10 Wednesday, November 2, 2011
  • 49. Like Transitions on Steroids A  CSS3  Anima;on,  animates  between  CSS  proper;es   exactly  like  transi;ons  –  however,  we  can  specify  the   number  of  ;mes  it  plays  and  whether  it  plays  in  a   single  direc;on  or  both  direc;ons -­‐webkit-­‐anima;on-­‐itera9on-­‐count:  number  or  infinite; -­‐webkit-­‐anima;on-­‐direc9on:  normal  or  alternate; Anima;ons  are  named,  and  can  therefore  be  reused   by  more  than  one  CSS  rule -­‐webkit-­‐anima;on-­‐name:  moveIt; Wednesday, November 2, 2011
  • 50. I Was Keyframed, I Tell You An  anima;on  defines  a  set  of  start  (from)   proper;es  and  a  set  of  end  (to)  proper;es  as  values   of  keyframes  assigned  to  the  named  anima;on @-­‐webkit-­‐keyframes  moveIt  {    from  {        proper!es/values  go  here }    to  {        proper!es/values  go  here } } Wednesday, November 2, 2011
  • 51. A Simple Animation .anima;on-­‐rule  {      -­‐webkit-­‐anima;on-­‐name:  moveIt;      -­‐webkit-­‐anima;on-­‐dura;on:  4s;      -­‐webkit-­‐anima;on-­‐itera;on-­‐count:  infinite;      -­‐webkit-­‐anima;on-­‐direc;on:  normal;      -­‐webkit-­‐anima;on-­‐;ming-­‐func;on:  ease; } @-­‐webkit-­‐keyframes  moveIt  { from  {      width:  200px;      background:  #f00;      opacity:  0.5;      -­‐webkit-­‐transform:  scale(0.5)  rotate(15deg); } to  {      width:  400px;      background:  #ffffa2;      opacity:  1;      -­‐webkit-­‐transform:  scale(1)  rotate(0deg); } } Wednesday, November 2, 2011
  • 52. Smoothing out the bumps As  with  transi%ons,  the  anima%on-­‐%ming-­‐ func%on  can  use  linear,  ease,  ease-­‐in,  ease-­‐out,   ease-­‐in-­‐out For  more  control  over  the  look  of  the  anima%on,   addi%onal  keyframes  allow  you  to  specify  the   values  for  proper%es  at  a  certain  percentage  of   the  anima%on Anima%ons  can  also  be  wrimen  as  shorthand -­‐webkit-­‐anima;on:  name  dura;on  ;ming  itera;ons  direc;on; Wednesday, November 2, 2011
  • 53. A Simple Animation .anima;on-­‐rule  {      height:  60px;      padding:  10px;      -­‐webkit-­‐anima;on:  ‘moveIt’  4s  ease  3  normal; } @-­‐webkit-­‐keyframes  ‘moveIt’  { 0%  {      width:  200px;      background:  #A74240;      opacity:  0.5;      -­‐webkit-­‐transform:  scale(0.5)  rotate(15deg); } 40%  {      width:  300px;      background:  #A74240;      opacity:  1;      -­‐webkit-­‐transform:  scale(1.3)  rotate(15deg); } 100%  {      width:  400px;      background:  #ffffa2;      opacity:  0.5;      -­‐webkit-­‐transform:  scale(1)  rotate(0deg); }  } Wednesday, November 2, 2011
  • 54. Animation Values anima;on-­‐name:  'yourName';   anima;on-­‐dura;on:  !me;   anima;on-­‐;ming-­‐func;on:                linear  |  ease  |  ease-­‐in  |  ease-­‐out  |                ease-­‐in-­‐out  |  cubic-­‐bezier(); anima;on-­‐itera;on-­‐count:  number  or  infinite; anima;on-­‐direc;on:  normal  |  alternate; anima;on-­‐delay:  !me; anima9on-­‐fill-­‐mode:                                    backwards|forwards|none|both; -­‐webkit-­‐anima9on:  'disappear'  0.6s    linear  0.5s  alternate  5  forwards; Wednesday, November 2, 2011
  • 58. Animate.css http://daneden.me/animate/ Wednesday, November 2, 2011
  • 59. Accelerate! -­‐webkit-­‐transform:  translateZ(0); -­‐webkit-­‐transform:  translate3d(0,0,0) Both  these  tricks  will  make  your  webkit  browser   believe  it  needs  to  use  the  GPU,  rather  than  the   CPU,  which  can  increase  performance. As  always,  test  to  be  sure  performance  is   increased—and  that  you’re  not  simply  decreasing   bamery  life  for  your  user. Wednesday, November 2, 2011
  • 60. 3D Transforms 10 Wednesday, November 2, 2011
  • 61. Putting it in Perspective “The  3D  Transforma%ons  Module  extends  the  2D   transforma%ons  with  a  perspec%ve   transforma%on.” Actually,  it’s  really  more  about  2.5D  —  think   postcards  in  space X,  Y  &  Z  axis  rota%on Perspec%ve Applied  via  the  same  transform  property  as  2D   tranforms  (our  examples  will  use  -­‐webkit-­‐) Wednesday, November 2, 2011
  • 62. Translate in 3d Several  new  transform  func;ons.  Remember: transform:  translate(50px,  50px); transform:  translateX(50px); We  now  add: -­‐webkit-­‐transform:  translate3d(x,  y,  z); -­‐webkit-­‐transform:  translateZ(z); For  the  z  axis,  a  posi;ve  number  represents  a  move   toward  the  viewer. *  The  z  value  cannot  be  a  percentage. Wednesday, November 2, 2011
  • 63. 3d Scale & Rotation In  addi/on  to  movement  (translate),  objects  can  be   scaled  and  rotated scale3d(sx,  sy,  sz) scaleZ(sz) rotateX(angle) rotateY(angle),   rotate3d(x,  y,  z,  angle) When  rota/ng,  the  first  two  examples  rotate  an   element  around  a  horizontal  or  ver/cal  axis  defined   using  degrees  (deg),  radians  (rad)  or  gradians  (grad).   The  last  example  rotates  an  element  around  a  defined   vector  in  3D  space. Wednesday, November 2, 2011
  • 64. Animations You  can  use  these  in  anima%ons  as  well: @-­‐webkit-­‐keyframes  x-­‐spin  {    0%  {  -­‐webkit-­‐transform:  rotateX(0deg);  }    50%  {  -­‐webkit-­‐transform:  rotateX(180deg);  }    100%  {  -­‐webkit-­‐transform:  rotateX(360deg);  } } Wednesday, November 2, 2011
  • 65. I See Where You’re Coming From Perspec%ve  can  be  applied  to  a  single  element   using  the  perspec%ve(p)  func%on  or  applied  to  all   the  children  of  an  element  using  the  -­‐webkit-­‐ perspec%ve  property -­‐webkit-­‐transform:  rotateY(45deg)  perspec%ve (400px); -­‐webkit-­‐perspec%ve:  800px; Smaller  numbers  indicate  that  the  perspec%ve   begins  closer  to  the  viewer Wednesday, November 2, 2011
  • 66. Stay Away From Me By  default  the  children  of  a  transformed  element   are  flamened  into  the  parent  element Using  -­‐webkit-­‐transform-­‐style  allows  you  to   specify  whether  the  elements  should  follow  their   default  behavior  (flat)  or  “live”  in  the  3D  world   with  their  own  transforma%ons  (preserves-­‐3d) Wednesday, November 2, 2011
  • 68. Tools Wallaby  -­‐  Flash  to  HTML Westciv  Transform  Tool  -­‐  sliders  for  crea%on CSS3  Please  (test  transforms  &  transi%ons) Project  Edge  -­‐  Upcoming  tool  for  crea%ng   anima%ons  &  transi%ons Wednesday, November 2, 2011