Komponen Material (MDC) membantu developer menerapkan Desain Material. Dibuat oleh tim engineer dan desainer UX di Google, MDC memiliki banyak komponen UI yang indah dan fungsional serta tersedia untuk Android, iOS, web, dan Flutter. material.io/develop |
Apa yang dimaksud dengan Desain Material dan Komponen Material untuk Web?
Desain Material adalah sistem untuk mem-build produk digital yang menarik dan indah. Dengan menyatukan gaya, branding, interaksi, dan gerakan di bawah kumpulan prinsip dan komponen yang konsisten, tim produk dapat mewujudkan potensi desain terbesar mereka.
Untuk desktop dan web seluler, Material Components Web (MDC Web) menyatukan desain dan teknik dengan library komponen untuk menciptakan konsistensi di seluruh aplikasi dan situs. Setiap komponen MDC Web berada di modul node-nya sendiri, sehingga seiring berkembangnya sistem Desain Material, komponen ini dapat dengan mudah diupdate untuk memastikan implementasi pixel-perfect yang konsisten dan kepatuhan terhadap standar pengembangan front-end Google. MDC juga tersedia untuk Android, iOS, dan Flutter.
Dalam codelab ini, Anda akan mem-build halaman login menggunakan beberapa komponen MDC Web.
Yang akan Anda bangun
Codelab ini adalah yang pertama dari tiga codelab yang akan memandu Anda mem-build aplikasi bernama Shrine, sebuah situs e-commerce yang menjual pakaian dan perlengkapan rumah. Codelab ini akan mendemonstrasikan cara menyesuaikan komponen agar mencerminkan merek atau gaya apa pun menggunakan MDC Web.
Dalam codelab ini, Anda akan mem-build halaman login untuk Shrine yang berisi:
- Dua kolom teks, yang pertama untuk memasukkan nama pengguna dan yang kedua untuk sandi
- Dua tombol, satu untuk "Batal" dan satu untuk "Berikutnya"
- Nama situs (Shrine)
- Gambar logo Shrine
Komponen Web MDC dalam codelab ini
- Kolom teks
- Tombol
- Ripple
Yang Anda butuhkan
- Node.js versi terbaru (yang disertakan dengan npm, pengelola paket JavaScript).
- Kode contoh (yang akan didownload pada langkah berikutnya)
- Pengetahuan dasar tentang HTML, CSS, dan JavaScript
Kami selalu berupaya meningkatkan kualitas tutorial kami. Bagaimana Anda menilai tingkat pengalaman Anda dalam pengembangan web?
Mendownload aplikasi codelab awal
Aplikasi awal terletak di direktori material-components-web-codelabs-master/mdc-101/starter
. Pastikan untuk cd
ke direktori tersebut sebelum memulai.
...atau meng-clone codelab dari GitHub
Untuk meng-clone codelab ini dari GitHub, jalankan perintah berikut:
git clone https://github.com/material-components/material-components-web-codelabs cd material-components-web-codelabs/mdc-101/starter
Instal dependensi project
Dari direktori starter, jalankan:
npm install
Anda akan melihat banyak aktivitas dan di akhir, terminal Anda akan menampilkan penginstalan yang berhasil:
Jika tidak, jalankan npm audit fix
.
Menjalankan aplikasi awal
Di direktori yang sama, jalankan:
npm start
webpack-dev-server
akan dimulai. Arahkan browser Anda ke http://localhost:8080/ untuk melihat halaman.
Berhasil! Kode awal untuk halaman login Shrine akan berjalan di browser Anda. Anda akan melihat nama "Shrine" dan logo Shrine tepat di bawahnya.
Lihat kode
Metadata di index.html
Di direktori starter, buka index.html
dengan editor kode favorit Anda. Akan berisi seperti ini:
<!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>
Di sini, tag <link>
digunakan untuk memuat file bundle-login.css
yang dibuat oleh webpack, dan tag <script>
menyertakan file bundle-login.js
. Selain itu, kami menyertakan normalize.css untuk rendering lintas browser yang konsisten, serta font Roboto dari Google Fonts.
Gaya kustom di login.scss
Komponen MDC Web ditata gayanya menggunakan class CSS mdc-*
, seperti class mdc-text-field
. (MDC Web memperlakukan struktur DOM-nya sebagai bagian dari API publiknya.)
Secara umum, sebaiknya Anda melakukan modifikasi gaya kustom pada komponen menggunakan class Anda sendiri. Anda mungkin melihat beberapa class CSS kustom dalam HTML di atas, seperti shrine-logo
. Gaya ini ditentukan di login.scss
untuk menambahkan gaya dasar ke halaman.
Buka login.scss
dan Anda akan melihat gaya berikut untuk halaman login:
@import "./common";
.header {
text-align: center;
}
.shrine-logo {
width: 150px;
height: 150px;
padding-top: 80px;
fill: currentColor;
}
Setelah Anda memahami kode awal, sekarang mari kita implementasikan komponen pertama kita.
Untuk memulai, kita akan menambahkan dua kolom teks ke halaman login, tempat pengguna dapat memasukkan nama pengguna dan sandi mereka. Kita akan menggunakan komponen Kolom Teks MDC, yang mencakup fungsi bawaan yang menampilkan label mengambang dan mengaktifkan ripple sentuh.
Instal MDC Text Field
Komponen MDC Web dipublikasikan melalui paket NPM. Untuk menginstal paket komponen kolom teks, jalankan:
npm install @material/textfield
Tambahkan HTML
Di index.html
, tambahkan berikut ini di dalam elemen <form>
di isi:
<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>
Struktur DOM Kolom Teks MDC terdiri dari beberapa bagian:
- Elemen utama,
mdc-text-field
- Sub-elemen
mdc-text-field__input
,mdc-floating-label
, danmdc-line-ripple
Tambahkan CSS
Di login.scss
, tambahkan pernyataan impor berikut setelah impor yang ada:
@import "@material/textfield/mdc-text-field";
Dalam file yang sama, tambahkan gaya berikut untuk menyelaraskan dan memusatkan kolom teks:
.username,
.password {
display: block;
width: 300px;
margin: 20px auto;
}
Tambahkan JavaScript
Buka login.js
, yang saat ini kosong. Tambahkan kode berikut untuk mengimpor dan membuat instance Kolom Teks:
import {MDCTextField} from '@material/textfield';
const username = new MDCTextField(document.querySelector('.username'));
const password = new MDCTextField(document.querySelector('.password'));
Menambahkan validasi HTML5
Kolom Teks menyatakan apakah input kolom valid atau berisi error, dengan menggunakan atribut yang disediakan oleh API validasi formulir HTML5.
Anda harus:
- Tambahkan atribut
required
ke elemenmdc-text-field__input
dari kolom teks Nama Pengguna dan Sandi - Tetapkan atribut
minlength
elemenmdc-text-field__input
kolom teks Password ke"8"
Sesuaikan kedua elemen <div class="mdc-text-field">
agar terlihat seperti ini:
<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>
Muat ulang halaman di http://localhost:8080/. Sekarang Anda akan melihat halaman dengan dua kolom teks untuk Nama Pengguna dan Sandi.
Klik kolom teks untuk melihat animasi label mengambang dan animasi riak garis (garis batas bawah yang beriak ke luar):
Selanjutnya, kita akan menambahkan dua tombol ke halaman login: "Cancel" dan "Next". Kita akan menggunakan komponen Tombol MDC, bersama dengan komponen Ripple MDC, untuk menyelesaikan efek riak tinta Desain Material yang ikonik.
Menginstal Tombol MDC
Untuk menginstal paket komponen tombol, jalankan:
npm install @material/button
Tambahkan HTML
Di index.html
, tambahkan kode berikut di bawah tag penutup elemen <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>
Untuk tombol "Cancel", kita menggunakan gaya tombol default. Namun, tombol "Berikutnya" menggunakan varian gaya diangkat, yang ditunjukkan oleh class mdc-button--raised
.
Untuk menyelaraskannya dengan mudah nanti, kita menggabungkan dua elemen mdc-button
dalam elemen <div>
.
Tambahkan CSS
Di login.scss
, tambahkan pernyataan impor berikut setelah impor yang ada:
@import "@material/button/mdc-button";
Untuk menyelaraskan tombol dan menambahkan margin di sekitarnya, tambahkan gaya berikut ke login.scss
:
.button-container {
display: flex;
justify-content: flex-end;
width: 300px;
margin: auto;
}
.button-container button {
margin: 3px;
}
Menambahkan riak tinta ke tombol
Saat pengguna menyentuh atau mengklik tombol, tombol tersebut akan menampilkan masukan dalam bentuk riak tinta. Komponen riak tinta memerlukan JavaScript, jadi kita akan menambahkannya ke halaman.
Untuk menginstal paket komponen riak, jalankan:
npm install @material/ripple
Di bagian atas login.js
, tambahkan pernyataan impor berikut:
import {MDCRipple} from '@material/ripple';
Untuk membuat instance riak, tambahkan kode berikut ke login.js
:
new MDCRipple(document.querySelector('.cancel'));
new MDCRipple(document.querySelector('.next'));
Karena kita tidak perlu mempertahankan referensi ke instance riak, tidak perlu menetapkannya ke variabel.
Selesai. Muat ulang halaman. Efek riak tinta akan ditampilkan saat Anda mengklik setiap tombol.
Isi kolom teks dengan nilai yang valid, lalu tekan tombol "BERIKUTNYA". Anda berhasil! Anda akan melanjutkan pekerjaan di halaman ini di MDC-102.
Dengan menggunakan markup HTML dasar dan hanya beberapa baris CSS dan JavaScript, library Komponen Material untuk web telah membantu Anda membuat halaman login yang indah yang mematuhi pedoman Desain Material, serta terlihat dan berfungsi secara konsisten di seluruh perangkat.
Langkah berikutnya
Kolom Teks, Tombol, dan Ripple adalah tiga komponen inti dalam library MDC Web, tetapi sebenarnya masih banyak lagi. Anda juga dapat menjelajahi komponen lainnya di MDC Web.
Anda dapat membuka MDC-102: Tata Letak dan Struktur Desain Material untuk mempelajari panel navigasi dan daftar gambar. Terima kasih telah mencoba Komponen Material. Kami harap Anda menikmati codelab ini.