Making Motion Inclusive

A presentation at An Event Apart Boston in May 2019 in Boston, MA, USA by Val Head

Slide 1

Slide 1

Making Motion Inclusive Val Head @vlh

Photo by Victor Lozano on Unsplash https://unsplash.com/photos/aLNqys6xAdw

Slide 2

Slide 2

Slide 3

Slide 3

Slide 4

Slide 4

Slide 5

Slide 5

“Inclusive design doesn’t mean you’re designing one thing for all people. You’re designing a diversity of ways to participate so that everyone has a sense of belonging.” –Susan Goltsman

Slide 6

Slide 6

Slide 7

Slide 7

Animation helps with: Visual continuity Reducing cognitive load Guiding tasks Connecting across contexts … and more

Slide 8

Slide 8

Designing Interface Animation designinginterfaceanimation.com

Slide 9

Slide 9

Slide 10

Slide 10

Slide 11

Slide 11

Pause, Stop, Hide Provide a way to pause, stop, or hide any moving, blinking, scrolling content (that lasts more than 5s) unless that moving, blinking, or scrolling content is an essential activity.

Slide 12

Slide 12

Common places where this might apply: • Autoplaying videos • Animated background videos or animations • Auto-advancing carousels

Slide 13

Slide 13

2.3.1 Three flashes or below threshold

Slide 14

Slide 14

Three flashes or below threshold Don’t include anything that flashes more than three times in any one second unless the flashing is below the general flash threshold red flash threshold.

Slide 15

Slide 15

Flashing animations might come up more than you initially think. This glitchy graphic flashes different colours more than three times a second. (To their credit, the article this is from was also offered in a text-only format for those sensitive to flashing.)

Slide 16

Slide 16

Sometimes we see warnings like this in front of sites or interactive pieces that include flashing animations.

Slide 17

Slide 17

This particular piece was a holiday card for an agency that included a few short interactive games. One could argue that this might not be critical or important content, so those that are sensitive to flashing weren’t missing anything by not being able to advance past the flashing warning. Does that argument hold? It depends on the content and the context of the situation.

Slide 18

Slide 18

2.3.3 Animation from interactions

Slide 19

Slide 19

Animation from interactions Motion animation triggered by interaction can be disabled unless the animation is essential for functionality or the information being conveyed.

This guideline differs from the two guidelines before it since it deals with animation that comes as a result of user interaction.

Slide 20

Slide 20

“motion animation” can sound like a confusing term at first, and it does have a rather long definition. The last line of the definition is one to especially take note of.

motion animation (definition): Addition of steps between conditions to create the illusion of movement or to give a sense of a smooth transition. For example, an element which moves into place or changes size while appearing is considered to be animated. An element which appears instantly without transitioning is not using animation. Motion animation does not include changes of color, blurring or opacity.

Slide 21

Slide 21

Essentially, what this definition says is that all motion is animation but not all animation is motion. It’s an important distinction to make to denote that some types of animation can be triggering and other types of animation are likely not.

Slide 22

Slide 22

How to meet this criteria?

• Avoid using unnecessary animation • Provide a control for users to turn off nonessential animations from user interaction •Take advantage of the reduce motion feature in the user-agent or operating system

Slide 23

Slide 23

Before we dig into following this list, let’s look at why this recommendation is being made in the first place.

Over the last few years, we’ve come to realize that some number of people can have their motion sensitivities triggered by motion on screen. To put it another way, they can suffer real physical symptoms or illness as a result to some types of motion on screen.

Elieen Web provides a first-person account here:

source.opennews.org/articles/motion-sick/

Slide 24

Slide 24

Another first-person account from someone with a temporary vestibular disorder: alistapart.com/article/accessibility-for-vestibular/

Slide 25

Slide 25

Vestibular disorders defined:

Any disease, damage, or injury to the vestibular system—the system around our inner ear and brain that processes sensory information involved in controlling balance and eye movements —falls under the umbrella of a vestibular disorder.

Slide 26

Slide 26

Vestibular disorders defined:

There is no one way to have a vestibular disorder. Different people have different symptoms and different triggers.

What triggers one person, may not affect another and context matters. Some folks with vestibular disorders that I talked to had no problem playing first person video games with lots of full screen motion. But when it came to opening a desktop app with a full screen wipe transition - that would be triggering.

Expectations also play a big role. When large amount of motion are encountered by surprise, the chances for them to be triggering is increased.

Slide 27

Slide 27

What causes the negative impact is not exactly the motion itself, but the mismatch the motion creates. When the motion on screen gives enough visual cues to suggest the body is moving, but we’re sitting still in a chair, that mismatch can cause symptoms for people with motion sensitivity.

Slide 28

Slide 28

“I’m not suggesting you shouldn’t make more cool interactive news stories, or use motion in interesting ways. But I’m advocating here for some guidelines to help make your story a better experience for all your readers.” –Eileen Webb

Slide 29

Slide 29

Motion that potentially triggers

It’s helpful to better understand what types of motion are likely to be triggering, because it’s not all motion or animation that is problematic. Certain types of motion are much more likely to be triggering.

Slide 30

Slide 30

Scaling and zooming

Scaling and zooming on a large scale, relative to the overall viewport size, are type of motion that commonly triggering for people with motion sensitivites.

Slide 31

Slide 31

The app opening zoom animation on iOS is one example of this. (In fact it’s an important example of this that will come up later in this talk.)

The mismatch between the flat look of the icons contrasted with the depth and speed at which the icon moves is what specifically can be triggering in this example.

Slide 32

Slide 32

Spinning and vortex effects

Spinning and vortex effects generally don’t need to be large to be triggering. Even a small spinning effect, especially if it loops infinitely, can be triggering.

Slide 33

An example of spinning motion in the background of a web site header. (Remember this site, it will come up again later.)

Slide 34

Another, more pronounced example of a potentially triggering spinning effect. The mismatch between the spinning content and the non-moving shapes around it is what can be triggering.

Slide 35

Slide 35

Multi-speed or multidirectional movement

Slide 36

An example of a site that has both multi-speed and multi-directional motion on scroll.

Slide 37

Slide 37

Hey, about that parallax…

The mention of “multi-speed” might have made you think of parallax effects. And you’d be right. Parallax effects, by their nature, involve moving different objects at different speeds and are almost universally listed as a trigger by the motion sensitive folks I’ve talked to.

Slide 38

An example of a parallax scrolling effect.

Slide 39

Slide 39

Parallax does have some uses - this article outlines the situations where it might be useful, along with a much longer list of places where it was not found to be useful. But no matter your reason for using parallax effects, you should consider designing methods for reducing motion because it is so commonly a triggering type of motion.

nngroup.com/articles/parallax-usability/

Slide 40

Slide 40

Constant animation near text

Slide 41

The constant movement of the pull quote animations and the static text create the triggering mismatch in these cases.

Slide 42

Slide 42

Large movements

Large motions, relative to the overall screen size can also be triggering. If an animation causes a large amount of the overall screen real estate to move, like a full screen wipe or transition, it’s likely to be triggering.

Slide 43

Slide 43

alistapart.com/article/designing-safer-web-animation-for-motion-sensitivity

Slide 44

Slide 44

webkit.org/blog/7551/responsive-design-for-motion/

Slide 45

Slide 45

It’s important to note what’s not on this list: Not on the list… animated colour changes, opacity fades, small movements

Slide 46

Slide 46

Prefers-reduced-motion

What is it? And where did it come from? Turns out, it’s rather new, but also very powerful.

Slide 47

Slide 47

An approximate timeline

2013 iOS 7 released and we saw article with headlines like this: “Why iOS7 is making some users sick”

Slide 48

Slide 48

Later in 2013: Reduce motion setting added to iOS

Slide 49

Slide 49

2015: prefers-reduced-motion proposed

2016: Reduce motion settings Added to macOS

Slide 50

Slide 50

You can opt in to reduced motion via OS settings on mac and iOS

Slide 51

Slide 51

And also on Windows

Slide 52

Slide 52

Browser support is good and getting better:

Safari > 10.1, iOS Safari > 10.3, Firefox > 63, Chrome > 74

Slide 53

Slide 53

CSS @media (prefers-reduced-motion: reduce) { /*” alternative behaviour */$ }

Slide 54

Slide 54

JS let motionQuery = matchMedia(‘(prefers-reducedmotion)’); const handleReduceMotionChanged = () =>& { if (motionQuery.matches) //reduced behaviour; } motionQuery.addListener(handleReduceMotionChanged); handleReduceMotionChanged();

Slide 55

Slide 55

“The prefers-reduced-motion media feature is used to detect if the user has requested the system minimize the amount of animation or motion it uses.” no-preference (false) | reduce (true)

Slide 56

Slide 56

Hey… Browsers?

Slide 57

Slide 57

Respecting Reduced Motion

Slide 58

Slide 58

reduce != remove

Slide 59

Slide 59

Slide 60

Slide 60

Slide 61

Slide 61

@media (prefers-reduced-motion: reduce) { * { animation: 0s !important; transition: 0s !important; } }

Slide 62

Slide 62

Reduce where needed

Slide 63

Slide 64

Slide 64

Slide 65

Slide 65

.thing { … transform: translateX(-100%); transition: transform 500ms cubic-bezier(0.645, 0.045, 0.355, 1); } @media (prefers-reduced-motion) { .thing { opacity: 0; transition: opacity 500ms cubic-bezier(0.645, 0.045, 0.355, 1); } }

Slide 66

Slide 67

Slide 67

Starting state .plant1 { transform: translateY(-100%); transition: $dur $ease-both; } .plant2 { transform: translateY(120%); transition: $dur $dur/6 $ease-both; } .plant3 { transform: translateY(-100%); transition: $dur $dur/3 $ease-both; }

Slide 68

Slide 68

Starting state .plant1 { transform: translateY(-100%); transition: $dur $ease-both; } .plant2 { transform: translateY(120%); transition: $dur $dur/6 $ease-both; } .plant3 { transform: translateY(-100%); transition: $dur $dur/3 $ease-both; } Ending state All the plants { transform: translateY(0); opacity:1; }

Slide 69

Slide 69

Reduced motion @media (prefers-reduced-motion: reduce) { .title span:nth-of-type(1), .title span:nth-of-type(1) { transform: translateX(0); opacity:0; } .plant1, .plant2, .plant3 { transform: translateY(0); opacity:0; } }

Slide 70

Slide 71

Slide 72

Slide 72

JavaScript let scroll = new SmoothScroll(‘a[href*=”#”]’), motionQuery = matchMedia(‘(prefers-reduced-motion)’); const handleReduceMotionChanged = () =>& { if (motionQuery.matches) scroll.destroy(); } motionQuery.addListener(handleReduceMotionChanged); handleReduceMotionChanged();

Slide 73

Slide 74

Slide 74

Alexa Top 10 Google Yahoo Youtube Linkedin Facebook Instagram Amazon Wikipedia Reddit Twitter

Slide 75

Slide 75

Don’t forget the videos and .gifs

Slide 76

Slide 76

Projects with more extensive motion

Slide 77

Slide 78

Slide 78

codepen.io/marcysutton/pen/yqVVeY?editors=0010

Slide 79

Slide 79

So I hope this has all helped you to show how we can be creative with motion, even really really creative, while still being inclusive

By keeping an eye out for potentially triggering motion and mitigating them with the reduced motion query or even a custom toggle, you can expand the audience of who can meaningfully participate in the projects you make.

Slide 80

Slide 80

Thank you! Newsletter: uianimationnewsletter.com Let’s chat on twitter: @vlh