MDC-101 Web: חומרי לימוד (MDC) - יסודות (אינטרנט)

1. מבוא

logo_components_color_2x_web_96dp.png

Material Components (MDC) עוזר למפתחים להטמיע Material Design. MDC נוצר על ידי צוות של מהנדסים ומעצבי חוויית המשתמש ב-Google, שכולל עשרות רכיבים יפים ופונקציונליים של ממשק המשתמש. זמין ל-Android, ל-iOS, לאינטרנט ול-Flutter.material.io/develop

מהם Material Design ורכיבי Material for באינטרנט?

Material Design היא מערכת ליצירת מוצרים דיגיטליים נועזים ומרהיבים. כשמשלבים סגנון, מיתוג, אינטראקציה ותנועה במערך עקבי של עקרונות ורכיבים, צוותי המוצרים יכולים לממש את פוטנציאל העיצוב הגדול ביותר.

למחשבים ובאינטרנט לנייד, Material Components Web (MDC Web) מאחדים עיצוב והנדסה עם ספריית רכיבים ליצירת עקביות בין אפליקציות ואתרים. כל אחד מרכיבי MDC Web נמצא במודולים נפרדים של צמתים, כך שככל שמערכת Material Design מתפתחת, ניתן לעדכן את הרכיבים האלה בקלות כדי להבטיח הטמעה עקבית של פיקסלים ותאימות לתקני הפיתוח בממשק הקצה של Google. MDC זמין גם למכשירי Android, iOS ו-Flutter.

ב-Codelab הזה תבנו דף התחברות באמצעות מספר רכיבים של MDC Web.

מה תפַתחו

ה-Codelab הזה הוא הראשון מתוך שלושה מעבדי קוד שינחו אותך בתהליך היצירה של אפליקציה בשם Shrine, אתר מסחר אלקטרוני למכירת בגדים ומוצרים לבית. בקורס תלמדו איך אפשר להתאים אישית את הרכיבים כך שישקפו כל מותג או סגנון באמצעות MDC Web.

ב-Codelab הזה בונים דף התחברות למקדש שמכיל:

  • שני שדות טקסט, אחד להזנת שם משתמש והשני לסיסמה
  • שני לחצנים, אחד ל'ביטול' והשני בשביל 'הבא'
  • שם האתר (Shrine)
  • תמונת הלוגו של מקדש

674d1ca8cfa98c9.png

רכיבי MDC ב-Codelab הזה

  • שדה טקסט
  • לחצן
  • גל

מה צריך להכין

  • גרסה עדכנית של Node.js (שנשלחת בחבילה עם npm, מנהל חבילות של JavaScript).
  • הקוד לדוגמה (להורדה בשלב הבא)
  • ידע בסיסי ב-HTML, ב-CSS וב-JavaScript

אנחנו תמיד שואפים לשפר את המדריכים שלנו. איזה דירוג מגיע לדעתך לרמת הניסיון שלך בפיתוח אתרים?

מתחילים בינונית בקיאים

2. הגדרת סביבת הפיתוח

להורדת האפליקציה לתחילת פעולה של Codelab

האפליקציה לתחילת הפעולה נמצאת בספרייה material-components-web-codelabs-master/mdc-101/starter. חשוב להקליד cd בספרייה הזו לפני שמתחילים.

...או לשכפל אותו מ-GitHub

כדי לשכפל את ה-Codelab הזה מ-GitHub, מריצים את הפקודות הבאות:

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

תלות של פרויקטים בהתקנות

מספריית ההתחלה, מריצים את:

npm install

יש פעילות רבה ובסופה, ההתקנה אמורה להופיע בטרמינל:

204c063d8fd78f94.png

אם לא, מריצים את npm audit fix.

הפעלת אפליקציה לתחילת פעולה

באותה ספרייה, מריצים את:

npm start

webpack-dev-server יתחיל. מכוונים את הדפדפן אל http://localhost:8080/ כדי לראות את הדף.

17c139dc5a9bebaf.png

הצלחת! הקוד ההתחלתי של דף ההתחברות של Shrine אמור לפעול בדפדפן. השם 'שריין' אמור להופיע. והלוגו של מקדש ה-Shrine שנמצא ממש מתחתיו.

f7e3f354df8d84b8.png

לעיון בקוד

מטא-נתונים בתיקייה index.html

בספרייה למתחילים, פותחים את index.html באמצעות עורך הקוד המועדף עליכם. הקובץ צריך לכלול את הפרטים הבאים:

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

כאן נעשה שימוש בתג <link> כדי לטעון את הקובץ bundle-login.css שנוצר על ידי Webpack, והתג <script> כולל את הקובץ bundle-login.js. בנוסף, אנחנו כוללים את normalize.css לעיבוד עקבי בדפדפנים שונים, וכן את הגופן Roboto מ-Google Fonts.

סגנונות מותאמים אישית בטווח login.scss

רכיבי MDC Web מעוצבים באמצעות mdc-* מחלקות CSS, כמו המחלקה mdc-text-field. (MDC Web מתייחסת למבנה ה-DOM שלו כחלק מה-API הציבורי שלו).

באופן כללי, מומלץ לבצע שינויים בסגנון מותאם אישית ברכיבים באמצעות מחלקות משלכם. יכול להיות שהבחנתם בכמה מחלקות CSS מותאמות אישית ב-HTML שלמעלה, כמו shrine-logo. הסגנונות האלה מוגדרים ב-login.scss כדי להוסיף סגנונות בסיסיים לדף.

אפשר לפתוח את login.scss ולראות את הסגנונות הבאים בדף ההתחברות:

@import "./common";

.header {
  text-align: center;
}

.shrine-logo {
  width: 150px;
  height: 150px;
  padding-top: 80px;
  fill: currentColor;
}

עכשיו, אחרי שקראתם את קוד ההתחלה, נטמיע את הרכיב הראשון.

3. הוספת שדות טקסט

כדי להתחיל, נוסיף שני שדות טקסט לדף ההתחברות שלנו, שבו המשתמשים יוכלו להזין את שם המשתמש והסיסמה שלהם. נשתמש ברכיב של שדה הטקסט של MDC, שכולל פונקציונליות מובנית שמציגה תווית צפה ומפעילה גלים ומגע.

9ad8a7db0b50f07d.png

מתקינים את שדה הטקסט של MDC

רכיבי MDC Web מתפרסמים באמצעות חבילות NPM. כדי להתקין את החבילה עבור רכיב שדה הטקסט, מריצים את:

npm install @material/textfield@^6.0.0

מוסיפים את ה-HTML

בקובץ index.html, מוסיפים את הטקסט הבא בתוך הרכיב <form> בגוף:

<label class="mdc-text-field mdc-text-field--filled username">
  <span class="mdc-text-field__ripple"></span>
  <input type="text" class="mdc-text-field__input" aria-labelledby="username-label" name="username">
  <span class="mdc-floating-label" id="username-label">Username</span>
  <span class="mdc-line-ripple"></span>
</label>
<label class="mdc-text-field mdc-text-field--filled password">
  <span class="mdc-text-field__ripple"></span>
  <input type="password" class="mdc-text-field__input" aria-labelledby="password-label" name="password">
  <span class="mdc-floating-label" id="password-label">Password</span>
  <span class="mdc-line-ripple"></span>
</label>

מבנה DOM של שדה טקסט ב-MDC מורכב מכמה חלקים:

  • הרכיב הראשי, mdc-text-field
  • אלמנטים משניים mdc-text-field__ripple, mdc-text-field__input, mdc-floating-label ו-mdc-line-ripple

הוספה של שירות ה-CSS

ב-login.scss, צריך להוסיף את הצהרת הייבוא הבאה אחרי הייבוא הקיים:

@import "@material/textfield/mdc-text-field";

באותו הקובץ, מוסיפים את הסגנונות הבאים כדי ליישר ולמרכז את שדות הטקסט:

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

הוספת ה-JavaScript

פותחים את הקובץ login.js, ריק כרגע. כדי לייבא את שדות הטקסט וליצור מופעים שלהם, מוסיפים את הקוד הבא:

import {MDCTextField} from '@material/textfield';

const username = new MDCTextField(document.querySelector('.username'));
const password = new MDCTextField(document.querySelector('.password'));

הוספת אימות HTML5

השדה 'שדות טקסט' מציין אם הקלט בשדה חוקי או מכיל שגיאה, באמצעות מאפיינים שסופקו על ידי ה-API לאימות טפסים של HTML5.

אתם צריכים:

  • צריך להוסיף את המאפיין required לרכיבי mdc-text-field__input בשדות הטקסט שם משתמש וסיסמה
  • מגדירים את המאפיין minlength של הרכיב mdc-text-field__input בשדה הטקסט סיסמה כ-"8"

משנים את שני רכיבי <label class="mdc-text-field mdc-text-field--filled"> כך:

<label class="mdc-text-field mdc-text-field--filled username">
  <span class="mdc-text-field__ripple"></span>
  <input type="text" class="mdc-text-field__input" aria-labelledby="username-label" name="username" required>
  <span class="mdc-floating-label" id="username-label">Username</span>
  <span class="mdc-line-ripple"></span>
</label>
<label class="mdc-text-field mdc-text-field--filled password">
  <span class="mdc-text-field__ripple"></span>
  <input type="password" class="mdc-text-field__input" aria-labelledby="password-label" name="password" required minlength="8">
  <span class="mdc-floating-label" id="password-label">Password</span>
  <span class="mdc-line-ripple"></span>
</label>

מרעננים את הדף בכתובת http://localhost:8080/. עכשיו אמור להופיע דף עם שני שדות טקסט: 'שם משתמש' ו'סיסמה'.

לחצו על שדות הטקסט כדי לראות את האנימציה של התווית הצפה ואת האנימציה של גלי הקו (קו הגבול התחתון שמתבלט כלפי חוץ):

c0b341e9949a6183.gif

4. הוספת לחצנים

בשלב הבא, נוסיף שני לחצנים לדף ההתחברות שלנו: "ביטול" ו-"Next". נשתמש ברכיב הלחצן של MDC, יחד עם רכיב ה-MDC Ripple, כדי להשלים את אפקט גלי הדיו האייקוני של Material Design.

674d1ca8cfa98c9.png

לחצן להתקנת MDC

כדי להתקין את החבילה של רכיב הלחצן, מריצים את:

npm install @material/button@^6.0.0

מוסיפים את ה-HTML

ב-index.html, צריך להוסיף את הקוד הבא מתחת לתג הסוגר של הרכיב <label class="mdc-text-field mdc-text-field--filled 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>

לגבי האפשרות 'ביטול' אנחנו משתמשים בסגנון ברירת המחדל של הלחצנים. לעומת זאת, התכונה 'הבא' הלחצן משתמש בווריאנט בסגנון הוגבה. הסטטוס הזה מצוין על ידי המחלקה mdc-button--raised.

כדי ליישר ביניהם בקלות מאוחר יותר, אנחנו כוללים את שני רכיבי mdc-button ברכיב <div>.

הוספה של שירות ה-CSS

ב-login.scss, צריך להוסיף את הצהרת הייבוא הבאה אחרי הייבוא הקיים:

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

כדי ליישר את הלחצנים ולהוסיף שוליים סביבם, צריך להוסיף את הסגנונות הבאים ל-login.scss:

.button-container {
  display: flex;
  justify-content: flex-end;
  width: 300px;
  margin: auto;
}

.button-container button {
  margin: 3px;
}

הוספת גלי דיו ללחצנים

כשהמשתמש נוגע בלחצן או לוחץ עליו, הוא אמור להופיע בצורה של מעגל דיו. לרכיב גל הדיו נדרש JavaScript, לכן נוסיף אותו לדף.

כדי להתקין את החבילה של רכיב ההדים, מריצים את:

npm install @material/ripple@^6.0.0

בחלק העליון של login.js, מוסיפים את הצהרת הייבוא הבאה:

import {MDCRipple} from '@material/ripple';

כדי ליצור את הגלים, צריך להוסיף את הפרטים הבאים אל login.js:

new MDCRipple(document.querySelector('.cancel'));
new MDCRipple(document.querySelector('.next'));

מכיוון שאנחנו לא צריכים לשמור הפניה למופע של הדגל, אין צורך להקצות אותו למשתנה.

זהו! יש לרענן את הדף. אדמת דיו תוצג כשתלחצו על כל אחד מהלחצנים.

bb19b0a567977bde.gif

ממלאים את הערכים התקינים בשדות הטקסט ולוחצים על 'הבא' לחצן. הצלחת! הדף הזה ימשיך לפעול ב-MDC-102.

5. Recap

באמצעות שימוש בתגי עיצוב HTML בסיסיים ובכמה שורות בלבד של CSS ו-JavaScript, Material Components של ספריית האינטרנט עזר לכם ליצור דף התחברות יפהפה שתואם להנחיות של Material Design, נראה ומתנהג באופן עקבי בכל המכשירים.

השלבים הבאים

'שדה טקסט', 'לחצן' ו'הדים' הם שלושה רכיבי ליבה בספריית האינטרנט של MDC, אבל יש עוד המון רכיבים נוספים. אתם יכולים גם לעיין בשאר הרכיבים ב-MDC Web.

אפשר לעבור אל MDC-102: מבנה ופריסה של Material Design כדי לקבל מידע על חלונית ההזזה לניווט ועל רשימת התמונות. תודה שניסית את רכיבי Material. אנחנו מקווים שנהניתם מה-Codelab הזה!

הצלחתי להשלים את ה-Codelab הזה תוך השקעה של זמן ומאמץ סבירים

נכון מאוד נכון נייטרלי לא נכון לא נכון בכלל

ארצה להמשיך להשתמש ברכיבי Material Materials בעתיד

נכון מאוד נכון נייטרלי לא נכון לא נכון בכלל