MDC-101 Web: Principes de base de Material Components (MDC) (Web)

1. Introduction

logo_components_color_2x_web_96dp.png

Material Components (MDC) aide les développeurs à implémenter Material Design. Conçu par une équipe d'ingénieurs et de spécialistes de l'expérience utilisateur chez Google, MDC propose des dizaines de composants d'interface utilisateur élégants et fonctionnels. Il est disponible pour Android, iOS, le Web et Flutter.material.io/develop.

Que sont Material Design et Material Components pour le Web ?

Material Design est un système permettant de créer des produits numériques audacieux et esthétiques. Les équipes produit peuvent ainsi réaliser leurs meilleurs graphismes en combinant style, branding, interactions et animations selon des principes communs et des composants harmonieux.

Pour le Web mobile et pour ordinateur, Material Components Web (MDC Web) allie la conception et l'ingénierie à une bibliothèque de composants pour assurer la cohérence entre les applications et les sites Web. Les composants Web de MDC se trouvent chacun dans leurs propres modules de nœud. Par conséquent, à mesure que le système Material Design évolue, ces composants peuvent être facilement mis à jour pour garantir une implémentation homogène au pixel près et le respect des normes de développement front-end de Google. MDC est également disponible pour Android, iOS et Flutter.

Dans cet atelier de programmation, vous allez créer une page de connexion à l'aide de plusieurs composants de MDC Web.

Objectifs de l'atelier

Cet atelier de programmation est le premier d'une série de trois qui vous aideront à créer une application appelée Shrine, un site Web d'e-commerce qui vend des vêtements et des articles pour la maison. Il vous montrera comment personnaliser les composants pour représenter une marque ou un style à l'aide de MDC Web.

Dans cet atelier de programmation, vous créerez une page de connexion pour Shrine contenant :

  • Deux champs de texte, un pour le nom d'utilisateur et l'autre pour un mot de passe
  • Deux boutons, un pour "Annuler" et une pour "Suivant"
  • Nom du site Web (Shrine)
  • Image du logo Shrine

674d1ca8cfa98c9.png

Composants Web de MDC dans cet atelier de programmation

  • Champ de texte
  • Bouton
  • Ondulation

Prérequis

  • Une version récente de Node.js (fournie avec npm, un gestionnaire de packages JavaScript)
  • L'exemple de code (à télécharger à l'étape suivante)
  • Connaissances de base de HTML, CSS et JavaScript

Nous cherchons constamment à améliorer nos tutoriels. Comment évalueriez-vous votre niveau d'expérience en développement Web ?

<ph type="x-smartling-placeholder"></ph> Débutant Intermédiaire Expert
.

2. Configurer l'environnement de développement

Télécharger l'application de départ de l'atelier de programmation

Elle se trouve dans le répertoire material-components-web-codelabs-master/mdc-101/starter. Assurez-vous d'accéder à ce répertoire avec la commande cd avant de commencer.

… ou cloner l'atelier depuis GitHub

Pour cloner cet atelier de programmation à partir de GitHub, exécutez les commandes suivantes :

git clone https://github.com/material-components/material-components-web-codelabs
cd material-components-web-codelabs/mdc-101/starter

Installer les dépendances du projet

À partir du répertoire de démarrage, exécutez la commande suivante:

npm install

Vous verrez de nombreuses activités et, à la fin, votre terminal devrait indiquer une installation réussie:

204c063d8fd78f94.png

Si ce n'est pas le cas, exécutez npm audit fix.

Exécuter l'application de départ

Dans le même répertoire, exécutez la commande suivante:

npm start

webpack-dev-server va démarrer. Saisissez l'adresse http://localhost:8080/ dans votre navigateur pour afficher la page.

17c139dc5a9bebaf.png

Opération réussie. Le code de démarrage de la page de connexion de Shrine doit s'exécuter dans votre navigateur. Vous devriez voir le nom "Shrine". et le logo Shrine juste en dessous.

f7e3f354df8d84b8.png

Consulter le code

Métadonnées dans index.html

Dans le répertoire de démarrage, ouvrez index.html avec l'éditeur de code de votre choix. Il doit contenir les éléments suivants :

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  <title>Shrine (MDC Web Example App)</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" sizes="192x192" href="https://material.io/static/images/simple-lp/favicons/components-192x192.png">
  <link rel="shortcut icon" href="https://material.io/static/images/simple-lp/favicons/components-72x72.png">

  <link rel="stylesheet"
        href="https://cdnjs.cloudflare.com/ajax/libs/normalize/6.0.0/normalize.min.css">
  <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700" rel="stylesheet">
  <link rel="stylesheet" href="bundle-login.css">
</head>
<body class="shrine-login">
  <section class="header">
    <svg class="shrine-logo" ...>
      ...
    </svg>
    <h1>SHRINE</h1>
  </section>

  <form action="home.html">
  </form>

  <script src="bundle-login.js" async></script>
</body>
</html>

Ici, une balise <link> permet de charger le fichier bundle-login.css généré par webpack, et une balise <script> inclut le fichier bundle-login.js. Nous incluons également le fichier normalize.css pour un rendu cohérent entre les navigateurs, ainsi que la police Roboto de Google Fonts.

Styles personnalisés dans login.scss

Les composants Web MDC sont stylisés à l'aide de classes CSS mdc-*, comme la classe mdc-text-field. (MDC Web traite sa structure DOM comme faisant partie de son API publique.)

En général, nous vous recommandons d'apporter des modifications de style personnalisées aux composants à l'aide de vos propres classes. Vous avez peut-être remarqué certaines classes CSS personnalisées dans le code HTML ci-dessus, telles que shrine-logo. Ces styles sont définis dans login.scss pour ajouter des styles de base à la page.

Ouvrez login.scss. La page de connexion affiche les styles suivants:

@import "./common";

.header {
  text-align: center;
}

.shrine-logo {
  width: 150px;
  height: 150px;
  padding-top: 80px;
  fill: currentColor;
}

Maintenant que vous connaissez le code de démarrage, vous pouvez implémenter notre premier composant.

3. Ajouter des champs de texte

Pour commencer, nous allons ajouter deux champs de texte à notre page de connexion, dans lesquels les utilisateurs pourront saisir leur nom d'utilisateur et leur mot de passe. Nous allons utiliser le composant de champ de texte MDC, qui inclut une fonctionnalité intégrée permettant d'afficher un libellé flottant et d'activer une ondulation tactile.

9ad8a7db0b50f07d.png

Installez le champ de texte MDC.

Les composants Web MDC sont publiés via des packages NPM. Pour installer le package du composant de champ de texte, exécutez la commande suivante:

npm install @material/textfield@^6.0.0

Ajouter le code HTML

Dans index.html, ajoutez le code suivant dans l'élément <form> du corps:

<label class="mdc-text-field mdc-text-field--filled username">
  <span class="mdc-text-field__ripple"></span>
  <input type="text" class="mdc-text-field__input" aria-labelledby="username-label" name="username">
  <span class="mdc-floating-label" id="username-label">Username</span>
  <span class="mdc-line-ripple"></span>
</label>
<label class="mdc-text-field mdc-text-field--filled password">
  <span class="mdc-text-field__ripple"></span>
  <input type="password" class="mdc-text-field__input" aria-labelledby="password-label" name="password">
  <span class="mdc-floating-label" id="password-label">Password</span>
  <span class="mdc-line-ripple"></span>
</label>

La structure DOM des champs de texte MDC se compose de plusieurs parties:

  • L'élément principal, mdc-text-field
  • Sous-éléments mdc-text-field__ripple, mdc-text-field__input, mdc-floating-label et mdc-line-ripple

Ajouter le CSS

Dans login.scss, ajoutez l'instruction d'importation suivante après l'importation existante:

@import "@material/textfield/mdc-text-field";

Dans le même fichier, ajoutez les styles suivants pour aligner et centrer les champs de texte:

.username,
.password {
  display: flex;
  margin: 20px auto;
  width: 300px;
}

Ajouter le code JavaScript

Ouvrez login.js, qui est actuellement vide. Ajoutez le code suivant pour importer et instancier les champs de texte:

import {MDCTextField} from '@material/textfield';

const username = new MDCTextField(document.querySelector('.username'));
const password = new MDCTextField(document.querySelector('.password'));

Ajouter la validation HTML5

Les champs de texte indiquent si l'entrée du champ est valide ou contient une erreur à l'aide des attributs fournis par l'API de validation des formulaires HTML5.

Vous saurez :

  • Ajoutez l'attribut required aux éléments mdc-text-field__input des champs de texte Username (Nom d'utilisateur) et Password (Mot de passe).
  • Définissez l'attribut minlength de l'élément mdc-text-field__input du champ de texte Password (Mot de passe) sur "8".

Ajustez les deux éléments <label class="mdc-text-field mdc-text-field--filled"> pour qu'ils se présentent comme suit:

<label class="mdc-text-field mdc-text-field--filled username">
  <span class="mdc-text-field__ripple"></span>
  <input type="text" class="mdc-text-field__input" aria-labelledby="username-label" name="username" required>
  <span class="mdc-floating-label" id="username-label">Username</span>
  <span class="mdc-line-ripple"></span>
</label>
<label class="mdc-text-field mdc-text-field--filled password">
  <span class="mdc-text-field__ripple"></span>
  <input type="password" class="mdc-text-field__input" aria-labelledby="password-label" name="password" required minlength="8">
  <span class="mdc-floating-label" id="password-label">Password</span>
  <span class="mdc-line-ripple"></span>
</label>

Actualisez la page http://localhost:8080/. Une page s'affiche alors avec deux champs de texte, pour le nom d'utilisateur et le mot de passe.

Cliquez sur les champs de texte pour voir l'animation du libellé flottant et l'animation d'ondulation de ligne (la ligne de bordure inférieure qui ondule):

c0b341e9949a6183.gif

4. Ajouter des boutons

Nous allons ensuite ajouter deux boutons sur notre page de connexion : "Cancel" (Annuler) et "Next" (Suivant). Nous allons utiliser le composant MDC Button ainsi que le composant MDC Ripple pour compléter l'effet d'ondulation d'encre emblématique de Material Design.

674d1ca8cfa98c9.png

Installer le bouton MDC

Pour installer le package du composant Bouton, exécutez la commande suivante:

npm install @material/button@^6.0.0

Ajouter le code HTML

Dans index.html, ajoutez le code suivant sous la balise de fermeture de l'élément <label class="mdc-text-field mdc-text-field--filled password">:

<div class="button-container">
  <button type="button" class="mdc-button cancel">
    <div class="mdc-button__ripple"></div>
    <span class="mdc-button__label">
      Cancel
    </span>
  </button>
  <button class="mdc-button mdc-button--raised next">
    <div class="mdc-button__ripple"></div>
    <span class="mdc-button__label">
      Next
    </span>
  </button>
</div>

Pour l'option "Cancel" (Annuler) nous utilisons le style de bouton par défaut. Toutefois, l'étape "Suivant" utilise une variante de style en relief, comme l'indique la classe mdc-button--raised.

Pour les aligner facilement par la suite, nous encapsulons les deux éléments mdc-button dans un élément <div>.

Ajouter le CSS

Dans login.scss, ajoutez l'instruction d'importation suivante après les importations existantes:

@import "@material/button/mdc-button";

Pour aligner les boutons et ajouter une marge autour d'eux, ajoutez les styles suivants à login.scss:

.button-container {
  display: flex;
  justify-content: flex-end;
  width: 300px;
  margin: auto;
}

.button-container button {
  margin: 3px;
}

Ajouter une ondulation d'encre aux boutons

Lorsque l'utilisateur touche ou clique sur un bouton, il doit afficher des commentaires sous la forme d'une ondulation d'encre. Le composant d'ondulation d'encre nécessite JavaScript, que nous allons donc ajouter à la page.

Pour installer le package du composant d'ondulation, exécutez la commande suivante:

npm install @material/ripple@^6.0.0

En haut de login.js, ajoutez l'instruction d'importation suivante:

import {MDCRipple} from '@material/ripple';

Pour instancier les ondulations, ajoutez le code suivant à login.js:

new MDCRipple(document.querySelector('.cancel'));
new MDCRipple(document.querySelector('.next'));

Comme nous n'avons pas besoin de conserver une référence à l'instance d'ondulation, il n'est pas nécessaire de l'attribuer à une variable.

Et voilà ! Actualisez la page. Une ondulation d'encre s'affiche lorsque vous cliquez sur chaque bouton.

bb19b0a567977bde.gif

Renseignez les champs de texte avec des valeurs valides, puis cliquez sur "SUIVANT". . Bravo ! Vous allez continuer à travailler sur cette page dans MDC-102.

5. Récapitulatif

Grâce au balisage HTML simplifié et à seulement quelques lignes de CSS et JavaScript, les composants Material pour la bibliothèque Web vous ont permis de créer une page de connexion esthétique conforme aux consignes Material Design, et présentant une apparence et un comportement cohérents sur tous les appareils.

Étapes suivantes

Le champ de texte, le bouton et l'ondulation sont trois composants principaux de la bibliothèque Web MDC, mais il en existe beaucoup d'autres. Vous pouvez également découvrir les autres composants de MDC Web.

Vous pouvez accéder à MDC-102: Structure et mise en page Material Design pour en savoir plus sur le panneau de navigation et la liste d'images. Merci d'avoir essayé Material Components. Nous espérons que cet atelier de programmation vous a plu.

La réalisation de cet atelier de programmation m'a demandé un temps et des efforts raisonnables

Tout à fait d'accord D'accord Ni d'accord, ni pas d'accord Pas d'accord Pas du tout d'accord

Je souhaite continuer à utiliser Material Components

<ph type="x-smartling-placeholder"></ph> Tout à fait d'accord D'accord Sans opinion Pas d'accord Pas du tout d'accord
.