MDC-103 Web: łączenie tematów z materiałami według koloru, kształtu, wysokości i typu (sieć)

1. Wprowadzenie

logo_components_color_2x_web_96dp.png

Material Komponenty (MDC) pomagają deweloperom wdrażać interfejs Material Design. MDC, stworzona przez zespół inżynierów i projektantów UX w Google, zawiera dziesiątki pięknych i funkcjonalnych komponentów interfejsu. Jest dostępny na Androida, iOS, internet oraz Flutter.material.io/develop

W ramach ćwiczeń z programowania MDC-101 i MDC-102 podstawowe informacje o aplikacji o nazwie Shrine zostały opracowane z wykorzystaniem komponentów Material Komponenty (MDC). Proces użytkownika w tej aplikacji rozpoczyna się od ekranu logowania, a następnie wyświetla się ekran główny z produktami.

Niedawno rozszerzyliśmy Material Design, aby dać projektantom i deweloperom większą elastyczność wyrażania marki produktu. W tym module z kodem użyjesz MDC, aby dostosować aplikację Shrine, aby odzwierciedlała unikalny styl marki na więcej niż kiedykolwiek dotąd sposoby.

Co utworzysz

W ramach tego ćwiczenia w programowaniu dostosujesz Shrine tak, aby odzwierciedlała jej markę, przy użyciu:

  • Kolor
  • Typografia
  • Wysokość
  • Kształt
  • Układ

9c51661824dfa934.png

Komponenty i podsystemy internetowe MDC używane w tym ćwiczeniu z programowania

  • Motyw
  • Typografia
  • Wysokość
  • Lista obrazów

Czego potrzebujesz

  • Nową wersję Node.js (w pakiecie z npm – menedżerem pakietów JavaScript).
  • Przykładowy kod (do pobrania w następnym kroku)
  • Podstawowa znajomość języka HTML, CSS i JavaScript

Jak oceniasz swój poziom doświadczenia w tworzeniu stron internetowych?

Początkujący Poziom średnio zaawansowany Biegły
.

2. Konfigurowanie środowiska programistycznego

Przechodzisz z MDC-102?

Jeśli masz ukończone wszystkie etapy MDC-102, Twój kod powinien być gotowy do wykorzystania w tym ćwiczeniu z programowania. Przejdź do kroku 3. Zmień kolor.

Pobierz aplikację startową z programowania

Aplikacja startowa znajduje się w katalogu material-components-web-codelabs-master/mdc-103/starter. Pamiętaj, aby przed rozpoczęciem przejść do tego katalogu: cd.

...lub skopiuj je z GitHuba

Aby skopiować to ćwiczenia z programowania z GitHuba, uruchom te polecenia:

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

Instalowanie zależności projektu

Z katalogu startowego material-components-web-codelabs/mdc-103/starter (powinien to być bieżący katalog, jeśli wykonasz powyższy krok) i uruchom:

npm install

Zobaczysz dużo aktywności, a na końcu terminala powinna pojawić się wiadomość o pomyślnej instalacji:

23003b0e5fdf9077.png

Uruchamianie aplikacji startowej

W tym samym katalogu uruchom polecenie:

npm start

Rozpocznie się webpack-dev-server. Aby wyświetlić tę stronę, wpisz w przeglądarce adres http://localhost:8080/.

61dc5a089bf0986b.png

Gotowe! W przeglądarce powinna wyświetlić się strona logowania do Shrine. Wypełnij pola Nazwa użytkownika i Hasło, a następnie kliknij przycisk „Dalej”. , aby przejść do strony głównej. Po lewej stronie, obok siatki zdjęć produktów, powinien wyświetlić się panel nawigacji.

e2f359c254988d75.png

Panel nawigacji działa, ale chcemy, by pasował do marki Shrine, zmieniając jego kolor, wysokość i typografię.

3. Zmiana koloru

Ten motyw kolorystyczny został utworzony przez projektanta z niestandardowymi kolorami (widocznymi na ilustracji poniżej). Zawiera kolory, które zostały wybrane od marki Shrine i zastosowane w edytorze motywów Material Design, co spowodowało ich poszerzenie w celu uzyskania bogatszej palety. (Te kolory nie pochodzą z palety kolorów Material z 2014 roku).

Zmieńmy kolor panelu nawigacji aplikacji Shrine, aby odzwierciedlić ten schemat kolorów.

Zastępowanie kolorów motywu

Utwórz nowy plik o nazwie _variables.scss zawierający:

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

Następnie zaimportuj go na samej górze _common.scss:

@import "./variables";

Dodawanie stylów CSS do panelu nawigacji

Po zaimportowaniu danych do pliku home.scss dodaj tę instrukcję:

@import "@material/ripple/mixins";

Następnie dodaj te style, tworząc klasę .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);
  }
}

Odśwież stronę http://localhost:8080/home.html. Twój ekran główny powinien teraz wyglądać tak:

816105f1c5a033f2.png

Zmieńmy kolor ekranu logowania, aby pasował do naszego schematu kolorów.

Dodawanie stylu CSS do strony logowania

W login.scss dodaj te wiersze:

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

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

W selektorze CSS .username, .password dodaj też te wywołania miksu:

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

Odśwież stronę http://localhost:8080/. Twój ekran logowania powinien teraz wyglądać tak:

9e0172a18582a44e.png

4. Modyfikowanie typografii i stylów etykiet

Oprócz zmian kolorów projektant udostępnił również specjalną typografię do wykorzystania w witrynie. Dodajmy to też do panelu nawigacji.

Aby zainstalować pakiet Typografii, uruchom polecenie:

npm install @material/typography

Dodaj kod CSS do typografii

W sekcji home.scss po importowaniu dodaj tę deklarację:

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

Następnie dodaj do klasy shrine-title to wywołanie Mixin:

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

Teraz nadajmy styl elementom w szufladzie.

Dodawanie separatora wierszy

W elemencie home.html bezpośrednio po elemencie <a ...>Featured</a> dodaj:

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

Dodaj do home.scss te style:

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

Dostosowywanie elementów i etykiet obrazów

Aby dostosować elementy i etykiety, za pomocą selektora .product-list dodaj do elementu home.scss te style:

.product-list {
  ...

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

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

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

Odśwież stronę. Twój ekran główny powinien teraz wyglądać tak:

129ada72a02baf5a.png

5. Dostosuj wysokość

Po dostosowaniu stylu strony do właściwych kolorów i typografii Shrine przyjrzyjmy się liście obrazów przedstawiających produkty Shrine. Chcemy zwrócić uwagę na produkty, podkreślając je.

Aby zainstalować pakiet funkcji Elevation, uruchom polecenie:

npm install @material/elevation

Dodaj oświadczenie dotyczące importu

W home.scss dodaj ten wiersz po ostatniej instrukcji importu:

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

Zawijanie listy obrazów nowym elementem div

W pliku home.html dookoła elementu <ul> dodaj te znaczniki:

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

Zmienianie wysokości za pomocą składanek Sass

W polu home.scss dodaj:

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

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

Doskonale. Dodano cień do lewej krawędzi białej powierzchni za elementami listy obrazów, przez co wydaje się ona unosić się nieco nad obszarem nawigacyjnym.

66c3d6a82fb8bb23.png

6. Zmienianie układu

Następnie zmienimy układ, aby wyświetlić obrazy w różnych formatach obrazu i o różnych rozmiarach, aby każdy obraz wyglądał inaczej niż inne.

Modyfikowanie kodu HTML

W home.html zaktualizuj element mdc-image-list, tak aby zawierał klasę mdc-image-list--masonry:

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

Dodawanie obrazów

W narzędziu home.html zmień atrybut src każdego elementu img, aby pasował do obrazów znajdujących się w folderze assets. Następnie zaktualizuj tekst etykiety każdego obrazu. Po zakończeniu powinno wyglądać mniej więcej tak:

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

Aktualizowanie usługi porównywania cen

W przypadku języka home.scss usuń składankę mdc-image-list-standard-columns(4) i zastąp ją taką:

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

Następnie dodaj te wartości padding do klasy product-list w home.scss:

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

9c51661824dfa934.png

Twój kod powinien być teraz zgodny z kodem w folderze complete/.

7. Wypróbuj inny motyw

Kolory to skuteczny sposób zaprezentowania marki, a niewielka zmiana koloru może mieć duży wpływ na wrażenia użytkownika. Aby to przetestować, zobaczmy, jak wyglądałaby Shrine, gdyby schemat kolorów jej marki był zupełnie inny.

Modyfikowanie CSS

W narzędziu _variables.scss zastąp zmienne zadeklarowane dla motywu podstawowego tymi:

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

W języku login.scss usuń kombinacje w selektorze .username, .password. Powinien wyglądać mniej więcej tak:

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

Dodatkowo usuń zastąpienie zestawu mdc-button-ink-color z klasy .cancel:

W home.scss dodaj tę regułę do klasy .home:

background-color: $mdc-theme-background;

W selektorze .shrine-logo-drawer zastąp właściwość fill kolorem on-primary:

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

Podobnie w selektorze .shrine-title ustaw właściwość color na kolor on-primary:

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

Na koniec usuń używaną wcześniej kombinację mdc-elevation za pomocą selektora .shrine-body.

Twórz i uruchamiaj. Nowy motyw powinien pojawić się w przeglądarce.

7fdf830a944e53d7.png

Przejdź teraz pod adres http://localhost:8080/home.html, aby zobaczyć zmiany na stronie home.html.

7369127decb1a875.png

8. Podsumowanie

Masz już aplikację, której styl przypomina specyfikację projektanta.

Dalsze kroki

Korzystasz teraz z tych komponentów MDC: motyw, typografia, wysokość i kształt. Więcej komponentów i podsystemów znajdziesz w MDC Web Catalog.

Udało mi się ukończyć to ćwiczenia z programowania w rozsądny sposób i w rozsądny sposób

Całkowicie się zgadzam Zgadzam się Nie mam zdania Nie zgadzam się Całkowicie się nie zgadzam

Chcę w przyszłości nadal używać komponentów Material Komponenty

Całkowicie się zgadzam Zgadzam się Nie mam zdania Nie zgadzam się Całkowicie się nie zgadzam
.