إنشاء الصفحات عبر Bootstrap و Angular Material

سنقوم بدايةً بتنزيل الخطوط التي سنعتمدها في المشروع عن طريق الروابط أدناه:

  1. الخط الكوفي
  2. GE_SS_Two_Bold


ثم سنقوم بترتيب مجلدات الـ assets لتكون على النحو التالي:



بعد إنشاء هذه المجلدات سنضع الخطوط بعد أن ننزلها في مجلد الـ fonts:



بعد ذلك ولكي نجعل كل العناصر بنفس الخط سنقوم باستدعاء الخطوط في ملف الـ style.scss الأساسي:

@font-face {
font-family: 'DroidKufi-Regular';
/* ../../webfonts/DroidKufi-Regular.ttf */
src: url('./assets/fonts/DroidKufi-Regular.ttf') format('truetype');
}

@font-face {
font-family: 'GE_SS_Two_Bold';
src: url('./assets/fonts/GE_SS_Two_Bold.eot') format('embedded-opentype');
}

* {
font-family: 'DroidKufi-Regular', 'DroidKufi-Regular' !important;
}


لربط مكتبة البوتستراب بالمشروع لا بد من كتابة الأكواد التالية في ملف الـ angular.json

            "styles": [
              "src/styles.scss",
              "src/assets/bootstrap/bootstrap.min.css"
            ],
            "scripts": [
              "src/assets/bootstrap/bootstrap.bundle.min.js",
              "src/assets/bootstrap/popper.min.js",
              "src/assets/bootstrap/bootstrap.min.js"
            ]

صفحة تسجيل الدخول:


يمكننا إضافة الشعار بهذا النحو أدناه:
<img src="../../../assets/images/logos/logo.svg" class="mx-auto d-block" [alt]="'WEBSITE_NAME' | translate">



يمكننا جعل صفحة تسجيل الدخول بهذا الجمال عن طريق الأكواد البسيطة أدناه:

يكون محتوى الـ div الحاوي بهذا النحو:

<div class="container-fluid h-100 bg-image"
style="background-image: url(./assets/images/misc/bg-Doctor-and-child.jpg);
background-size: 100% 100%;
background-repeat: no-repeat;
background-position: left top;">

بعدها نقوم بإنشاء div يحتوي على card تسجيل الدخول ومحتويات الـ div كالتالي:

<div class="d-flex justify-content-center align-items-center h-100">

 الكلاسات المهمة لـ bootstrap ستجدونها في الرابط أدناه:

https://www.w3schools.com/bootstrap/bootstrap_ref_all_classes.asp

ومن هنا يمكنكم النظر بتمعن في كافة إمكانيات الـ bootstrap

https://www.w3schools.com/bootstrap/bootstrap_images.asp


أدناه ستجد بعض الكلاسات المهمة التي تختصر عليك الوقت والعناء:

المهمة

الكلاس

الحاوية

.container

الصف

.row

الأعمدة التابعة للصف وأحجامها وهي للـ Grid

.col-[size]-[1-12]

[size : sm , lg , md … ]

لجعل الصورة سريعة الاستجابة

.img-fluid 

لجعل الصورة ذات إطار دائري 

.rounded-circle

لجعل الحوّاف ناعمة

.rounded-pill

لإضافة ظل إلى الصورة

.shadow

لتوسيط الصورة أو الكائن
(التوسيط عن طريق الفلكس)

.mx-auto .d-block

.d-flex 

.justify-content-center

.align-items-center

d-flex justify-content-center*

style="margin: 0 auto; display: block;"

الهوامش

.mb-4 .mt-2 .mr-2 .ml-3

الهوامش الداخلية

.pb-5 .pt-3 .pr-2 .pl-2

توسيط النص

text-center

هذا الكود ليس ضمن bootstrap ولكنه مهم لتقسيم الأيقونات وجعلها في الجانب الأيسر

<span style="flex:auto !important;"></span>

هذا الكلاس للتباعد بين السطور للمزيد:

.lh-lg

لتغيير لون الخط ويمكننا تخفيف الشفافية عن طريق إضافة 50 في الأخير
(هذه الكلاس يشمل الألوان الأساسية في bootstrap مثل primary, danger وغيره)

.text-white-50

.text-black-50

.text-white

.text-black


font-weight-bold

هذا الجدول أعلاه بمساعدة من أ. علي العبدالله

ملاحظة مهمة، بهذه البساطة أدناه يمكننا إخفاء وإظهار الكائنات في الصفحة:

[style.display]="fullscreen == false ? 'inline' : 'none'"


كود لأيقونة ملء وإلغاء ملء الشاشة:

                <!-- ملء الشاشة -->
                <div>
                    <button mat-button matTooltip="ملء الشاشة" matTooltipPosition="below" matTooltipHideDelay="1000"
                        #_openFullscreen id="kt_open_fullscreen" (click)="openFullscreen()"
                        [style.display]="fullscreen == false ? 'inline' : 'none'">
                        <mat-icon matListIcon>fullscreen</mat-icon>
                    </button>
                </div>
                <!-- إلغاء ملء الشاشة -->
                <div>
                    <button mat-button #_closeFullscreen matTooltip="الخروج من وضع ملء الشاشة"
                        matTooltipPosition="below" matTooltipHideDelay="1000" id="kt_close_fullscreen"
                        (click)="closeFullscreen()" [style.display]="fullscreen == true ? 'inline' : 'none'">
                        <mat-icon matListIcon>fullscreen_exit</mat-icon>
                    </button>
                </div>


دوال ملء وإلغاء ملء الشاشة:

  elem: any;

  openFullscreen() {
    if (this.elem.requestFullscreen) {
      this.elem.requestFullscreen();
    } else if (this.elem.mozRequestFullScreen) {
      /* Firefox */
      this.elem.mozRequestFullScreen();
    } else if (this.elem.webkitRequestFullscreen) {
      /* Chrome, Safari and Opera */
      this.elem.webkitRequestFullscreen();
    } else if (this.elem.msRequestFullscreen) {
      /* IE/Edge */
      this.elem.msRequestFullscreen();
    }
    this.fullscreen = true;
  }

  /* Close fullscreen */
  closeFullscreen() {
    if (this.document.exitFullscreen) {
      this.document.exitFullscreen();
    } else if (this.document.mozCancelFullScreen) {
      /* Firefox */
      this.document.mozCancelFullScreen();
    } else if (this.document.webkitExitFullscreen) {
      /* Chrome, Safari and Opera */
      this.document.webkitExitFullscreen();
    } else if (this.document.msExitFullscreen) {
      /* IE/Edge */
      this.document.msExitFullscreen();
    }
    this.fullscreen = false;
  }


بعد ذلك علينا أن ندرج شعار المركز فوق نموذج تسجيل الدخول ثم نوسطه على مستوى div تسجيل الدخول:








تعليقات

المشاركات الشائعة من هذه المدونة

ngx-extended-pdf-viewer

how to getting access token for https://fcm.googleapis.com/v1/projects/al-ayahya-co/messages:send for angular and backend nestjs

طريقة تفعيل زر Inline Keyboard في Telegram Bot