1. Wprowadzenie
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 |
Komponenty Material Komponenty do przeglądania internetu (MDC Web) są niezależne od platformy i są tworzone za pomocą zwykłego JavaScriptu. Dzięki temu MDC Web będzie płynnie współdziałać z procesem programowania. W razie potrzeby możesz zainstalować te komponenty, aby ułatwić elastyczny projekt strony w obecnej aplikacji.
Co utworzysz
W ramach tego ćwiczenia w Codelabs zastąpisz niektóre istniejące komponenty w formularzu tymi dostarczonymi przez MDC Web:
Komponenty internetowe MDC w tym ćwiczeniu z programowania
- Przycisk
- Wybierz
- Pole tekstowe
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?
2. Konfigurowanie środowiska programistycznego
Pobierz aplikację startową z programowania
Aplikacja startowa znajduje się w katalogu material-components-web-codelabs-master/mdc-111/starter
. Zanim zaczniesz, nie zapomnij o cd
w tym katalogu.
...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-111/starter
Instalowanie zależności projektu
Z katalogu startowego (material-components-web-codelabs/mdc-111/starter
) uruchom polecenie:
npm install
Zobaczysz dużo aktywności, a na końcu terminala powinna pojawić się wiadomość o pomyślnej instalacji:
Uruchamianie aplikacji startowej
W katalogu startowym uruchom polecenie:
npm start
Rozpocznie się webpack-dev-server
. Aby wyświetlić tę stronę, wpisz w przeglądarce adres http://localhost:8080/.
Gotowe! Formularz adresu dostawy powinien pojawić się w aplikacji:
3. Zaktualizuj przycisk
Przycisk Zainstaluj MDC
Naciśnij Ctrl
+C
, by wyłączyć serwer programistyczny. Następnie zainstaluj pakiet NPM przycisku MDC i uruchom ponownie serwer:
npm install @material/button npm start
Importowanie usługi porównywania cen
Na górze elementu _theme.scss
usuń bryłę .crane-button { ... }
i w jej miejsce dodaj:
$mdc-theme-primary: $crane-primary-color;
@import "@material/button/mdc-button";
Aktualizowanie znaczników
W index.html
usuń klasę crane-button
z elementu <button>
, dodaj klasy mdc-button
i mdc-button--raised
oraz zagnieźdź etykietę w elemencie <span>
z klasą mdc-button__label
:
<button type="submit" class="mdc-button mdc-button--raised">
<div class="mdc-button__ripple"></div>
<span class="mdc-button__label">Save</span>
</button>
Dodaj Echo
Przyciski MDC można używać bez JavaScriptu. Dodanie interaktywnej fali do przycisku zwiększa jednak wygodę użytkowników.
Naciśnij Ctrl
+C
, by wyłączyć serwer programistyczny. Następnie uruchom polecenie:
npm install @material/ripple npm start
Na górze app.js
dodaj instrukcję importu:
import {MDCRipple} from '@material/ripple';
Aby utworzyć wystąpienie fali na przycisku, na dole elementu app.js
dodaj:
new MDCRipple(document.querySelector('.mdc-button'));
Importuj czcionkę Roboto
Domyślnie Material Design używa krojów czcionek Roboto.
W programie index.html
zaimportuj czcionkę Roboto Web, dodając do elementu <head>
ten fragment:
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700">
Załaduj stronę ponownie. Powinno wyświetlić się mniej więcej coś takiego:
Po naciśnięciu przycisk wyświetla subtelny efekt fali.
4. Zaktualizuj wybór elementu
Komponent MDC Select opakowuje natywny element HTML <select>
. Korzystaj z niej wszędzie tam, gdzie zwykle używasz karty <select>
. Zaktualizuj pole „State”.
Zainstaluj moduł węzła MDC
Naciśnij Ctrl
+C
, by wyłączyć serwer programistyczny. Następnie uruchom polecenie:
npm install @material/select npm start
Importowanie usługi porównywania cen
Dodaj do _theme.scss
ten kod tuż po zaimportowaniu przycisku:
@import "@material/select/mdc-select";
Zaktualizuj znaczniki
Znajdź element <select>
w tagu index.html
. Zastąp klasę crane-input
elementem mdc-select__native-control
:
<select class="mdc-select__native-control" id="crane-state-input" required>
Tuż nad tagiem <select>
dodaj te znaczniki do strzałki menu komponentu MDC Select:
<i class="mdc-select__dropdown-icon"></i>
Tuż pod zamykającym tagiem </select>
zastąp klasę crane-label
elementem mdc-floating-label
:
<label class="mdc-floating-label" for="crane-state-input">
Następnie bezpośrednio po etykiecie dodaj te znaczniki:
<div class="mdc-line-ripple"></div>
Na koniec dodaj te tagi dookoła elementu <select>
(ale wewnątrz elementu crane-field
):
<div class="mdc-select">
...
</div>
Znaczniki powinny wyglądać tak:
<div class="crane-field">
<div class="mdc-select">
<i class="mdc-select__dropdown-icon"></i>
<select class="mdc-select__native-control" id="crane-state-input" required>
<option value="" selected></option>
<option value="AL">Alabama</option>
...
<option value="WI">Wisconsin</option>
<option value="WY">Wyoming</option>
</select>
<label class="mdc-floating-label" for="crane-state-input">
State
</label>
<div class="mdc-line-ripple"></div>
</div>
</div>
Importowanie pliku JS
Na górze app.js
dodaj instrukcję importu:
import {MDCSelect} from '@material/select';
Aby utworzyć instancję wyboru, na dole sekcji app.js
dodaj ten fragment:
new MDCSelect(document.querySelector('.mdc-select'));
Załaduj ponownie stronę, która powinna wyglądać tak:
Komponent MDC Select prezentuje użytkownikowi listę opcji w znanym formacie, ale z nowoczesnym stylem.
5. Zaktualizuj pola tekstowe
Pola tekstowe w stylu Material Design mają znacznie większą przydatność w porównaniu ze zwykłymi elementami <input>
. Zostały one zaprojektowane w taki sposób, aby można je było łatwo zidentyfikować w złożonych treściach i wyświetlać subtelne recenzje wizualne, gdy użytkownik wejdzie z nimi w interakcję.
Zainstaluj moduł węzła MDC
Naciśnij Ctrl
+C
, by wyłączyć serwer programistyczny. Następnie uruchom polecenie:
npm install @material/textfield npm start
Dodawanie usługi porównywania cen
Dodaj do _theme.scss
zaraz po zaimportowaniu danych:
@import "@material/textfield/mdc-text-field";
Aktualizowanie znaczników
W index.html
odszukaj element <input>
w polu „Nazwa”. Zastąp klasę crane-input
elementem mdc-text-field__input
:
<input class="mdc-text-field__input" id="crane-name-input" type="text" required autofocus>
Następnie zastąp klasę crane-label
elementem mdc-floating-label
:
<label class="mdc-floating-label" for="crane-name-input">
Następnie bezpośrednio po etykiecie dodaj te znaczniki:
<div class="mdc-line-ripple"></div>
Na koniec umieść wszystkie 3 elementy w taki sposób:
<div class="mdc-text-field">
...
</div>
Znaczniki powinny wyglądać tak:
<div class="crane-field">
<div class="mdc-text-field">
<input class="mdc-text-field__input" id="crane-name-input"
type="text" required autofocus>
<label class="mdc-floating-label" for="crane-name-input">
Name
</label>
<div class="mdc-line-ripple"></div>
</div>
</div>
Powtórz tę samą procedurę w przypadku wszystkich pozostałych elementów <input>
na stronie.
Znaczniki w polach „Address”, „Miasto” i „ZIP Code” powinny wyglądać tak:
<div class="crane-field">
<div class="mdc-text-field">
<input class="mdc-text-field__input" id="crane-address-input" type="text" required>
<label class="mdc-floating-label" for="crane-address-input">
Address
</label>
<div class="mdc-line-ripple"></div>
</div>
</div>
<div class="crane-field">
<div class="mdc-text-field">
<input class="mdc-text-field__input" id="crane-city-input" type="text" required>
<label class="mdc-floating-label" for="crane-city-input">
City
</label>
<div class="mdc-line-ripple"></div>
</div>
</div>
<div class="crane-field">
<div class="mdc-text-field">
<input class="mdc-text-field__input" id="crane-zip-code-input"
type="text" required minlength="5" maxlength="5" pattern="[0-9]*">
<label class="mdc-floating-label" for="crane-zip-code-input">
ZIP Code
</label>
<div class="mdc-line-ripple"></div>
</div>
</div>
Możesz teraz usunąć z elementu _theme.scss
style .crane-label
i .crane-input
, które nie są już używane.
Importowanie pliku JS
Na górze app.js
dodaj instrukcję importu:
import {MDCTextField} from '@material/textfield';
Aby utworzyć wystąpienie pól tekstowych, na dole sekcji app.js
dodaj:
const textFieldElements = [].slice.call(document.querySelectorAll('.mdc-text-field'));
textFieldElements.forEach((textFieldEl) => {
new MDCTextField(textFieldEl);
});
Załaduj ponownie stronę, która powinna wyglądać tak:
Wszystkie pola tekstowe zostały zaktualizowane, aby można było używać motywu Material Design.
6. Podsumowanie
Zastąpiono niektóre typowe komponenty (pola tekstowe, zaznaczenie i przycisk) bez wprowadzania zmian w aplikacji. Brawo!
Inne elementy, które również mogą robić duże wrażenie, to górny pasek aplikacji i szuflada nawigacji.
Dalsze kroki
Jeszcze więcej komponentów MDC Web znajdziesz w katalogu internetowym MDC.
Jeśli chcesz korzystać z określonej platformy MDC, przejdź do artykułu MDC-112: Integrating MDC z Web Frameworks.