Material Components (MDC) aiuta gli sviluppatori a implementare Material Design. Creato da un team di ingegneri e progettisti UX di Google, MDC include decine di componenti UI belli e funzionali ed è disponibile per Android, iOS, web e Flutter. material.io/develop |
Che cosa sono Material Design e i componenti Material per il web?
Material Design è un sistema per creare prodotti digitali audaci e accattivanti. Unendo stile, branding, interazione e movimento in un insieme coerente di principi e componenti, i team di prodotto possono realizzare il loro massimo potenziale di progettazione.
Per il web mobile e il computer, Material Components Web (MDC Web) unisce progettazione e ingegneria con una libreria di componenti per creare coerenza tra app e siti web. I componenti MDC Web risiedono ciascuno nei propri moduli dei nodi, quindi, man mano che il sistema Material Design si evolve, questi componenti possono essere facilmente aggiornati per garantire un'implementazione coerente e perfetta a livello di pixel e il rispetto degli standard di sviluppo front-end di Google. MDC è disponibile anche per Android, iOS e Flutter.
In questo codelab, creerai una pagina di accesso utilizzando diversi componenti di MDC Web.
Cosa creerai
Questo codelab è il primo di tre che ti guideranno nella creazione di un'app chiamata Shrine, un sito web di e-commerce che vende abbigliamento e articoli per la casa. Verrà illustrato come personalizzare i componenti per riflettere qualsiasi brand o stile utilizzando MDC Web.
In questo codelab creerai una pagina di accesso per Shrine che contiene:
- Due campi di testo, uno per inserire un nome utente e l'altro per una password
- Due pulsanti: uno per "Annulla" e uno per "Avanti".
- Il nome del sito web (Shrine)
- Un'immagine del logo di Shrine
Componenti web MDC in questo codelab
- Campo di testo
- Pulsante
- Onde
Che cosa ti serve
- Una versione recente di Node.js (fornita in bundle con npm, un gestore di pacchetti JavaScript).
- Il codice di esempio (da scaricare nel passaggio successivo)
- Conoscenza di base di HTML, CSS e JavaScript
Cerchiamo sempre di migliorare i nostri tutorial. Come valuteresti il tuo livello di esperienza nello sviluppo web?
Scarica l'app codelab iniziale
L'app iniziale si trova nella directory material-components-web-codelabs-master/mdc-101/starter
. Assicurati di cd
in questa directory prima di iniziare.
… oppure clonalo da GitHub
Per clonare questo codelab da GitHub, esegui i seguenti comandi:
git clone https://github.com/material-components/material-components-web-codelabs cd material-components-web-codelabs/mdc-101/starter
Installa le dipendenze del progetto
Dalla directory iniziale, esegui:
npm install
Vedrai molte attività e, alla fine, il terminale dovrebbe mostrare un'installazione riuscita:
In caso contrario, esegui npm audit fix
.
Eseguire l'app iniziale
Nella stessa directory, esegui:
npm start
webpack-dev-server
inizierà. Punta il browser su http://localhost:8080/ per visualizzare la pagina.
Operazione riuscita. Il codice iniziale per la pagina di accesso di Shrine dovrebbe essere in esecuzione nel browser. Dovresti vedere il nome "Shrine" e il logo di Shrine appena sotto.
Dai un'occhiata al codice
Metadati in index.html
Nella directory iniziale, apri index.html
con il tuo editor di codice preferito. Deve contenere:
<!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>
Qui, un tag <link>
viene utilizzato per caricare il file bundle-login.css
generato da webpack e un tag <script>
include il file bundle-login.js
. Inoltre, includiamo normalize.css per un rendering coerente tra i browser, nonché il carattere Roboto di Google Fonts.
Stili personalizzati in login.scss
I componenti web MDC sono stilizzati utilizzando classi CSS mdc-*
, ad esempio la classe mdc-text-field
. MDC Web considera la sua struttura DOM come parte della sua API pubblica.
In generale, ti consigliamo di apportare modifiche allo stile personalizzato dei componenti utilizzando le tue classi. Potresti aver notato alcune classi CSS personalizzate nel codice HTML riportato sopra, ad esempio shrine-logo
. Questi stili sono definiti in login.scss
per aggiungere stili di base alla pagina.
Apri login.scss
e vedrai i seguenti stili per la pagina di accesso:
@import "./common";
.header {
text-align: center;
}
.shrine-logo {
width: 150px;
height: 150px;
padding-top: 80px;
fill: currentColor;
}
Ora che hai familiarità con il codice iniziale, implementiamo il nostro primo componente.
Per iniziare, aggiungeremo due campi di testo alla nostra pagina di accesso, in cui gli utenti potranno inserire il proprio nome utente e la propria password. Utilizzeremo il componente Campo di testo MDC, che include funzionalità integrate che mostrano un'etichetta mobile e attivano un'increspatura al tocco.
Installa il campo di testo MDC
I componenti web MDC vengono pubblicati tramite pacchetti NPM. Per installare il pacchetto per il componente Campo di testo, esegui:
npm install @material/textfield
Aggiungere il codice HTML
In index.html
, aggiungi quanto segue all'interno dell'elemento <form>
nel corpo:
<div class="mdc-text-field username">
<input type="text" class="mdc-text-field__input" id="username-input" name="username">
<label class="mdc-floating-label" for="username-input">Username</label>
<div class="mdc-line-ripple"></div>
</div>
<div class="mdc-text-field password">
<input type="password" class="mdc-text-field__input" id="password-input" name="password">
<label class="mdc-floating-label" for="password-input">Password</label>
<div class="mdc-line-ripple"></div>
</div>
La struttura DOM del campo di testo MDC è composta da diverse parti:
- L'elemento principale,
mdc-text-field
- Elementi secondari
mdc-text-field__input
,mdc-floating-label
emdc-line-ripple
Aggiungere il CSS
In login.scss
, aggiungi la seguente istruzione di importazione dopo quella esistente:
@import "@material/textfield/mdc-text-field";
Nello stesso file, aggiungi i seguenti stili per allineare e centrare i campi di testo:
.username,
.password {
display: block;
width: 300px;
margin: 20px auto;
}
Aggiungere JavaScript
Apri login.js
, che al momento è vuoto. Aggiungi il seguente codice per importare e creare un'istanza dei campi di testo:
import {MDCTextField} from '@material/textfield';
const username = new MDCTextField(document.querySelector('.username'));
const password = new MDCTextField(document.querySelector('.password'));
Aggiungere la convalida HTML5
I campi di testo indicano se l'input del campo è valido o contiene un errore, utilizzando gli attributi forniti dall'API di convalida dei moduli di HTML5.
Al termine del corso dovreste essere in grado di:
- Aggiungi l'attributo
required
agli elementimdc-text-field__input
dei campi di testo Nome utente e Password. - Imposta l'attributo
minlength
dell'elementomdc-text-field__input
del campo di testo Password su"8"
Modifica i due elementi <div class="mdc-text-field">
in modo che abbiano questo aspetto:
<div class="mdc-text-field username">
<input type="text" class="mdc-text-field__input" id="username-input" name="username" required>
<label class="mdc-floating-label" for="username-input">Username</label>
<div class="mdc-line-ripple"></div>
</div>
<div class="mdc-text-field password">
<input type="password" class="mdc-text-field__input" id="password-input" name="password" required minlength="8">
<label class="mdc-floating-label" for="password-input">Password</label>
<div class="mdc-line-ripple"></div>
</div>
Aggiorna la pagina all'indirizzo http://localhost:8080/. A questo punto dovresti visualizzare una pagina con due campi di testo per nome utente e password.
Fai clic sui campi di testo per visualizzare l'animazione dell'etichetta mobile e l'animazione dell'increspatura della linea (il bordo inferiore che si increspa verso l'esterno):
A questo punto, aggiungiamo due pulsanti alla nostra pagina di accesso: "Annulla" e "Avanti". Utilizzeremo il componente Pulsante MDC, insieme al componente Ripple MDC, per completare l'iconico effetto increspatura dell'inchiostro di Material Design.
Installa pulsante MDC
Per installare il pacchetto per il componente pulsante, esegui:
npm install @material/button
Aggiungere il codice HTML
In index.html
, aggiungi quanto segue sotto il tag di chiusura dell'elemento <div class="mdc-text-field 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>
Per il pulsante "Annulla", utilizziamo lo stile predefinito. Tuttavia, il pulsante "Avanti" utilizza una variante di stile in rilievo, indicata dalla classe mdc-button--raised
.
Per allinearli facilmente in un secondo momento, racchiudiamo i due elementi mdc-button
in un elemento <div>
.
Aggiungere il CSS
In login.scss
, aggiungi la seguente istruzione di importazione dopo le importazioni esistenti:
@import "@material/button/mdc-button";
Per allineare i pulsanti e aggiungere un margine intorno, aggiungi i seguenti stili a login.scss
:
.button-container {
display: flex;
justify-content: flex-end;
width: 300px;
margin: auto;
}
.button-container button {
margin: 3px;
}
Aggiungere un effetto increspatura ai pulsanti
Quando l'utente tocca o fa clic su un pulsante, deve visualizzare un feedback sotto forma di increspatura di inchiostro. Il componente dell'effetto increspatura richiede JavaScript, quindi lo aggiungeremo alla pagina.
Per installare il pacchetto per il componente ripple, esegui:
npm install @material/ripple
Nella parte superiore di login.js
, aggiungi la seguente istruzione di importazione:
import {MDCRipple} from '@material/ripple';
Per creare le increspature, aggiungi quanto segue a login.js
:
new MDCRipple(document.querySelector('.cancel'));
new MDCRipple(document.querySelector('.next'));
Poiché non è necessario conservare un riferimento all'istanza ripple, non è necessario assegnarla a una variabile.
È tutto. Aggiorna la pagina. Quando fai clic su ogni pulsante, viene visualizzata un'increspatura di inchiostro.
Compila i campi di testo con valori validi e premi il pulsante "AVANTI". Ce l'hai fatta! Continuerai a lavorare su questa pagina in MDC-102.
Utilizzando il markup HTML di base e poche righe di CSS e JavaScript, la libreria Material Components for the web ti ha aiutato a creare una splendida pagina di accesso conforme alle linee guida di Material Design e con un aspetto e un comportamento coerenti su tutti i dispositivi.
Passaggi successivi
Campo di testo, Pulsante e Ripple sono tre componenti principali della libreria MDC Web, ma ce ne sono molti altri. Puoi anche esplorare il resto dei componenti in MDC Web.
Consulta la pagina MDC-102: Material Design Structure and Layout per scoprire di più sul menu di navigazione e sull'elenco di immagini. Grazie per aver provato Material Components. Ci auguriamo che questo codelab ti sia piaciuto.