1. مقدمة
تساعد Material Components (MDC) المطوّرين في تنفيذ التصميم المتعدد الأبعاد. تم إنشاء MDC بواسطة فريق من المهندسين ومصممي تجربة المستخدم في Google، وتتضمّن عشرات المكوّنات الجميلة والوظيفية لواجهة المستخدم، وهي متاحة على Android وiOS والويب وFlutter.material.io/develop |
ما هو التصميم المتعدد الأبعاد و"مكوّنات التصميم المتعدد الأبعاد للويب"؟
التصميم المتعدد الأبعاد هو نظام لإنشاء منتجات رقمية جريئة وجميلة. من خلال توحيد الأسلوب والعلامة التجارية والتفاعل والحركة ضمن مجموعة متسقة من المبادئ والمكوّنات، يمكن لفِرق المنتجات تحقيق أكبر إمكانات التصميم.
بالنسبة إلى أجهزة الكمبيوتر المكتبي والويب على الأجهزة الجوّالة، يجمع Material Components Web (MDC Web) بين التصميم والهندسة مع مكتبة من المكوّنات لضمان الاتساق في جميع التطبيقات والمواقع الإلكترونية. تعمل كل مكوّنات MDC Web في وحدات العُقد الخاصة بها، لذا مع تطوّر نظام التصميم المتعدد الأبعاد، يمكن تحديث هذه المكوّنات بسهولة لضمان تنفيذ متسق ودقيق على مستوى البكسل والالتزام بمعايير تطوير الواجهة الأمامية من Google. تتوفّر MDC أيضًا على Android وiOS وFlutter.
في هذا الدرس التطبيقي حول الترميز، ستنشئ صفحة تسجيل دخول باستخدام العديد من مكوّنات MDC Web.
ما ستنشئه
هذا الدرس التطبيقي حول الترميز هو الأول من ثلاثة دروس تطبيقية حول الترميز ستساعدك في إنشاء تطبيق باسم Shrine، وهو موقع إلكتروني للتجارة الإلكترونية يبيع الملابس والسلع المنزلية. سيوضّح هذا الدليل كيف يمكنك تخصيص المكوّنات لتعكس أي علامة تجارية أو تصميم باستخدام MDC Web.
في هذا الدرس التطبيقي حول الترميز، ستنشئ صفحة تسجيل دخول إلى تطبيق Shrine تتضمّن ما يلي:
- حقلان نصيان، أحدهما لإدخال اسم المستخدم والآخر لكلمة المرور
- زرّان، أحدهما "إلغاء" والآخر "التالي"
- اسم الموقع الإلكتروني (Shrine)
- صورة شعار Shrine

مكوّنات MDC Web في هذا الدرس التطبيقي حول الترميز
- حقل نصي
- زرّ
- تمويج
المتطلبات
- إصدار حديث من Node.js (الذي يأتي مجمّعًا مع npm، وهي أداة لإدارة حِزم JavaScript)
- نموذج الرمز البرمجي (سيتم تنزيله في الخطوة التالية)
- معرفة أساسية بلغات HTML وCSS وJavaScript
نسعى دائمًا إلى تحسين البرامج التعليمية. ما هو تقييمك لمستوى خبرتك في تطوير الويب؟
2. إعداد بيئة التطوير
تنزيل تطبيق الدرس التطبيقي للمبتدئين
يقع التطبيق التجريبي في الدليل material-components-web-codelabs-master/mdc-101/starter. احرص على cd في هذا الدليل قبل البدء.
...أو استنسِخه من GitHub
لاستنساخ هذا الدرس التطبيقي حول الترميز من GitHub، شغِّل الأوامر التالية:
git clone https://github.com/material-components/material-components-web-codelabs cd material-components-web-codelabs/mdc-101/starter
تثبيت التبعيات الخاصة بالمشروع
من دليل التطبيق الأوّلي، نفِّذ ما يلي:
npm install
ستلاحظ الكثير من الأنشطة، وفي النهاية، من المفترض أن تعرض لك نافذة الأوامر رسالة تفيد بنجاح عملية التثبيت:

إذا لم يحدث ذلك، شغِّل npm audit fix.
تشغيل تطبيق المبتدئين
في الدليل نفسه، نفِّذ ما يلي:
npm start
سيبدأ webpack-dev-server. انتقِل بمتصفّحك إلى http://localhost:8080/ للاطّلاع على الصفحة.

اكتمال النقل بنجاح يجب أن يكون الرمز الأوّلي لصفحة تسجيل الدخول في تطبيق Shrine قيد التشغيل في المتصفّح. يجب أن يظهر لك الاسم "Shrine" وشعار Shrine أسفله مباشرةً.

إلقاء نظرة على الرمز
البيانات الوصفية في 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 بنية نموذج المستند الخاص بها كجزء من واجهة برمجة التطبيقات العامة).
بشكل عام، ننصحك بإجراء تعديلات على الأنماط المخصّصة للمكوّنات باستخدام فئاتك الخاصة. ربما لاحظت بعض فئات 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، والذي يتضمّن وظيفة مدمجة تعرض تصنيفًا عائمًا وتفعّل تأثير التموج عند اللمس.

تثبيت حقل 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
توضّح حقول النص ما إذا كان إدخال الحقل صالحًا أو يحتوي على خطأ، وذلك باستخدام السمات التي توفّرها واجهة برمجة التطبيقات للتحقّق من صحة النماذج في 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/. من المفترض أن تظهر الآن صفحة تتضمّن حقلَين نصيَّين لاسم المستخدم وكلمة المرور.
انقر على الحقول النصية للاطّلاع على حركة التصميم العائم وحركة تموّج الخط (خط الحدود السفلي الذي يتموّج إلى الخارج):

4. إضافة أزرار
بعد ذلك، سنضيف زرَّين إلى صفحة تسجيل الدخول: "إلغاء" و"التالي". سنستخدم مكوّن "زر" في MDC، بالإضافة إلى مكوّن "تموّج" في MDC، لإكمال تأثير التموّج المميز في التصميم المتعدد الأبعاد.

تثبيت زر 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'));
بما أنّنا لا نحتاج إلى الاحتفاظ بمرجع إلى مثيل التموج، ليس من الضروري تعيينه إلى متغيّر.
هذا كل شيء! إعادة تحميل الصفحة سيظهر تموّج حبر عند النقر على كل زر.

املأ الحقول النصية بقيم صالحة، ثم اضغط على الزر "التالي". أحسنت! ستواصل العمل على هذه الصفحة في MDC-102.
5- ملخّص
باستخدام ترميز HTML الأساسي وبضعة أسطر فقط من CSS وJavaScript، ساعدتك مكتبة Material Components for the web في إنشاء صفحة تسجيل دخول جميلة تتوافق مع إرشادات التصميم المتعدد الأبعاد، وتظهر وتعمل بشكل متسق على جميع الأجهزة.
الخطوات التالية
"حقل النص" و"الزر" و"التأثير المتتالي" هي ثلاثة مكونات أساسية في مكتبة MDC Web، ولكن هناك المزيد. يمكنك أيضًا استكشاف بقية المكوّنات في MDC Web.
يمكنك الانتقال إلى MDC-102: بنية وتصميم Material Design للتعرّف على لائحة التنقل وقائمة الصور. نشكرك على تجربة Material Components. نأمل أن يكون هذا الدرس التطبيقي حول الترميز قد نال إعجابك.