Web MDC-103: Penerapan Tema Material dengan Warna, Bentuk, Ketinggian, dan Jenis (Web)

logo_components_color_2x_web_96dp.png

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

Dalam codelab MDC-101 dan MDC-102, Anda menggunakan Komponen Material (MDC) untuk membuat dasar-dasar aplikasi bernama Shrine, sebuah aplikasi e-commerce yang menjual pakaian dan perlengkapan rumah. Alur pengguna aplikasi ini dimulai dengan layar login, yang kemudian mengarahkan pengguna ke layar utama yang berisi produk.

Desain Material baru-baru ini diperluas untuk meningkatkan fleksibilitas desainer dan developer dalam mengekspresikan merek produk mereka. Dalam codelab ini, Anda akan menggunakan MDC untuk menyesuaikan aplikasi Shrine agar mencerminkan gaya unik merek dengan lebih banyak cara daripada sebelumnya.

Yang akan Anda bangun

Dalam codelab ini, Anda akan menyesuaikan Shrine agar mencerminkan mereknya menggunakan:

  • Warna
  • Tipografi
  • Ketinggian
  • Bentuk
  • Tata Letak

Komponen dan subsistem MDC Web yang digunakan dalam codelab ini

  • Tema
  • Tipografi
  • Ketinggian
  • Daftar gambar

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

Bagaimana Anda menilai tingkat pengalaman Anda dalam pengembangan web?

Pemula Menengah Mahir

Melanjutkan dari MDC-102?

Jika Anda sudah menyelesaikan MDC-102, kode Anda seharusnya siap untuk codelab ini. Lewati ke langkah 3: Mengubah warna.

Mendownload aplikasi codelab awal

Download aplikasi awal

Aplikasi awal terletak di direktori material-components-web-codelabs-master/mdc-103/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-103/starter

Instal dependensi project

Dari direktori starter material-components-web-codelabs/mdc-103/starter (seharusnya direktori Anda saat ini jika Anda mengikuti langkah di atas), jalankan:

npm install

Anda akan melihat banyak aktivitas dan di akhir, terminal Anda akan menampilkan penginstalan yang berhasil:

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! Anda akan melihat halaman login Shrine berjalan di browser Anda. Isi kolom Nama Pengguna dan Sandi, lalu klik tombol "Berikutnya" untuk membuka halaman beranda. Aplikasi ini akan menampilkan panel navigasi di sebelah kiri, di samping petak gambar produk.

Meskipun berfungsi, mari kita sesuaikan laci navigasi dengan merek Shrine dengan mengubah warna, ketinggian, dan tipografinya.

Tema warna ini telah dibuat oleh desainer dengan warna kustom (ditampilkan di gambar di bawah). Tema warna ini berisi warna yang telah dipilih dari merek Shrine dan diterapkan ke Material Theme Editor, yang telah memperluasnya untuk membuat palet yang lebih lengkap. (Warna ini bukan dari palet warna Material 2014.)

Mari kita ubah warna panel navigasi aplikasi Shrine agar mencerminkan skema warna tersebut.

Mengganti warna tema

Buat file baru bernama _variables.scss, yang berisi kode berikut:

$mdc-theme-primary: #FEDBD0;
$mdc-theme-on-primary: #442C2E;
$mdc-theme-secondary: #FEEAE6;
$mdc-theme-on-secondary: #442C2E;
$mdc-theme-surface: #FFFBFA;
$mdc-theme-on-surface: #442C2E;
$mdc-theme-background: #FFFFFF;
$mdc-theme-on-background: #442C2E;

Kemudian, impor di bagian paling atas _common.scss:

@import "./variables";

Menambahkan gaya CSS ke panel navigasi

Di home.scss, tambahkan pernyataan impor berikut setelah impor yang ada:

@import "@material/ripple/mixins";

Kemudian, tambahkan gaya berikut, buat class .shrine-drawer:

.shrine-drawer {
  @include mdc-drawer-fill-color-accessible(primary);
  // Drawer defaults to a higher z-index, but we aren't overlaying it over anything
  @include mdc-drawer-z-index(0);

  text-transform: uppercase;

  .mdc-list {
    margin: 70px 5px auto 5px;
  }

  .mdc-list-item {
    border-radius: 6px;
    justify-content: center;
  }

  // This needs 3-class specificity to override MDC Drawer styles
  .mdc-list .mdc-list-item {
    @include mdc-states-activated(#fff);
  }
}

Muat ulang halaman di http://localhost:8080/home.html. Layar utama Anda sekarang akan terlihat seperti ini:

Mari kita ubah warna layar login agar sesuai dengan skema warna kita.

Menambahkan gaya CSS ke halaman login

Di login.scss, tambahkan baris berikut:

.shrine-login {
  background-color: $mdc-theme-background;
  color: $mdc-theme-on-background;
}

.cancel {
  @include mdc-button-ink-color(on-primary);
}

Selain itu, tambahkan pemanggilan mixin berikut di dalam pemilih CSS .username, .password:

.username,
.password {
  &:not(.mdc-text-field--invalid) {
    @include mdc-text-field-label-color(on-primary);
  }
  &.mdc-text-field--focused:not(.mdc-text-field--invalid)  {
    @include mdc-text-field-label-color(on-primary);
  }
  ...
}

Muat ulang halaman di http://localhost:8080/. Layar login Anda sekarang akan terlihat seperti ini:

Selain perubahan warna, desainer juga telah memberi Anda tipografi spesifik untuk digunakan di situs. Mari kita tambahkan juga ke panel navigasi.

Untuk menginstal paket Tipografi, jalankan:

npm install @material/typography

Menambahkan CSS untuk tipografi

Di home.scss, tambahkan pernyataan impor berikut setelah impor yang ada:

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

Kemudian, tambahkan pemanggilan mixin berikut ke class shrine-title:

.shrine-title {
  @include mdc-typography(headline6);
  ...
}

Selanjutnya, mari kita beri gaya pada item drawer.

Menambahkan pemisah baris

Di home.html, tambahkan kode berikut tepat setelah elemen <a ...>Featured</a>:

<div class="shrine-select-item-divider mdc-list-divider" role="separator"></div>

Tambahkan gaya berikut ke home.scss:

.shrine-select-item-divider {
  display: block;
  border-bottom-color: #EAA4A4;
  border-bottom-width: 2px;
  width: 50px;
  position: relative;
  top: -8px;
}

// This needs 2-class specificity to override MDC Drawer styles
.shrine-drawer .shrine-select-item-divider {
  margin: 0 auto;
}

Menyesuaikan item dan label gambar

Untuk menyesuaikan item dan label, tambahkan gaya berikut ke home.scss dalam pemilih .product-list:

.product-list {
  ...

  .mdc-image-list__supporting {
    justify-content: center;
  }

  .mdc-image-list__item {
    padding: 10px;
  }

  .mdc-image-list__label {
    @include mdc-typography(subtitle2);
  }
}

Muat ulang halaman. Layar utama Anda sekarang akan terlihat seperti ini:

Setelah Anda memberikan gaya pada halaman dengan warna dan tipografi spesifik Shrine, mari kita lihat daftar gambar yang menampilkan produk Shrine. Mari kita menarik perhatian ke produk dengan memberikan penekanan yang lebih besar.

Untuk menginstal paket untuk Elevation, jalankan:

npm install @material/elevation

Tambahkan pernyataan impor

Di home.scss, tambahkan baris berikut setelah pernyataan impor terakhir:

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

Bungkus daftar gambar dengan div baru

Di home.html, tambahkan markup berikut di sekitar elemen <ul>:

<div class="shrine-body">
 <ul...>
</div>

Mengubah ketinggian menggunakan mixin Sass

Di home.scss, tambahkan kode berikut:

.shrine-body {
  @include mdc-elevation(4);

  display: block;
  overflow: auto;
  z-index: 0; // Elevate over the drawer
}

Luar biasa! Anda telah menambahkan bayangan ke tepi kiri permukaan putih di belakang item daftar gambar, sehingga tampak mengambang sedikit di atas navigasi.

Selanjutnya, mari kita ubah tata letak untuk menampilkan gambar dalam ukuran dan rasio aspek yang berbeda, sehingga setiap gambar terlihat unik dari gambar lain.

Ubah HTML

Dalam home.html, perbarui elemen mdc-image-list agar berisi class mdc-image-list--masonry:

<ul class="mdc-image-list mdc-image-list--masonry product-list">

Menambahkan gambar

Di home.html, ubah atribut src setiap elemen img agar sesuai dengan gambar yang ada di folder assets. Kemudian, perbarui teks label untuk setiap gambar. Setelah selesai, tampilannya akan terlihat seperti ini:

    <ul class="mdc-image-list mdc-image-list--masonry product-list">
      <li class="mdc-image-list__item">
        <img class="mdc-image-list__image" src="assets/ginger-scarf.jpg">
        <div class="mdc-image-list__supporting">
          <span class="mdc-image-list__label">Ginger scarf</span>
        </div>
      </li>
      <li class="mdc-image-list__item">
        <img class="mdc-image-list__image" src="assets/blue-stone-mug.jpg">
        <div class="mdc-image-list__supporting">
          <span class="mdc-image-list__label">Blue stone mug</span>
        </div>
      </li>
      <li class="mdc-image-list__item">
        <img class="mdc-image-list__image" src="assets/cerise-scallop.jpg">
        <div class="mdc-image-list__supporting">
          <span class="mdc-image-list__label">Cerise scallop tee</span>
        </div>
      </li>
      <li class="mdc-image-list__item">
        <img class="mdc-image-list__image" src="assets/chambray-napkins.jpg">
        <div class="mdc-image-list__supporting">
          <span class="mdc-image-list__label">Chambray napkins</span>
        </div>
      </li>
      <li class="mdc-image-list__item">
        <img class="mdc-image-list__image" src="assets/fine-lines.jpg">
        <div class="mdc-image-list__supporting">
          <span class="mdc-image-list__label">Fine lines tee</span>
        </div>
      </li>
      <li class="mdc-image-list__item">
        <img class="mdc-image-list__image" src="assets/garden-strand.jpg">
        <div class="mdc-image-list__supporting">
          <span class="mdc-image-list__label">Garden strand</span>
        </div>
      </li>
      <li class="mdc-image-list__item">
        <img class="mdc-image-list__image" src="assets/gatsby-hat.jpg">
        <div class="mdc-image-list__supporting">
          <span class="mdc-image-list__label">Gatsby hat</span>
        </div>
      </li>
      <li class="mdc-image-list__item">
        <img class="mdc-image-list__image" src="assets/gilt-desk-trio.jpg">
        <div class="mdc-image-list__supporting">
          <span class="mdc-image-list__label">Gilt desk trio</span>
        </div>
      </li>
      <li class="mdc-image-list__item">
        <img class="mdc-image-list__image" src="assets/kitchen-quattro.jpg">
        <div class="mdc-image-list__supporting">
          <span class="mdc-image-list__label">Kitchen quattro</span>
        </div>
      </li>
      <li class="mdc-image-list__item">
        <img class="mdc-image-list__image" src="assets/seabreeze-sweater.jpg">
        <div class="mdc-image-list__supporting">
          <span class="mdc-image-list__label">Seabreeze sweater</span>
        </div>
      </li>
      <li class="mdc-image-list__item">
        <img class="mdc-image-list__image" src="assets/shrug-bag.jpg">
        <div class="mdc-image-list__supporting">
          <span class="mdc-image-list__label">Shrug bag</span>
        </div>
      </li>
      <li class="mdc-image-list__item">
        <img class="mdc-image-list__image" src="assets/stella-sunglasses.jpg">
        <div class="mdc-image-list__supporting">
          <span class="mdc-image-list__label">Stella sunglasses</span>
        </div>
      </li>
      <li class="mdc-image-list__item">
        <img class="mdc-image-list__image" src="assets/surf-and-perf.jpg">
        <div class="mdc-image-list__supporting">
          <span class="mdc-image-list__label">Surf and perf shirt</span>
        </div>
      </li>
      <li class="mdc-image-list__item">
        <img class="mdc-image-list__image" src="assets/vagabond-sack.jpg">
        <div class="mdc-image-list__supporting">
          <span class="mdc-image-list__label">Vagabond sack</span>
        </div>
      </li>
      <li class="mdc-image-list__item">
        <img class="mdc-image-list__image" src="assets/walter-henley.jpg">
        <div class="mdc-image-list__supporting">
          <span class="mdc-image-list__label">Walter henley (white)</span>
        </div>
      </li>
      <li class="mdc-image-list__item">
        <img class="mdc-image-list__image" src="assets/weave-keyring.jpg">
        <div class="mdc-image-list__supporting">
          <span class="mdc-image-list__label">Weave keyring</span>
        </div>
      </li>
    </ul>

Memperbarui CSS

Di home.scss, hapus mixin mdc-image-list-standard-columns(4) dan ganti dengan mixin berikut:

@include mdc-image-list-masonry-columns(4);

Kemudian, tambahkan nilai padding berikut ke class product-list di home.scss:

.product-list {
  ...
  padding: 80px 100px 0;
}

Kode Anda sekarang seharusnya cocok dengan kode yang disertakan dalam folder complete/.

Warna adalah cara efektif untuk mengekspresikan merek Anda, dan perubahan kecil pada warna dapat berpengaruh besar pada pengalaman pengguna Anda. Untuk mengujinya, mari kita lihat tampilan Shrine jika skema warna mereknya benar-benar berbeda.

Mengubah CSS

Di _variables.scss, ganti variabel yang Anda deklarasikan untuk tema utama dengan yang berikut:

$mdc-theme-primary: #5D1049;
$mdc-theme-on-primary: #FFFFFF;
$mdc-theme-secondary: #E30425;
$mdc-theme-on-secondary: #FFFFFF;
$mdc-theme-surface: #FFFFFF;
$mdc-theme-on-surface: #000000;
$mdc-theme-background: #F4E2ED;
$mdc-theme-on-background: #000000;

Di login.scss, hapus mixin di pemilih .username, .password. Tampilannya akan terlihat seperti berikut:

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

Selain itu, hapus penggantian mixin mdc-button-ink-color di class .cancel:

Di home.scss, tambahkan aturan berikut ke class .home:

background-color: $mdc-theme-background;

Dalam pemilih .shrine-logo-drawer, ganti properti fill menjadi warna on-primary:

.shrine-logo-drawer {
  ...
  fill: $mdc-theme-on-primary;
}

Demikian pula, dalam pemilih .shrine-title, tetapkan properti color menjadi warna on-primary:

.shrine-title {
  ...
  color: $mdc-theme-on-primary;
}

Terakhir, hapus mixin mdc-elevation yang digunakan sebelumnya di bawah pemilih .shrine-body.

Build dan jalankan. Sekarang, tema baru akan muncul di browser Anda.

Sekarang, buka http://localhost:8080/home.html untuk melihat perubahan pada halaman home.html.

Sekarang Anda telah membuat aplikasi yang menyerupai spesifikasi desainer Anda.

Langkah berikutnya

Sekarang Anda telah menggunakan komponen MDC berikut: tema, tipografi, ketinggian, dan bentuk. Anda dapat mempelajari lebih banyak komponen dan subsistem di MDC Web Catalog.

Saya dapat menyelesaikan codelab ini dengan upaya dan dalam durasi waktu yang wajar

Sangat setuju Setuju Netral Tidak setuju Sangat tidak setuju

Saya ingin terus menggunakan Komponen Material pada masa mendatang

Sangat setuju Setuju Netral Tidak setuju Sangat tidak setuju