Comment ils l'ont fait StarWars.com

Si vous n'avez pas encore regardé Star Wars, dès que vous aurez terminé cet article, allez le regarder. Tout. (Assurez-vous de revenir et dites-nous si vous préférez IV-VI ou I-III.)

Si vous avoir vu Star Wars, vous êtes peut-être un peu au courant des dernières nouvelles concernant la série de films. J.J. Abrams (producteur de Perdu et, plus récemment, la dernière série Star Trek) est en train d’écrire et de produire le suivant Star Wars, Episode VII, à paraître en 2015. De plus, Lucasfilm, le home studio de Star Wars, a été acheté par Disney.

Outre les nouvelles de la saga Star Wars, StarWars.com a été relooké par Bobby Solomon et l'équipe interactive de Disney. Ce site contient beaucoup de beaux détails, mais nous allons nous concentrer sur quelques détails qui nous distinguent..

L'en-tête

L'en-tête du site Star Wars est un exemple d'interaction très simple qui a une signification beaucoup plus riche que l'exécution esthétique. Plus précisément, l'interaction reflète la séquence de titre d'ouverture de tous les films Star Wars. Lorsque vous faites défiler, le logo semble s’éloigner de vous et disparaître progressivement. Ce simple détail est esthétiquement attrayant et constitue un élément déclencheur culturel immédiat pour les fans du film..

Aller… Aller… Disparu.

Voici comment ils l'ont fait.

Tout d’abord, la barre d’image en-tête et tous les éléments qu’elle contient sont en réalité définis position: fixe. Une technique très simple est utilisée pour obtenir l’effet de parallaxe à l’arrière-plan et la taille du logo. Nous allons démontrer avec un exemple simplifié.

<   

Dans ce cas, nous utiliserions le CSS suivant.

header position: fixed; largeur: 100%; hauteur: auto; couleur de fond: # 000;  .nav-inner hauteur-maximale: 300px; hauteur: 300px; position: relative;  .nav-wrapper max-width: 1400px; hauteur maximale: 300px; marge: 0 auto; rembourrage: 1,5%; -webkit-box-dimensionnement: border-box; -moz-box-dimensionnement: border-box; taille de la boîte: boîte-frontière; position: relative; hauteur: hériter;  .nav-push margin-top: -65px; position: relative;  .bg display: block; position: absolue; en haut: 0; à gauche: 50%; largeur: 1600px; hauteur: 100%; z-index: -1; position de fond: centre; background-image: url (http://cdnvideo.dolimg.com/cdn_assets/82be7f552af3b9573427bcee1360b3c43d7fd5c8.jpg); taille du fond: couverture; transformer: translate3d (0, 0, 0); transformer: translateX (-50%);  .logo display: block; en haut: 50%; largeur: 100%; largeur maximale: 350px; hauteur: 100%; hauteur maximale: 130px; marge: -65px auto 0; taille de la boîte: boîte-frontière; background-image: url (// a.dilcdn.com/sw/navigation/sw_logo_stacked-92b3dc5967ed.png); taille du fond: contenir; position de fond: centre; répétition de fond: non répétée; position: relative;  main position: relative; en haut: 300 pixels; hauteur: 600px; couleur de fond: # 000; 

Le logo est centré verticalement selon cette méthode.

Maintenant, voici le truc. Lorsque l'utilisateur fait défiler, nous allons changer la hauteur de .nav-inner, ainsi que l'opacité de .nav-inner. Cela entraînera une réduction du logo et la hauteur de l'en-tête sera déterminée par la hauteur de ses éléments contenus..

Nous pouvons y arriver en utilisant un simple méthode de scroll scroll.

Remarque: jQuery est utilisé dans cet exemple.

var latestKnownScrollY = 0, en cochant = false, $ w = $ (fenêtre), $ navInner = $ (". nav-inner"); fonction onScroll () latestKnownScrollY = $ w.scrollTop (); console.log (latestKnownScrollY); requestTick ();  $ w.on ('scroll', onScroll); function requestTick () if (! ticking) requestAnimationFrame (update);  ticking = true;  function update () ticking = false; var currentScrollY = latestKnownScrollY; $ navInner.css (hauteur: 300 - currentScrollY, opacité: (300 - currentScrollY) / 300);  requestTick ();

Ce code JavaScript, associé au code CSS ci-dessus, permet d'obtenir l'effet de défilement de l'en-tête, sans avoir à recourir à une manipulation intensive du DOM, ce qui le rend un peu plus performant..

Jetez un coup d'oeil à la démo finale.

Détails de l'icône

La navigation de bureau est relativement simple, nous ne parlerons donc pas des détails de la mise en œuvre. Mais regardons ce qui rend cette navigation efficace: les icônes.

Une section de l'icône de la (rétine) spritesheet

Les icônes sont encore une fois une autre fonctionnalité conçue pour parler directement aux fans de Star Wars. Par exemple, pour l'icône "Films", au lieu de choisir une caméra ou une bande, le concepteur a choisi une icône représentant le texte défilant qui apparaît au début de chaque film Star Wars. Pour l'icône de la communauté, au lieu de montrer le contour de deux personnes, ils ont choisi de montrer un casque Storm Trooper. La pertinence de chaque élément de navigation est renforcée par ces décisions pour les fans de Star Wars, et l'expérience n'est pas diluée pour les nouveaux venus..

Une autre icône importante à signaler est le bouton "Rechercher". Bien que cela puisse sembler être une loupe (une icône de recherche courante), il s'agit également d'une version simplifiée à l'extrême d'une Death Star, l'un des éléments les plus importants du film.. 

Cela soulève un point très important à propos de toutes les icônes du site: en règle générale, le concepteur a choisi de conserver les informations et formes de base connues, telles qu'une loupe ou le contour d'une personne, mais d'ajouter des éléments à ces formes de base. qui ont une signification pour ceux qui les comprennent. Cela procure un sentiment d’amusement et un véritable sens de l’intégrité thématique sur l’ensemble du site..

Icône de menu sabre laser

Nous allons plonger un peu plus loin dans ce qui est devenu l’une des parties les plus parlées de ce site: la navigation au sabre laser..

Aux points d'arrêt inférieurs, la navigation est accessible via un bouton situé en haut à gauche de la fenêtre du navigateur. Au début, cela peut ressembler à un bouton de menu normal, mais une fois que vous avez cliqué dessus, les lignes se transforment en forme de X et ressemblent à deux sabres laser..

Tout cela est fait en utilisant des techniques CSS simples et un petit peu de JavaScript. Voici le balisage du menu:

Les travées avec le bar la classe deviennent les sabres laser. Voici une reconstitution du CSS utilisé pour accomplir les effets:

# nav-tiroir-toggle border-right: 1px solid # 333333; largeur: 60px; hauteur: 60px; curseur: pointeur; position: fixe; en haut: 0; à gauche: 50%; marge gauche: -30px;  .toggle-icon display: block; position: relative; en haut: 50%; largeur: 100%; marge: -22px auto 0 2px; -webkit-transition: marge 600ms; -moz-transition: marge 600ms; transition: marge 600ms;  .bar display: block; largeur: 38px; hauteur: 2px; marge: 9px; border-right: 28px solid #fff; border-left: 6px solid # d6d6d6; -webkit-box-dimensionnement: border-box; -moz-box-dimensionnement: border-box; taille de la boîte: boîte-frontière; -webkit-transition-property: -webkit-transform, margin, border-right-color, box-shadow; -moz-transition-property: -moz-transform, margin, border-right-color, box-shadow; propriété de transition: transform, margin, border-right-color, box-shadow; -webkit-transition-duration: 600ms; -moz-transition-duration: 600ms; durée de transition: 600ms;  .bar: nth-de-type (2n) -webkit-transform: rotation (-180deg); -moz-transform: rotation (-180deg); -ms-transform: rotation (-180deg); -o-transformer: rotation (-180deg); transformer: faire pivoter (-180deg);  / * Etats basculés * / .toggled .toggle-icon margin: -32px 0 0 7px;  .toggled .toggle-icon .bar: nth de type (3) margin-left: 5px; -webkit-transform: rotation (-42deg); -moz-transform: rotation (-42deg); -ms-transform: rotation (-42deg); -o-transformer: faire pivoter (-42deg); transformer: faire pivoter (-42deg);  .toggled .toggle-icon .bar: nth de type (2) margin-left: 14px; -webkit-transform: rotation (-137deg) translateY (-15px); -moz-transform: rotation (-137deg) translateY (-15px); -ms-transform: rotation (-137deg) translateY (-15px); -o-transformer: faire pivoter (-137deg) translateY (-15px); transformer: faire pivoter (-137deg) translateY (-15px);  .toggled .toggle-icon .bar: nième de type (1) opacité: 0;  / * Lightsaber glow * / # nav-tiroir-toggle.toggled: survol .bar: n-de-type (3) border-right-color: # ddf1da; boîte-ombre: 4px 0 6px 1px rgba (83,228,68,0,65);  # nav-tiroir-toggle.toggled: survol .bar: nième de type (2) border-right-color: # e9b8b9; boîte-ombre: 4px 0 6px 1px rgba (205,40,44,0,75); 

Enfin, un peu de JavaScript qui bascule l’état de navigation:

(function () $ ("# nav-tiroir-toggle"). on ("clic", fonction () $ (this) .toggleClass ("toggled");); ());

Remarque: une partie du code ci-dessus a été prise directement sur StarWars.com, tandis que d'autres ont été recréées pour obtenir le même effet.

Jetez un coup d'oeil à la démo finale.

Bien qu’il s’agisse d’une technique apparemment simple, elle s'adresse au public de manière beaucoup plus nuancée et plus riche qu’un simple «X» ou un hamburger..

La page 404

Les concepteurs de StarWars.com ont réfléchi à de nombreux détails apparemment mineurs dans leur processus de conception. Je voudrais souligner dans cet article la page 404.

En tant que développeurs ou concepteurs Web, nous avons souvent oublié les 404 pages, car nous pouvons facilement les considérer comme des "cas extrêmes". Nous semblons les oublier car ils ne sont pas ce qui est censé arriver, Nous ne concevons donc pas beaucoup pour eux. Cependant, 404 pages méritent beaucoup plus d'attention qu'on pourrait le penser. Les utilisateurs atteignent 404 pages lorsqu'ils tentent d'accéder à du contenu qui n'est plus disponible, ou qui est peut-être lié ou mal saisi. Ce moment de l'expérience utilisateur devrait être exploré beaucoup plus intentionnellement.

Lorsqu'un utilisateur n'arrive pas à une page qu'il tente d'atteindre, cela peut être très frustrant et amener l'utilisateur à quitter immédiatement. Toutefois, si le design de la page 404 est tel qu'il aide l'utilisateur et le ravit dans une certaine mesure, son attention peut être retenue. Dans le cas de StarWars.com, lorsqu'un utilisateur visite une mauvaise adresse (telle que http://www.starwars.com/nowhere), il est présenté avec un "404" graphique, avec une étoile de la mort incomplète se tenant à la place de le zéro et le message "Cette page n'est pas complètement armée et opérationnelle. Essayez autre chose?"

Cette page est efficace pour deux raisons. Premièrement, il parle directement aux fans de Star Wars; pour la majeure partie de la série de films, l’Étoile noire ressemble à celle de la page 404 et est en cours de construction. Quand il est enfin terminé dans la finale des six films, l’empereur dit à Luke: 

Maintenant, observez la puissance de feu de cette armé et opérationnel poste de combat!

C'est un point central de la série de films. Les concepteurs de StarWars.com savaient que tout fan venant sur le site et atteignant la page 404 se souviendrait probablement de ce moment dans le film, et au lieu de se concentrer sur la frustration de ne pas atteindre ce qu'ils cherchaient, ils pourraient être ravis ou distraits. par la mémoire du film.

Bien que cela semble être une occasion manquée d'utiliser la fameuse citation "Ce ne sont pas les droïdes que vous cherchez", l'omniprésence de Star Wars a conduit à de nombreuses pages 404 qui utilisent déjà ce thème, y compris des sites populaires tels que GitHub..

GitHub est arrivé le premier

Conclusion

Cela met fin à notre enquête sur le nouveau StarWars.com. Y a-t-il des morceaux intéressants du site que vous avez découverts? Peut-être êtes-vous intéressé à lire un article "Comment ils l'ont fait" sur un autre site? Dites le nous dans les commentaires!