Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Améliorer l'expérience utilisateur grâce aux animations CSS3

Stéphanie Walter
February 25, 2016

Améliorer l'expérience utilisateur grâce aux animations CSS3

À travers de cas concrets illustrés, nous verrons comment créer des animations performantes grâce à CSS3 (et un peu de JavaScript) qui vont, si utilisées à bon escient, améliorer grandement l’expérience de vos utilisateurs. Au programme : transitions de boutons et animations d'icônes en SVG, menu off-canvas full CSS, customisation de checkboxs et améliorer la visibilité et compréhension des erreurs de formulaires grâce à des animations.

Stéphanie Walter

February 25, 2016
Tweet

More Decks by Stéphanie Walter

Other Decks in Design

Transcript

  1. Designer web & mobile. Spécialisée en interface et expérience utilisateur.

    Je fais partie de ces gens qui considèrent le CSS comme un outil de design www.stephaniewalter.fr @WalterStephanie Disponible en freelance et chez Alsacréations
  2. Le bouton « save » de codepen s’anime si vous

    oubliez d’enregistrer. Attirer l’attention sur des moments critiques
  3. Avec une animation, c’est la machine qui fait ce travail

    e création des étapes intermédiaires. Laisser la machine faire le travail
  4. L’état :active des liens / boutons est la forme la

    plus simple de retour de l’interface pour l’utilisateur. Montrer la réactivité de l’interface via Codrops
  5. D’où vient cet élément ? Où a-t-il disparu ? Comment

    le faire réapparaitre ? Organiser l’espace de l’interface
  6. Animations @keyframes rainbow { 0% { color: darkorchid; } 30%

    { color: magenta; } 60% { color: orangered; } 100% { color: darkorchid; } } a { animation-name: rainbow; animation-duration: 3s; }
  7. Si vous avez besoin de préfixes … @-webkit-keyframes rainbow {

    ... -webkit-transform: … ; … } @keyframes rainbow { ... transform: … ; … }
  8. Transition de color au :hover button { border: 2px solid;

    color: rgb(255,255,255); } button:hover { color: rgb(255, 167, 15); }
  9. Transition de color au :hover button { border: 2px solid;

    color: rgb(255,255,255); transition-property: color; transition-duration: .3s; } button:hover { color: rgb(255, 167, 15); }
  10. Animer l’étoile avec le pseudo-element :after /* transition de pseudo

    élément*/ button:active:after { transform: scale(1.3); } button:after { transition: transform .3; } Pour animer un pseudo élément, l’ordre est important : pseudo classe PUIS pseudo élément.
  11. Animer du SVG inline /* colorer le SVG */ button

    .icon { fill: currentColor; }
  12. Animer du SVG inline /* colorer le SVG */ button

    .icon { fill: currentColor; } button:hover { color: rgb(255, 167, 15); } button { transition: color .3s; }
  13. Animer l’étoile @keyframes favorite { to { transform: scale(1.3); }

    } button.activated .icon { animation-name: favorite; animation-duration: .3s; animation-iteration-count: 1; }
  14. Jouer avec l’étoile et cubic-bezier button.activated .icon { animation-name: favorite;

    animation-duration: .3s; animation-iteration-count: 1; animation-fill-mode: forwards; animation-timing-function: cubic-bezier(.01, 1.93, 1, 1.6); }
  15. Masquer / afficher le menu /* masquer le menu */

    .menu { transform: translateX(-155px); }
  16. /* masquer le menu */ .menu { transform: translateX(-155px); }

    /* l’afficher au :hover */ .menu:hover { transform: translateX(0); } .menu { transition: transform .3s .25s; } Masquer / afficher le menu
  17. /* animer le contenu */ .menu:hover ~ .content { transform:

    translateX(155px); } Animer le menu sur un sélecteur adjacent .content, .menu{ transition: transform .3s .25s; }
  18. La fausse case à cocher /* Styler une fausse checkbox

    */ .checkbox + label:before { background: rgb(255, 255, 255); border: 1px solid rgb(216, 216, 216); }
  19. L’animation sur :checked /* une transition quand on coche */

    .checkbox:checked + label:before { background: rgb(0,158,186); border-color: rgb(4,126,147); } /* appliquer la transition */ .checkbox + label:before { transition: background .2s, border-color .2s; }
  20. Animer la coche /* la réduire quand elle n’est pas

    visible */ .checkbox:not(:checked) + label:after { transform: scale(0); } /* la rafficher quand on coche la case */ .checkbox:checked + label:after { transform: scale(1); } /* appliquer la transition */ .checkbox + label:after { transition: transform .4s; }
  21. /* créer l’animation */ @keyframes shakeMe { 0%, 100% {

    transform: translateX(0); } 20%, 60% { transform: translateX(-10px); } 40%, 80% { transform: translateX(10px); } } Secouer en cas d’erreur
  22. Secouer en cas d’erreur /* créer l’animation */ @keyframes shakeMe

    { … } /* appliquer l’ animation */ .errors { animation-name: shakeMe; animation-duration: .5s; }
  23. Animation animation-name: shakeIt ; animation-duration: 300ms ; animation-timing-function: ease ;

    animation-iteration-count: 1 ; animation-direction: normal ; animation-play-state: running ; animation-delay: 1.5s ; animation-fill-mode: none ; @keyframes shakeIt { 0% { … } 100% { … } } ➔ animation: shakeIt 300ms ease 1 normal running 1.5s none ;
  24. • :hover, :active, :focus • :checked, :invalid, :required, etc. •

    : target • click, focus, blur, submit, etc. • .nom-de-classe ➔ Créer l’animations en CSS, ajouter les classes pour la déclencher en. CSS JavaScript Déclencheurs
  25. Les propriétés que le navigateur peut animer de manière fluide.

    Opacity, transform & filter = ❤ learn more about animations properties performance
  26. 3 états d’une recherche avancée animée pour communiquer l’animation au

    développeur. Prototype papier dans les premières étapes du projet
  27. Utiliser un gif / une video pour communiquer et valider

    les animations avec le client / développeur. Le sacro saint Gif animé
  28. Tester ses animations dans un vrai navigateur avec des utilisateurs

    au début du projet. Le prototype HTML/CSS rapide
  29. Partagés sous licence Attribution - Pas d’Utilisation Commerciale - Pas

    de Modification 3.0 France Designer web & mobile. Spécialisée en interface et expérience utilisateur. www.stephaniewalter.fr @WalterStephanie inpx.it/css-animations-ux-confoo-2016
  30. • Animation and UX ressources by Rachel Nabors - @rachelnabors

    • Animation & UX ressources by Val Head - @vlh Crédits & Liens • Interface Animations - A workshop with Mark Geyer • Google Web Fundamentals on Animations • (Accadémique) Animation: From Cartoons to the User Interface by Bay-Wei Chang and David Ungar • (Accadémique) Animation Support in a User Interface Toolkit: Flexible, Robust, and Reusable Abstractions by Scott E. Hudson and John T. Stasko