MDC-103 Web: Renk, Şekil, Yükseklik ve Tür ile Materyal Teması (Web)

1. Giriş

logo_components_color_2x_web_96dp.png

Materyal Bileşenleri (MDC), geliştiricilerin Materyal Tasarım'ı uygulamasına yardımcı olur. Google'da mühendislerden ve kullanıcı deneyimi tasarımcılarından oluşan bir ekip tarafından oluşturulan MDC, onlarca güzel ve işlevsel kullanıcı arayüzü bileşeni içerir. Ayrıca Android, iOS, web ve Flutter.material.io/develop'da kullanılabilir.

MDC-101 ve MDC-102 codelab'lerinde, kıyafet ve ev eşyaları satan bir e-ticaret uygulaması olan Shrine adlı uygulamanın temellerini oluşturmak için Malzeme Bileşenleri'ni (MDC) kullandınız. Bu uygulamanın kullanıcı işlemleri akışı bir giriş ekranıyla başlar ve ardından kullanıcıyı ürünlerin bulunduğu bir ana ekrana yönlendirir.

Materyal Tasarım, tasarımcılara ve geliştiricilere ürünlerinin markalarını ifade etmeleri için daha fazla esneklik sunmak üzere yakın zamanda genişletildi. Bu kod laboratuvarında Shrine uygulamasını, markanın benzersiz tarzını her zamankinden daha farklı şekillerde özelleştirmek için MDC'yi kullanacaksınız.

Oluşturacaklarınız

Bu codelab'de Shrine'ı markasını yansıtacak şekilde özelleştirmek için şunları kullanacaksınız:

  • Renk
  • Yazı biçimi
  • Rakım
  • Şekil
  • Düzen

9c51661824dfa934.png

Bu codelab'de kullanılan MDC web bileşenleri ve alt sistemleri

  • Tema
  • Yazı biçimi
  • Rakım
  • Resim listesi

Gerekenler

  • Node.js'nin yeni bir sürümü (JavaScript paket yöneticisi olan npm ile birlikte gelir).
  • Örnek kod (sonraki adımda indirilecektir)
  • Temel HTML, CSS ve JavaScript bilgisi

Web geliştirme konusundaki deneyim düzeyinizi nasıl değerlendirirsiniz?

Acemi Orta Yeterli

2. Geliştirme ortamınızı ayarlama

MDC-102'den mi devam ediyorsunuz?

MDC-102'yi tamamladıysanız kodunuz bu codelab'de kullanılmaya hazır olmalıdır. 3. adıma (Rengi değiştirme) atlayın.

Starter codelab uygulamasını indirin

Başlangıç uygulaması material-components-web-codelabs-master/mdc-103/starter dizininde bulunur. Başlamadan önce bu dizine cd eklediğinizden emin olun.

...veya GitHub'dan klonlayın

Bu codelab'i GitHub'dan klonlamak için şu komutları çalıştırın:

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

Proje bağımlılıklarını yükleme

material-components-web-codelabs/mdc-103/starter başlangıç dizininden (yukarıdaki adımı uygulamanız durumunda bu dizin geçerli dizininiz olmalıdır) aşağıdaki komutu çalıştırın:

npm install

Çok fazla etkinlik göreceksiniz ve son olarak terminalinizde başarılı bir yükleme gösterilecektir:

23003b0e5fdf9077.png

Başlangıç uygulamasını çalıştırma

Aynı dizinde şu komutu çalıştırın:

npm start

webpack-dev-server başlar. Sayfayı görmek için tarayıcınızda http://localhost:8080/ adresine gidin.

61dc5a089bf0986b.png

Başarıyla gerçekleştirildi. Tarayıcınızda Shrine'ın giriş sayfası çalışıyor olmalıdır. Kullanıcı Adı ve Parola alanlarını doldurun ve "İleri"yi tıklayın ana sayfaya gitmek için düğmeyi kullanın. Sol tarafta, ürün resimleri tablosunun yanında bir gezinme çekmecesi gösterilmelidir.

e2f359c254988d75.png

Gezinme çekmecesi çalışıyor olsa da rengini, yüksekliğini ve tipografisini değiştirerek tapınak markasıyla uyumlu hale getirelim.

3. Rengi değiştirin

Bu renk teması, bir tasarımcı tarafından özel renklerle oluşturulmuştur (aşağıdaki resimde gösterilmektedir). Shrine'ın markasından seçilen ve daha zengin bir palet oluşturacak şekilde genişletilen Materyal Tema Düzenleyici'ye uygulanan renkler içerir. (Bu renkler, 2014 Malzeme renk paletlerinden alınmamıştır.)

Shrine uygulamasının gezinme çekmecesinin rengini, ilgili renk şemasını yansıtacak şekilde değiştirelim.

Tema renklerini geçersiz kılma

Şunları içeren _variables.scss adlı yeni bir dosya oluşturun:

$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;

Ardından, etiketi _common.scss öğesinin en üstüne aktarın:

@import "./variables";

Gezinme çekmecesine CSS stili ekleme

home.scss adresinde, mevcut içe aktarma işlemlerinden sonra aşağıdaki import ifadesini ekleyin:

@import "@material/ripple/mixins";

Ardından, .shrine-drawer sınıfını oluşturarak aşağıdaki stilleri ekleyin:

.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);
  }
}

http://localhost:8080/home.html adresinden sayfayı yenileyin. Ana ekranınız artık şu şekilde görünmelidir:

816105f1c5a033f2.png

Giriş ekranının rengini, renk şemamıza uyacak şekilde değiştirelim.

Giriş sayfasına CSS stili ekleme

login.scss alanına aşağıdaki satırları ekleyin:

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

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

Ayrıca, .username, .password CSS seçiciye şu mix çağrılarını ekleyin:

.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);
  }
  ...
}

http://localhost:8080/ adresinden sayfayı yenileyin. Giriş ekranınız artık şu şekilde görünmelidir:

9e0172a18582a44e.png

4. Tipografi ve etiket stillerini değiştirme

Tasarımcınız, renk değişikliklerine ek olarak, sitede kullanacağınız belirli bir yazı biçimi de sağladı. Bunu da gezinme çekmecesine ekleyelim.

Tipografi paketini yüklemek için şu komutu çalıştırın:

npm install @material/typography

Yazı biçimi için CSS'yi ekleme

home.scss aracında, mevcut içe aktarma işlemlerinden sonra aşağıdaki içe aktarma deyimini ekleyin:

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

Ardından shrine-title sınıfına aşağıdaki mixin çağrısını ekleyin:

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

Sonra, çekmece öğelerini biçimlendirelim.

Satır ayırıcı ekleme

home.html içinde, aşağıdakileri <a ...>Featured</a> öğesinin hemen arkasına ekleyin:

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

Şu stilleri home.scss içine ekleyin:

.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;
}

Resim öğelerini ve etiketleri ayarlama

Öğeleri ve etiketleri ayarlamak için .product-list seçicisi içinde home.scss öğesine aşağıdaki stilleri ekleyin:

.product-list {
  ...

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

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

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

Sayfayı yenileyin. Ana ekranınız artık şu şekilde görünmelidir:

129ada72a02baf5a.png

5. Rakımı ayarla

Artık Shrine'ın kendi renklerini ve yazılarını kullanarak sayfanın stilini belirlediğinize göre Shrine'ın ürünlerini gösteren resim listesine bakalım. Ürünleri daha vurgulayarak dikkat çekelim.

Elevation paketini yüklemek için şu komutu çalıştırın:

npm install @material/elevation

İçe aktarma beyanını ekleme

home.scss dilinde, son içe aktarma ifadesinden sonra aşağıdaki satırı ekleyin:

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

Resim listesini yeni bir div ile sarmalama

home.html içinde, <ul> öğesinin etrafına aşağıdaki işaretlemeyi ekleyin:

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

Sass karışımlarını kullanarak yüksekliği değiştirme

home.scss alanına aşağıdakileri ekleyin:

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

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

Etkileyici! Resim listesi öğelerinin arkasındaki beyaz yüzeyin sol kenarına, gezinmenin biraz üzerinde kayan gibi görünen bir gölge eklediniz.

66c3d6a82fb8bb23.png

6. Düzeni değiştirme

Şimdi de düzeni, resimleri farklı en boy oranlarında ve boyutlarda gösterecek şekilde değiştirelim. Böylece, her resim diğerlerine göre benzersiz görünür.

HTML'yi değiştirme

home.html öğesinde, mdc-image-list öğesini mdc-image-list--masonry sınıfını içerecek şekilde güncelleyin:

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

Resim ekleme

home.html ürününde her img öğesinin src özelliğini, assets klasöründe bulunan resimlerle eşleşecek şekilde değiştirin. Ardından, her görselin etiket metnini güncelleyin. Tamamlandığında, kod aşağıdaki gibi görünecektir:

    <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>

CSS'yi güncelleme

home.scss içinde mdc-image-list-standard-columns(4) mix'ini kaldırın ve şu mix'le değiştirin:

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

Ardından şu padding değerlerini home.scss içindeki product-list sınıfına ekleyin:

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

9c51661824dfa934.png

Kodunuz artık complete/ klasöründe yer alan kodla eşleşmelidir.

7. Başka bir tema deneyin

Renk, markanızı ifade etmenin güçlü bir yoludur ve renkteki küçük bir değişiklik kullanıcı deneyiminizi büyük ölçüde etkileyebilir. Bunu test etmek için markanın renk şeması tamamen farklı olsaydı Shrine'ın nasıl görüneceğine bakalım.

CSS'yi değiştirme

_variables.scss ürününde, birincil tema için bildirdiğiniz değişkenleri aşağıdakilerle değiştirin:

$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;

login.scss konumunda, .username, .password seçicideki mix'leri kaldırın. Aşağıdaki gibi görünecektir:

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

Ayrıca, .cancel sınıfındaki mdc-button-ink-color mix'i geçersiz kılmasını kaldırın:

home.scss uygulamasında .home sınıfına aşağıdaki kuralı ekleyin:

background-color: $mdc-theme-background;

.shrine-logo-drawer seçici içinde, fill özelliğini birincilde rengiyle değiştirin:

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

Benzer şekilde, .shrine-title seçicisinde color özelliğini birincilde rengi olarak ayarlayın:

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

Son olarak, daha önce .shrine-body seçicisinin altında kullanılan mdc-elevation mix'ini kaldırın.

Derleyin ve çalıştırın. Yeni tema artık tarayıcınızda görünecektir.

7fdf830a944e53d7.png

Şimdi, home.html sayfasındaki değişiklikleri görmek için http://localhost:8080/home.html adresine gidin.

7369127decb1a875.png

8. Özet

Tasarımcınızın özelliklerine benzeyen bir uygulama oluşturdunuz.

Sonraki adımlar

Bu aşamada şu MDC bileşenlerini kullandınız: tema, tipografi, yükseklik ve şekil. MDC Web Kataloğu'nda daha fazla bileşen ve alt sistem keşfedebilirsiniz.

Bu codelab'i makul bir zaman ve çabayla tamamlayabildim

Kesinlikle katılıyorum Katılıyorum Ne memnunum ne değilim Katılmıyorum Kesinlikle katılmıyorum

Gelecekte Materyal Bileşenleri kullanmaya devam etmek istiyorum

Kesinlikle katılıyorum Katılıyorum Ne memnunum ne değilim Katılmıyorum Kesinlikle katılmıyorum