CSS TRANSITIONS, TRANSFORMS, & ANIMATIONS

COMP 126: Practical Web Design & Development for Everyone

transitions

allow property changes in CSS values to occur smoothly over a specified duration

transforms

allow elements styled with CSS to be moved or changed in two-dimensional or three-dimensional space

you can combine transitions and transforms to animate elements

animations

transitions

simple nav transition

anatomy of a transition

  • transition-property: the property you want to transition. Note: not every property can be transitioned!

  • transition-duration: in seconds or milliseconds: 4s or 4000ms (250-300ms is considered the "sweet spot").

  • transition-timing-function: “cushioning" for the transition, defaults to ease; optional.

  • transition-delay: the number of milli/seconds to delay the transition before firing it; optional.

Shorthand syntax:

transition: [property] [duration] [timing-function][delay];

 

 

timing functions

  • linear: The animation has the same speed from start to end.

  • ease: Default value. Starts slow, then speeds up, then ends slow.

  • ease-in: Starts slowly, speeds up to end.

  • ease-out: Starts fast, slows down to end.

  • ease-in-out: Starts slow, ends slow.

  • cubic-bezier: You define the curve: https://cubic-bezier.com/

 

simple hover transition 

transitioning multiple properties

or, in shorthand:

 

transition: 
    color 2s, 
    transform 300ms 1s;

transition-duration

transition-delay

transition-property

transition-property: color, transform;
transition-duration: 2s, 300ms;
transition-delay: 0, 1s; 

transforms

transforms

translate (move)

rotate/scale (size)

skew (distort/squish)

2D transforms

  • horizontal (x-axis)

  • vertical (y-axis)

 

3D transforms

  • horizontal (x-axis)

  • vertical (y-axis)

  • depth (z-axis) 

 

...allow you to change the shape and positioning of an element without interfering with the document flow (the other elements on the page); can be coupled with transitions for an animation-style effect

simple transform 

more transitions & transforms

changes the position of the origin of transformation from its default origin (i.e., its own center and/or the boundaries of the parent element); values, examples, and more demos here

 transform-origin

animations

animation property + @keyframes block

.animated-div {
    animation: black-to-white 1s linear 1;
}

@keyframes black-to-white {
    0% { background: black; }
    100% { background: white; }
}


the animation property binds a named animation to an element and specifies its duration

the @keyframes block names the animation and specifies what its properties are animating "from" (at 0%) and "to" (at 100%)

animation sYNTAX

  • animation-name: The name of the keyframe block you want to use. Can be anything.

  • animation-duration: How long the animation takes to proceed from 0% complete to 100% complete.

  • animation-timing-function: Just like transition-timing-function; defaults to ease.

  • animation-delay: The number of seconds to delay the start of the animation from its trigger; optional.

  • animation-iteration-count: The number of times you want the animation to proceed from 0% to 100%; "infinite" if you don't want to it stop. Defaults to 1; optional.

.animated-div {
    animation: black-to-white 1s linear 2s 2;
}

 the @keyframes block

...allows you to define a group of properties and values to animate, rather than simply changing one or two values (as in transitions)

@keyframes black-to-white {
  0% /* or from */ {
    background: black;
    color: white;
  }
  100% /* or to */ {
    background: white;
    color: black;
  }
}
@keyframes black-to-white {
  0% { color: black; }
  50% { color: grey; }
  100% { color: white; }
}

the name I chose for this animation (black-to-white)

start (0%): white text on black

end (100%):

black text on white

you can control the animation in stages with multiple percentages

multi-step animation

buttons: transition, transform, animation

SVGs

background-position

one value: keyword, length, or percentage on X axis
two values: keyword, length, or percentage on X and Y axes
three values: X, Y, and an offset for Y
four values: X, offset for X, Y, offset for Y

/* keyword */
background-position: top;
background-position: bottom;
background-position: left;
background-position: right;
background-position: center; 


/* <percentage> */
background-position: 25% 75%;

/* <length> */
background-position: 1cm 2cm;

/* offsets */
background-position: bottom 10px right 20px;
background-position: right 3em bottom 10px;
background-position: bottom 10px right;
background-position: top right 10px;
 

126-CSS3: Transitions, Transforms, Animations

By tkjn

126-CSS3: Transitions, Transforms, Animations

  • 5,741