Working with Living Style Guide Animation

Sarah Drasner

Twitter: sarah_edo || CodePen: sdras

Extendible,
Composable

Working on a large team means ability to iterate is key

//----   timing  ----//
$class-slug: t !default;

@for $i from 1 through 7 {
  .#{$class-slug}-#{$i} {
    animation-duration: 0.8 - (0.1s * $i);
  }
}

Timing Increment

Like h1, h2

//----   ease  ----//
$easein-quad: cubic-bezier(0.55, 0.085, 0.68, 0.53);
$easeout-quad: cubic-bezier(0.25, 0.46, 0.45, 0.94);
$easein-back: cubic-bezier(.57, .07, .6, 1.71);
$easeout-back: cubic-bezier(0.175, 0.885, 0.32, 1.275);

Ease Variables

Brand-specific

.entrance {
  animation-timing-function: $easeout-quad;
}
.entrance-emphasis {
  animation-timing-function: $easeout-back;
}
.exit {
  animation-timing-function: $easein-quad;
}
.exit-emphasis {
  animation-timing-function: $easein-back;
}

Ease Reuse

Meaningful classes

//animations
@keyframes pop {
  0% {
    transform: scale(0.9) translateZ(0);
  }
  100% {
    transform: scale(1) translateZ(0);
  }
}

.pop {
  animation-name: pop;
  @extend .anim-fill-both;
}

Animations

Only what you need

.anim-fill-both {
  animation-fill-mode: both;
}

Extend/Mixins

Animation Fill Mode or Common Uses

Of  Note:

  • t5 is like h5- body copy
  • ~250ms is a good response time, under 400ms is under the doherty threshold (re-popularized by Halt and Catch Fire)
  • Hook into animation-play-state and native JS for single movements
  • Larger movements need components

Buy-in

Build Trust

This pen.

Main Principle:

Design everything first, slowly unveil things.

Prototyping

Thumbnails-

Notes for yourself

Storyboards-

Notes for collaboration

Low Fidelity Prototypes

Show the motion

Low Fidelity Prototypes-

screenshot to build on top of

Principle

FramerJS

After Effects

Keynote

Straight up code

Tools

Communication

Get small projects off the ground to build trust

 

Align with the why

Google Material Design

!=

Motion Design

Branding

Have an opinion

Style and Branding:

Not one size fits all

Adhering to your branding means motion solves the problem for your users.

  • What happens repeatedly
  • Easing structures
  • User flow
  • Toggle on/off?

Style and Branding

this pen.

Responsive

What needs to change, what doesn't

Mobile and Desktop compatible:

Zingtouch

Hammer

Draggable

Flickity

onMouseOver || onTouchStart

Responsive Interactions

Responsive Consistency

  • SVG is great for responsive
  • Canvas can be resolution-independant
  • Eases should stay the same, but timing can be adjusted
  • Specify initial-scale=1.0 in the meta tag so that the device is not waiting the required 300ms
  • Must either start from a larger touch-target (40px x 40px or greater) or use @media(pointer:coarse)as support allows

Invisible animation

UX Animation & UX Choreography

Mental Maps

context-shifting in UX

Spacial Maps - Cognitive Leaks

Interruption

Spacial Maps - connecting two states

From this CSS-Tricks Article

Revealing

  • xxx Modals die 4eva xxx
  • breaks context
  • "brute force" UX

modals suck!

it's not them, it's their typical UX pattern!

Revealing

Perceived Performance

Perceived Performance

Custom Loaders:

Viget did an experiment and found that despite some individual variation, novel loaders as a whole had a higher wait time and lower abandon rate than generic ones

22 sec

14 sec

Loading times

Spatial Awareness

Interaction

Right tool for the right job

Performance

  • Opacity
  • Transforms
  • Hardware Acceleration
@mixin accelerate() {
 transform: translateZ(0);
 backface-visibility: hidden;
 perspective: 1000px;
}

.foo {
  @include accelerate(transform);
}

Case Study: Netflix

Hardware Acceleration vs Control

this pen.

You're on a trip exploring a city

You're trying to build out the day of activities

Lonely Planet

but...

Google Maps

This Demo.

Thank you!

Sarah Drasner

Twitter: sarah_edo || CodePen: sdras

Working with Living Style Guide Animation

By sdrasner

Working with Living Style Guide Animation

  • 6,748