<?xml version="1.0"?>
<rss version="2.0"><channel><title>&#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629;: &#x625;&#x637;&#x627;&#x631; &#x639;&#x645;&#x644; Bootstrap</title><link>https://academy.hsoub.com/programming/css/bootstrap/?d=2</link><description>&#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629;: &#x625;&#x637;&#x627;&#x631; &#x639;&#x645;&#x644; Bootstrap</description><language>ar</language><item><title>&#x643;&#x64A;&#x641; &#x62A;&#x628;&#x631;&#x645;&#x62C; &#x645;&#x648;&#x642;&#x639; &#x648;&#x64A;&#x628; &#x628;&#x633;&#x64A;&#x637; &#x628;&#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; HTML &#x648; CSS &#x648; Bootstrap</title><link>https://academy.hsoub.com/programming/css/bootstrap/%D9%83%D9%8A%D9%81-%D8%AA%D8%A8%D8%B1%D9%85%D8%AC-%D9%85%D9%88%D9%82%D8%B9-%D9%88%D9%8A%D8%A8-%D8%A8%D8%B3%D9%8A%D8%B7-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-html-%D9%88-css-%D9%88-bootstrap-r2370/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2024_07/---.png.a1c8ae15ddc35917b16ba9932cfa0dc4.png" /></p>
<p>
	هل تريد أن تتعلم طريقة بناء موقع ويب باستخدام لغة التوصيف HTML ولغة التنسيق CSS وإطار بوتستراب Bootstrap، إذا كان الجواب نعم فهذا المقال لك حيث سنشرح لك من خلاله جميع الخطوات اللازمة للانتقال من شاشة فارغة في المتصفح إلى موقع ويب جميل، ونتعلم كيف تنسق عناصره بطريقة احترافية وأنيقة في نفس الوقت. ولكن في البداية لنتعرف بشكل موجز ما هي لغة HTML ولغة CSS وفيم تستخدمان؟
</p>

<h2 id="htmlcss">
	ما هي لغة HTML ولغة CSS
</h2>

<p>
	يستخدم أي موقع ويب كلًا من HTML و CSS في بناءه، وهاتان اللغتان مرتبطتان مع بعضهما البعض ارتباطًا وثيقًا، أي لا يمكن الاستغناء عن أي منهما في صفحة الويب، وإليك تعريفًا مبسطًا لكل منهما.
</p>

<ul>
	<li>
		<strong><a href="https://wiki.hsoub.com/HTML" rel="external">HTML</a></strong> هي اختصار لعبارة Hypertext Markup Language وهي لغة توصيفية أي أنها تُوصّف بنية صفحة الويب ومحتوياتها.
	</li>
	<li>
		<strong><a href="https://wiki.hsoub.com/CSS" rel="external">CSS</a> </strong>هي اختصار لعبارة Cascading Style Sheets وهي لغة تنسيقية مسؤولة عن تصميم صفحة الويب وتنسيق عناصرها.
	</li>
</ul>

<p>
	ملاحظة: يوجد فرق بين مصطلح صفحة ويب ومصطلح موقع ويب فعندما نقول صفحة ويب "web page" فنحن نعني ملف HTML واحد، أما عندما نقول موقع ويب "website" فنحن نعني مجموعة من ملفات HTML مترابطة والتي تكوّن مع بعضها موقع الويب ككل.
</p>

<h2 id="">
	متطلبات العمل
</h2>

<ul>
	<li>
		أول أمر ستحتاجه قبل البدء بإنشاء موقع ويب باستخدام HTML و CSS هو <a href="https://academy.hsoub.com/apps/web/%D8%A3%D9%86%D9%88%D8%A7%D8%B9-%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D8%B6%D8%A7%D9%81%D8%A7%D8%AA-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D8%AE%D8%AA%D9%8A%D8%A7%D8%B1-%D8%A3%D9%81%D8%B6%D9%84-%D8%A7%D8%B3%D8%AA%D8%B6%D8%A7%D9%81%D8%A9-%D9%84%D9%85%D9%88%D9%82%D8%B9%D9%83-%D8%A3%D9%88-%D9%85%D8%AA%D8%AC%D8%B1%D9%83-%D8%A7%D9%84%D8%A5%D9%84%D9%83%D8%AA%D8%B1%D9%88%D9%86%D9%8A-r392/" rel="">خادم أو استضافة لموقع الويب</a> فالخادم هو الحاسوب الذي سيقوم باستضافة ملفات الموقع. وفي هذا المجال يوجد الكثير من <a href="https://academy.hsoub.com/apps/web/%D8%A3%D9%86%D9%88%D8%A7%D8%B9-%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D8%B6%D8%A7%D9%81%D8%A7%D8%AA-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D8%AE%D8%AA%D9%8A%D8%A7%D8%B1-%D8%A3%D9%81%D8%B6%D9%84-%D8%A7%D8%B3%D8%AA%D8%B6%D8%A7%D9%81%D8%A9-%D9%84%D9%85%D9%88%D9%82%D8%B9%D9%83-%D8%A3%D9%88-%D9%85%D8%AA%D8%AC%D8%B1%D9%83-%D8%A7%D9%84%D8%A5%D9%84%D9%83%D8%AA%D8%B1%D9%88%D9%86%D9%8A-r392/" rel="">أنواع الاستضافات</a> التي يمكنك الاختيار من بينها، وما عليك سوى البحث عن الاستضافة المناسبة لمتطلباتك.
	</li>
	<li>
		بعد الحصول على الخادم، الشيء التالي الذي تحتاجه هو اسم نطاق <code>domain name</code> وهو يمثل عنوان الموقع على الإنترنت، حيث يكتبه المستخدمون في المتصفح للوصول إلى موقعك. على سبيل المثال اسم النطاق لموقع شركة حسوب هو <a href="https://www.hsoub.com/" rel="external">hsoub.com</a>
	</li>
	<li>
		بعد توفر الاستضافة والنطاق عليك ربطهما مع بعضهما البعض، وفي حال حصلت على الاستضافة والنطاق من نفس الشركة ستتولى هذه الشركة العمل النيابة عنك وتقوم بالإعدادات التالية:
	</li>
</ul>

<ol>
	<li>
		تجهيز حساب استضافة خاص بك.
	</li>
	<li>
		حجز وتسجيل اسم النطاق.
	</li>
	<li>
		تجهيز بيئة العمل وإعدادات للربط بين الخادم واسم النطاق.
	</li>
	<li>
		إنشاء لوحة تحكم تستطيع من خلالها التحكم الكامل بموقعك.
	</li>
</ol>

<p>
	<strong>ملاحظة:</strong> إذا كنت ترغب فقط في تجربة إنشاء موقع ويب بسيط على حاسوبك بغرض التعلم ولا تنوي جعله عامًا لتصفحه الجميع من خلال شبكة الإنترنت، فيمكنك أن تنشئ كافة الملفات الخاصة بالموقع على جهازك المحلي وتتصفحها مباشرة من أي متصفح ويب، كما يمكنك تحويل حاسوبك إلى خادم ويب محلي تثبيت برنامج يُسمى <a href="https://academy.hsoub.com/devops/servers/%D8%AF%D9%84%D9%8A%D9%84-%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF-%D8%AE%D8%A7%D8%AF%D9%85-%D9%88%D9%8A%D8%A8-%D9%85%D8%AD%D9%84%D9%8A-%D8%AE%D8%B7%D9%88%D8%A9-%D8%A8%D8%AE%D8%B7%D9%88%D8%A9-r422/" rel="">XAMPP </a>(وهذه الخطوة ضرورية فقط في حال تطوير مواقع ديناميكية وليست إلزامية للمواقع الثابتة كموقعنا الحالي فهو لا يحتاج لمعالجة من طرف الخادم لكن تثبيت الخادم يساعدك على فهم كيفية عمل خوادم الويب وكيفية استضافة الملفات محليًا، مما يسهل فهم عملية تطوير المواقع قبل نشرها على الإنترنت).
</p>

<h3 id="1html">
	1. تعلم أساسيات HTML
</h3>

<p>
	إن العنصر أو المكون الأساسي في بنية لغة HTML هو ما يعرف بالوسم <strong>tag</strong> الذي يمكن أن يبدو كما يلي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_8" style=""><span class="tag">&lt;b&gt;</span><span class="pln"> SOMETHING </span><span class="tag">&lt;/b&gt;</span></pre>

<p>
	استخدمنا في هذا المثال الوسم <code>&lt;b&gt;</code> الذي يجعل النص غامقًا، وهذا الوسم يبدأ بوسم الفتح <code>&lt;b&gt;</code> وينتهي بوسم الإغلاق <code>&lt;b/&gt;</code> وستكون النتيجة في هذه الحالة عرض النص بين الوسمين بخط غامق على الصفحة <strong>SOMETHING</strong>.
</p>

<p>
	هنالك طبعًا الكثير من الوسوم tags الأخرى في لغة HTML نذكر منها على سبيل المثال:
</p>

<ul>
	<li>
		الوسم <code>&lt;i&gt; -- &lt;/i&gt;</code> الذي يحول النص الموجود بين وسمي الفتح والإغلاق إلى نص مائل.
	</li>
	<li>
		الوسم <code>&lt;u&gt; -- &lt;/u&gt;</code> الذي يضع سطرًا تحت النص.
	</li>
	<li>
		الوسم <code>&lt;p&gt; -- &lt;/p&gt;</code> الذي يتضمن فقرة من النص.
	</li>
	<li>
		الوسم <code>&lt;h1&gt; -- &lt;/h1&gt;</code> الذي يحول النص ضمنه إلى عنوان رئيسي.
	</li>
</ul>

<p>
	إن هذه الوسوم وسوم بسيطة، ولكن يوجد هناك وسوم أكثر تعقيدًا فعلى سبيل المثال إذا أردت إنشاء القائمة التالية:
</p>

<ul>
	<li>
		item 1
	</li>
	<li>
		item 2
	</li>
	<li>
		item 3
	</li>
</ul>

<p>
	سيتوجب عليك في هذه الحالة كتابة كود HTML التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_10" style=""><span class="tag">&lt;ul&gt;</span><span class="pln">
</span><span class="tag">&lt;li&gt;</span><span class="pln">Item 1</span><span class="tag">&lt;/li&gt;</span><span class="pln">
</span><span class="tag">&lt;li&gt;</span><span class="pln">Item 2</span><span class="tag">&lt;/li&gt;</span><span class="pln">
</span><span class="tag">&lt;li&gt;</span><span class="pln">Item 3</span><span class="tag">&lt;/li&gt;</span><span class="pln">
</span><span class="tag">&lt;/ul&gt;</span></pre>

<p>
	وإذا أردت أن تضيف رابطًا لصفحة وليكن مثلًا رابط للصفحة الرئيسية لأكاديمية حسوب ضمن صفحتك فيجب عليك إضافة الوسم التالي إلى كود HTML:
</p>

<pre class="ipsCode">&lt;a href="https://academy.hsoub.com"&gt;Hsoub Academy&lt;/a&gt; 
</pre>

<p>
	وللتعرف على المزيد من المعلومات حول وسوم HTML وطبيعة عملها ننصح بمطالعة <a href="https://wiki.hsoub.com/HTML" rel="external">توثيق HTML</a> على موسوعة حسوب.
</p>

<h3 id="2html">
	2. فهم بنية ملف HTML
</h3>

<p>
	يمكنك أن تعتبر صفحة الويب عبارة عن بناء مؤلف من مجموعة من المكعبات المرصوفة بجانب بعضها البعض لنحصل في النهاية على صفحة HTML وفق هيكل معين مؤلف من عدد من الوسوم tags.
</p>

<p>
	وفيما يلي أبسط بنية لصفحة HTML:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_17" style=""><span class="dec">&lt;!doctype html&gt;</span><span class="pln">
</span><span class="tag">&lt;html</span><span class="pln"> </span><span class="atn">lang</span><span class="pun">=</span><span class="atv">"en"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;head&gt;</span><span class="pln">
        </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">charset</span><span class="pun">=</span><span class="atv">"utf-8"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;title&gt;</span><span class="pln">Hello, world!</span><span class="tag">&lt;/title&gt;</span><span class="pln">
    </span><span class="tag">&lt;/head&gt;</span><span class="pln">
    </span><span class="tag">&lt;body&gt;</span><span class="pln">
        </span><span class="tag">&lt;h1&gt;</span><span class="pln">Hello, world!</span><span class="tag">&lt;/h1&gt;</span><span class="pln">
        </span><span class="tag">&lt;p&gt;</span><span class="pln">My first web page.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
    </span><span class="tag">&lt;/body&gt;</span><span class="pln">
</span><span class="tag">&lt;/html&gt;</span></pre>

<p>
	يمكنك أن تنسخ هذا الكود وتلصقه في ملف نصي جديد، وتحفظه باسم index.html وبذلك تكون حصلت على صفحة HTML صالحة للعرض في متصفح الويب.
</p>

<p>
	ولنبدأ بشرح هذا الكود بشكل مفصل:
</p>

<ul>
	<li>
		الوسم <code>&lt;doctype html!&gt;</code> يخبرنا أن نوع الملف هو ملف HTML أي صفحة ويب.
	</li>
	<li>
		الوسم <code>&lt;"html lang="en&gt;</code> يدل على أن اللغة المكتوب بها هذا الملف هي اللغة الانكليزية.
	</li>
	<li>
		الوسم <code>&lt;head&gt;</code> يدل على بداية ترويسة الصفحة، ونضع فيه جميع الإعدادات والبيانات الوصفية (meta tags) لهذه الصفحة ، ولا يتم عرض معظم تلك المعلومات على الشاشة لكنها تكون موجهة <a href="https://academy.hsoub.com/marketing/search-engine-optimisation/%D8%A7%D9%84%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%AA%D9%8A-%D8%AA%D8%AA%D8%A8%D8%B9%D9%87%D8%A7-%D9%85%D8%AD%D8%B1%D9%83%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%AD%D8%AB-%D9%81%D9%8A-%D9%81%D9%87%D8%B1%D8%B3%D8%A9-%D8%A7%D9%84%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-r647/" rel="">لمحركات البحث</a>.
	</li>
	<li>
		الوسم <code>&lt;"meta charset="utf-8&gt;</code> يحدد نوع ترميز الأحرف المستخدم في الصفحة.
	</li>
	<li>
		الوسم <code>&lt;title&gt;Hello, world!&lt;/title&gt;</code> يمثل عنوان الصفحة وهو ما سيراه الزائرون في شريط عنوان متصفحاتهم.
	</li>
	<li>
		الوسم <code>&lt;body&gt;</code> يمثل بداية جسم الصفحة وفيه نضع كل محتوى الصفحة، ونعود ونكرر أن هذا المكان هو الجزء الرئيسي لملف HTML لأنه الجزء المرئي الذي سيظهر لزوار الموقع.
	</li>
	<li>
		الوسم <code>&lt;h1&gt;Hello, world!&lt;/h1&gt;</code> يمثل العنوان الرئيسي للصفحة.
	</li>
	<li>
		الوسم <code>&lt;p&gt;My first web page.&lt;/p&gt;</code> يعبر عن فقرة نصية.
	</li>
	<li>
		الوسم يدل على نهاية ملف HTML.
	</li>
</ul>

<p>
	ملاحظة مهمة: ننصحك باختيار <a href="https://academy.hsoub.com/programming/javascript/%D9%85%D8%AD%D8%B1%D8%B1%D8%A7%D8%AA-%D8%A7%D9%84%D8%B4%D9%8A%D9%81%D8%B1%D8%A9-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A9-r666/" rel="">محرر شيفرات برمجية</a> مناسب لكتابة تعليمات HTML مثل فيجوال ستوديو كود Visual Studio Code أو Sublime Text فهي مجانية ولها إصدارات على نظام التشغيل ويندوز ونظام التشغيل mac وتسهل عليك كتابة الكود وتوفر ميزات مثل تلوين التعليمات البرمجية لتسهل عليك قراءتها وتمييزها بصريًا.
</p>

<p>
	إليك مثالًا على كود HTML مكتوب ضمن محرر Sublime:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="153713" href="https://academy.hsoub.com/uploads/monthly_2024_07/htmlcode.jpg.8b01bd8441a80696d9d7d40f4f3033f9.jpg" rel=""><img alt="html code" class="ipsImage ipsImage_thumbnailed" data-fileid="153713" data-unique="f2y3s0fzz" style="width: 500px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_07/htmlcode.jpg.8b01bd8441a80696d9d7d40f4f3033f9.jpg"> </a>
</p>

<p>
	تستطيع بعد الانتهاء من كتابة الملف أن تنسخه وتضعه صف ضمن المجلد الرئيسي للخادم المحلي الذي نصبته على جهازك وتستعرض هذا الملف من خلال المتصفح، لن يكون شكل الصفحة جميلًا حاليًا وسيظهر كما في الشكل التالي:
</p>

<p style="text-align: center;">
	<img alt="html page.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="153714" data-ratio="66.60" data-unique="oiu2oewhb" style="width: 500px; height: auto;" width="686" src="https://academy.hsoub.com/uploads/monthly_2024_07/htmlpage.jpg.801fea1437074fda0952c494a3500e7b.jpg"><a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="153713" href="https://academy.hsoub.com/uploads/monthly_2024_07/htmlcode.jpg.8b01bd8441a80696d9d7d40f4f3033f9.jpg" rel=""> </a>
</p>

<p>
	تحتاج هذه الصفحة للكثير من التحسينات قبل عرضها على زوار الموقع، وهو ما سننجزه في الفقرات التالية.
</p>

<h3 id="3css">
	3. تعلم أساسيات كتابة محددات CSS
</h3>

<p>
	<a href="https://academy.hsoub.com/programming/css/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D9%84%D8%BA%D8%A9-css/" rel="">لغة CSS</a> هي المسؤولة عن وضع التنسيقات لصفحة HTML وجعلها تبدو أكثر جمالًا وتملك CSS ما يعرف بالمحددات <a href="https://academy.hsoub.com/programming/css/%D8%A3%D9%86%D9%88%D8%A7%D8%B9-%D9%85%D8%AD%D8%AF%D8%AF%D8%A7%D8%AA-%D8%A7%D9%84%D8%AA%D9%86%D8%B3%D9%8A%D9%82-%D9%81%D9%8A-css-r2044/" rel="">Selectors</a> والتي تصف طريقة ظهور العنصر في الصفحة كما في المثال التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_22" style=""><span class="pln">p {
    font-size: 18px;
}</span></pre>

<p>
	يعلمنا هذا المحدد أن حجم نص الفقرة في هذه الصفحة هو 18 بكسل، ومع ذلك فإن الطريقة الأفضل لتنسيق العناصر هي إنشاء أصناف classes وتعيينها لكل وسم على حدا. على سبيل المثال يمكن أن نكتب محدد الصنف class selector في لغة CSS بالطريقة التالية:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3773_24" style=""><span class="pun">.</span><span class="pln">normal-text </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">font-size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">18px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	لاحظ أن النقطة (.) تدل هنا على أن هذا التنسيق هو لصنف class يحمل الاسم normal-text وبالتالي أي وسم ضمن الصفحة لديه هذا الصنف سيكون حجم الخط فيه هو 18 بكسل، وهكذا يمكن تطبيق هذا المحدد على وسم الفقرة النصية كما يلي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_26" style=""><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"normal-text"</span><span class="tag">&gt;</span><span class="pln">This text is going to be 18px.</span><span class="tag">&lt;/p&gt;</span></pre>

<p>
	لنشرح كود CSS المذكور أعلاه بشيء من التفصيل:
</p>

<ul>
	<li>
		عرفنا صنف باسم <code>normal-text.</code> وكل شيء يأتي بعده نضعه ضمن قوسي الفتح والإغلاق <code>{}</code> ونكتب ضمن هذين القوسين كل قواعد التنسيق التي ستحدد شكل العناصر التي تأخذ هذا الصنف .
	</li>
	<li>
		الخاصية font-size هي مثال لأحد خواص CSS وهي تحدد حجم الخط.
	</li>
	<li>
		18 بكسل هي القيمة المعينة لهذه الخاصية.
	</li>
	<li>
		هناك الكثير من خصائص CSS التي يمكنك الاطلاع عليها من خلال <a href="https://wiki.hsoub.com/CSS" rel="external">توثيق CSS على موسوعة حسوب</a>
	</li>
</ul>

<h3 id="4csshtml">
	4. دمج تنسيقات CSS ضمن صفحة HTML
</h3>

<p>
	إن ملف HTML هو ملف مهيكل للغاية، فكل عنصر فيه يجب أن يكون في مكانه، وترتيب العناصر مهم للغاية للبنية النهائية ومظهر صفحة الويب المعنية. أما مستند CSS فهو أقل تنظيمًا. يطلق على مستندات CSS عادة اسم ورقات الأنماط المتتالية وورقة الأنماط هي قائمة تتضمن كل تعاريف الأصناف المستخدمة في مستند HTML المقابل. وترتيب هذه التعاريف ليس مهمًا بالضرورة (على الأقل بالنسبة للتصاميم البسيطة). وبالتالي لتنشئ ورقة أنماط CSS عليك تعريف كل صنف class واحدًا تلو الآخر وتعريف الخصائص والتنسيقات المطلوبة ضمنه، ثم تطبيقه على عنصر HTML وعرضه لاختبار ما إذا كانت النتيجة في تصميم صفحتك هي ما تريده. قد يكون هذا عملًا شاقًا ويستغرق وقتًا، وللسهولة يمكن اللجوء لحل أكثر بساطة والاستعانة بإطار عمل يسمى بوتستراب Bootstrap بدلًا من كتابة كافة أصناف CSS من الصفر، وهو ما سنتطرق لشرحه في الفقرات التالية.
</p>

<h3 id="5bootstrap">
	5. تثبيت Bootstrap
</h3>

<p>
	<a href="https://academy.hsoub.com/programming/css/bootstrap/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-5-r1315/" rel="">بوتستراب Bootstrap</a> هو أداة مفتوحة المصدر لإنشاء مواقع الويب باستخدام HTML و CSS، وبتعريف أبسط يوفر بوتستراب Bootstrap إطارًا يضمن أن الهيكل الرئيسي لصفحة الويب جاهز ومحسن لمزيد من التطوير ويسهل عليك تصميم صفحة الويب وتنسيقها فهو يحتوي على عدد كبير من الأصناف classes الجاهزة مسبقة التنسيق التي تزيد من جمالية صفحة الويب الخاصة بك.
</p>

<p>
	باستخدامك لإطار عمل Bootstrap لن تضطر إلى البدء من الصفر في التعلم لأنه سوف ينقلك إلى الجزء الممتع من عملية بناء موقع الويب باستخدام HTML و CSS.
</p>

<p>
	أمامك طريقتان لتعلم طريقة التعامل مع <a href="https://academy.hsoub.com/programming/css/bootstrap/" rel="">بوتستراب Bootstrap</a> لتنسيق موقعك:
</p>

<ul>
	<li>
		المسار الأول: تعلم Bootstrap من خلال الذهاب إلى الصفحة الرئيسية وتحميل حزمة Bootstrap الرئيسية والبدء في اكتشاف محتوياتها و البناء عليها.
	</li>
	<li>
		المسار الثاني: وهو المسار المختصر ويكون بتحميل تصميم جاهز لصفحة ويب مطبق عليها تنسيقات بوتستراب Bootstrap، مما يوفر الوقت والجهد في تصميم الصفحة من الصفر.
	</li>
</ul>

<p>
	قد يتضمن المسار الأول بعض الصعوبة في التعلم في البداية ولكنه خيار جيد لإنشاء صفحات الويب باستخدام HTML و CSS فبمجرد تعلمك التقنيات الأساسية للتعامل مع Bootstrap سيكون من السهل عليك إنشاء مواقع ويب بتصميمات جميلة وجذابة، ولكي تبدأ بهذا المسار ننصحك بقراءة توثيق بوتستراب الرسمي أو يمكنك الاطلاع على <a href="https://wiki.hsoub.com/Bootstrap" rel="external">توثيق بوتستراب باللغة العربية</a> من موسوعة حسوب.
</p>

<p>
	سنختار في مقالنا هذا المسار الثاني بالبدء بهيكل جاهز ومعد مسبقًا يوفر عليك الكثير من الجهد في التعلم ويساعدك على تنسيق المحتوى بسرعة واحترافية.
</p>

<h3 id="6">
	6. اختيار التصميم
</h3>

<p>
	عندما تنشئ موقع ويب باستخدام لغة التوصيف HTML ولغة التنسيق CSS يكون لديك الحرية الكاملة في اختيار قالب Bootstrap الذي يناسبك ويناسب موقعك. سوف نستخدم في هذا المثال التوضيحي أحد القوالب البسيطة التي يوفرها موقع <a href="https://startbootstrap.com/" rel="external nofollow">startbootstrap</a> لغرض التعلم مع أنه يوجد الكثير من القوالب المجانية الجميلة والتي تم تحسينها والمصممة بشكل ممتاز وتعمل بدون أي مشكلة.
</p>

<p>
	سنستخدم في هذا المقال قالبًا مجانًيًا يدعى <a href="https://startbootstrap.com/theme/creative" rel="external nofollow">Creative</a> وستكون النتيجة النهائية للصفحة كما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="153709" href="https://academy.hsoub.com/uploads/monthly_2024_07/bootstrapexample.jpg.07522e972a7d3e5c95e5d8f55277f2d6.jpg" rel=""><img alt="bootstrap example" class="ipsImage ipsImage_thumbnailed" data-fileid="153709" data-unique="p2filkbbo" style="width: 286px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_07/bootstrapexample.thumb.jpg.709f619547ffdc2988d53edd5e596235.jpg"> </a>
</p>

<p>
	لتحميل هذا القالب اضغط على الزر تحميل مجاني Free Download الموجود على يمين <a href="https://startbootstrap.com/theme/creative" rel="external nofollow">هذه الصفحة</a> أو حمله من هنا مباشرة <a class="ipsAttachLink" data-fileext="zip" data-fileid="153718" href="https://academy.hsoub.com/applications/core/interface/file/attachment.php?id=153718&amp;key=ba9315c6f95f68a0ea7ec94c1cf1cf3a" rel="">startbootstrap-creative-gh-pages.zip</a>
</p>

<p>
	ثم احفظ الملف المضغوط على جهازك، وبعد تحميله فك ضغطه وانقل المجلد الناتج إلى المجلد الرئيسي لخادمك المحلي، أو إلى ارفع الملفات على استضافة موقعك وافتح الموقع الآن من خلال المتصفح وستشاهد هذه الصفحة الجميلة بالشكل التالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="153710" href="https://academy.hsoub.com/uploads/monthly_2024_07/bootstrapexample1.jpg.8d2f5db8afa711a55149224762878ba4.jpg" rel=""><img alt="bootstrap example1" class="ipsImage ipsImage_thumbnailed" data-fileid="153710" data-unique="tsxejq8h7" style="width: 500px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_07/bootstrapexample1.jpg.8d2f5db8afa711a55149224762878ba4.jpg"> </a>
</p>

<p>
	بالرغم من أنك ستشاهد صفحة ويب جميلة ومنسقة بالكامل، إلا أن عليك الآن أن تتعلم طريقة الحصول على مثل هذه الصفحة وتخصيصها بالطريقة التي تناسبك باستخدام أكواد HTML و CSS.
</p>

<h3 id="7htmlcss">
	7. تخصيص الموقع باستخدام HTML وCSS
</h3>

<p>
	في البداية سنعمل على تصميم الصفحة الرئيسية والتي من خلالها سنوضح طريقة تنسيق النصوص والصور وكل شيء في الصفحة بشكل عام.
</p>

<p>
	تحدثنا في فقرة سابقة بشكل موجز عن قسم <code>&lt;head&gt;</code> في صفحة HTML لنشرح هذا القسم بشيء من التفصيل.
</p>

<p>
	عندما تفتح الملف index.html من قالب بوستراب الجاهز سيكون قسم الرأس <code>&lt;head&gt; </code>مشابهًا لما يلي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_33" style=""><span class="tag">&lt;head&gt;</span><span class="pln">

  </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">charset</span><span class="pun">=</span><span class="atv">"utf-8"</span><span class="tag">&gt;</span><span class="pln">
  </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"viewport"</span><span class="pln"> </span><span class="atn">content</span><span class="pun">=</span><span class="atv">"width=device-width, initial-scale=1, shrink-to-fit=no"</span><span class="tag">&gt;</span><span class="pln">

  </span><span class="tag">&lt;title&gt;</span><span class="pln">Creative - Start Bootstrap Theme</span><span class="tag">&lt;/title&gt;</span><span class="pln">

  </span><span class="com">&lt;!-- Theme CSS - Includes Bootstrap --&gt;</span><span class="pln">
  </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"css/creative.min.css"</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="tag">&gt;</span><span class="pln">

</span><span class="tag">&lt;/head&gt;</span></pre>

<p>
	ملاحظة: للسهولة أزلنا الأشياء غير الأساسية من هذا الكود مثل كود تحميل خطوط جوجل وأيقونات Font Awesome ووحدة Lightbox للصور المعروضة على الصفحة.
</p>

<p>
	لقد تعرفنا فيما سبق على معظم أسطر هذا الكود، ولكن سنشرح الأسطر الجديدة:
</p>

<ul>
	<li>
		<p>
			بداية كل ما هو مكتوب بين هذين القوسين <code>&lt;!--...--&gt; </code>هو تعليقات لن تظهر على الصفحة عند عرضها في المتصفح.
		</p>
	</li>
	<li>
		<p>
			سطر الكود التالي <code>&lt;meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"&gt;</code> هو سطر خاص بإطار بوتستراب وهو يحدد حجم إطار العرض viewport لموقع الويب لجعله <a href="https://academy.hsoub.com/programming/css/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%AA%D8%B5%D9%85%D9%8A%D9%85-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-%D8%A7%D9%84%D9%85%D8%AA%D8%AC%D8%A7%D9%88%D8%A8-r1499/" rel="">متجاوبًا</a> مع كافة أحجام الشاشات.
		</p>
	</li>
	<li>
		<p>
			السطر <code>&lt;link href="css/creative.min.css" rel="stylesheet"&gt;</code> يربط ملف CSS خارجي مع ملف HTML، ولمزيد من السهولة سنقوم بتعديل هذا السطر ليصبح<code> &lt;link href="css/creative.css" rel="stylesheet"&gt;</code> والاختلاف بين السطرين السابقين هو أن السطر الثاني يحمّل النسخة غير المختصرة non-shortened من ملف CSS ليسهل عليك عملية التعديل.
		</p>
	</li>
</ul>

<p>
	الآن لو انتقلت إلى نهاية الملف index.html ستجد الأسطر التالية قبل وسم الإغلاق <code>&lt;body&gt;</code> مباشرة:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_36" style=""><span class="com">&lt;!-- Bootstrap core JavaScript --&gt;</span><span class="pln">
</span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"vendor/jquery/jquery.min.js"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">
</span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"vendor/Bootstrap/js/Bootstrap.bundle.min.js"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">

</span><span class="com">&lt;!-- Plugin JavaScript --&gt;</span><span class="pln">
</span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"vendor/jquery-easing/jquery.easing.min.js"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">
</span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"vendor/magnific-popup/jquery.magnific-popup.min.js"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">

</span><span class="com">&lt;!-- Custom scripts for this template --&gt;</span><span class="pln">
</span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"js/creative.min.js"</span><span class="tag">&gt;&lt;/script&gt;</span></pre>

<p>
	ومهمتها دمج ملفات جافا سكريبت JavaScript ضمن ملف HTML مما يؤدي إلى زيادة التفاعل بالصفحة، على سبيل المثال عندما نقنقر على الرابط About سينقلك بطريقة سلسة ومتدرجة إلى القسم الخاص بها من الصفحة بدلًا من عرضها بطريقة فجائية، طبعًا <a href="https://academy.hsoub.com/programming/javascript/%D8%AA%D8%B9%D9%84%D9%85-%D9%84%D8%BA%D8%A9-%D8%AC%D8%A7%D9%81%D8%A7-%D8%B3%D9%83%D8%B1%D9%8A%D8%A8%D8%AA-%D9%85%D9%86-%D8%A7%D9%84%D8%B5%D9%81%D8%B1-%D8%AD%D8%AA%D9%89-%D8%A7%D9%84%D8%A7%D8%AD%D8%AA%D8%B1%D8%A7%D9%81-r2046/" rel="">وظائف لغة جافا سكريبت JavaScript  </a>كثيرة جدًا وليست ضمن مجال مقالنا الحالي، إذ سنركز حاليًا على إضافة محتوى وتنسيقات مخصصة إلى صفحة الويب.
</p>

<h3 id="8">
	8. إضافة محتوى وصور الصفحة
</h3>

<p>
	إن أول ما سنقوم به في الصفحة هي تغيير عنوانها
</p>

<h4 id="1">
	1. تغيير عنوان الصفحة
</h4>

<p>
	ابحث في قسم &lt;head&gt; عن الوسم &lt;title&gt; وغير عنوان الصفحة الموجود ضمن وسمي الفتح والإغلاق إلى العنوان الذي تريده
</p>

<pre class="ipsCode">&lt;title&gt;My HTML Site&lt;/title&gt;
</pre>

<h4 id="2herosection">
	2. تخصيص ترويسة الصفحة (Hero Section)
</h4>

<p>
	يطلق اسم قسم البطل أو الهيرو على القسم البارز الظاهر أعلى صفحة الويب، وهو قسم مهم لكونه أول ما يسترعي انتباه الزوار ويجب تصميمه بطريقة لافتة ومميزة،  وهو في تصميمنا القسم الظاهر في هذه الصورة:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="153712" href="https://academy.hsoub.com/uploads/monthly_2024_07/hero-1024x599.jpg.58e19f525cd544e72d41d64dc565c7e0.jpg" rel=""><img alt="hero 1024x599" class="ipsImage ipsImage_thumbnailed" data-fileid="153712" data-unique="lfhnqxeun" style="width: 499px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_07/hero-1024x599.thumb.jpg.a8c353a05b870099d3297f5b8f40aa8d.jpg"> </a>
</p>

<p>
	سنضع المحتوى الخاص بنا داخل هذا القسم، ولتعديله عُد إلى ملف index.html وابحث عن القسم التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_40" style=""><span class="com">&lt;!-- Masthead --&gt;</span><span class="pln">
</span><span class="tag">&lt;header</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"masthead"</span><span class="tag">&gt;</span><span class="pln">
  </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container h-100"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row h-100 align-items-center justify-content-center text-center"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-10 align-self-end"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;h1</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"text-uppercase text-white font-weight-bold"</span><span class="tag">&gt;</span><span class="pln">...</span><span class="tag">&lt;/h1&gt;</span><span class="pln">
        </span><span class="tag">&lt;hr</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"divider my-4"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">
      </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-8 align-self-baseline"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"text-white-75 font-weight-light mb-5"</span><span class="tag">&gt;</span><span class="pln">...</span><span class="tag">&lt;/p&gt;</span><span class="pln">
        </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-primary btn-xl js-scroll-trigger"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#about"</span><span class="tag">&gt;</span><span class="pln">Find Out More</span><span class="tag">&lt;/a&gt;</span><span class="pln">
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="tag">&lt;/header&gt;</span></pre>

<p>
	يتحكم الكود السابق في محتوى قسم البطل، ولدينا في هذا الكود البرمجي بعض الوسوم الجديدة لنوضح دورها:
</p>

<ul>
	<li>
		الوسم <code>&lt;header&gt;</code> يخبرنا أن هذا القسم كله هو رأس الصفحة وهو مرتبط بشكل أساسي مع وسوم إخوة <a href="https://academy.hsoub.com/programming/javascript/%D8%A7%D9%84%D8%AA%D9%86%D9%82%D9%84-%D8%A8%D9%8A%D9%86-%D8%B9%D9%82%D8%AF-%D8%B4%D8%AC%D8%B1%D8%A9-dom-r648/" rel="">sibling</a> أخرى في الصفحة هما الوسم <code>&lt;section&gt;</code> والوسم<code> &lt;footer&gt;</code>
	</li>
	<li>
		الوسم <code>&lt;div&gt;</code> وهو اختصار لكلمة division ويستخدم لفصل جزء الكود الحالي عن الأجزاء الباقية ضمن ملف HTML ويساعد على تمييز الأقسام بصريًا في الصفحة.
	</li>
	<li>
		بالإضافة إلى ذلك سنلاحظ أن بعض الوسوم التي تعرفنا عليها مسبقًا ستصبح أكثر تعقيدًا عند إضافة عدة أصناف CSS لها كما في المثال التالي:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_42" style=""><span class="tag">&lt;h1</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"text-uppercase text-white font-weight-bold"</span><span class="tag">&gt;</span><span class="pln">...</span><span class="tag">&lt;/h1&gt;</span><span class="pln"> </span></pre>

<p>
	في هذا المثال وضعنا عدة أصناف classes للعنوان الرئيسي <code>&lt;h1&gt;</code> وهي <code>text-uppercase</code> و <code>text-white</code> لتجعل لون النص أبيض و<br>
	<code>font-weight-bold</code> لجعله سميكًا.
</p>

<p>
	أنشئت هذه الأصناف بواسطة بوتستراب ومن قبل مطور قالب Creative ويمكنك أيضًا استخدامها عند تنسيق موقعك الخاص، ويمكنك تخصيص أي وسم تضيفه إلى بنية صفحتك، وإذا كنت ترغب بالاطلاع على كل هذه الأصناف ما عليك سوى الذهاب إلى الملف creative.css الموجود ضمن المجلد CSS الموجود ضمن القالب الذي تحملته من الويب.
</p>

<p>
	ربما يصعب عليك فهم جميع هذه الأصناف في البداية ولكن مع الوقت ستكتشف أن الموضوع سهل للغاية. على سبيل المثال طبقنا الصنف <code>font-weight-light</code> على وسم الفقرة، وعندما نذهب إلى الملف creative.css ونبحث عنه سنكتشف أن هذا الصنف مكون من التعليمات التالية:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3773_44" style=""><span class="pun">.</span><span class="pln">font-weight-light </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">font-weight</span><span class="pun">:</span><span class="pln"> </span><span class="lit">300</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	وبالتالي ستفهم أن تطبيق هذا الصنف على عنصر ما سيجعل وزن الخط لهذا العنصر خفيفًا light (تمثل القيمة 400 الوزن الافتراضي العادي regular وتمثل أي قيمة أعلى منها الوزن الخفيف light وأي قيمة أعلى منها الوزن العريض bold).
</p>

<p>
	كما يعد تعديل النصوص في HTML عملية بسيطة للغاية وهذا ما يتضح من خلال سطر الكود التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_46" style=""><span class="pln"> </span><span class="tag">&lt;h1</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"text-uppercase text-white font-weight-bold"</span><span class="tag">&gt;</span><span class="pln">Your Favorite ...</span><span class="tag">&lt;/h1&gt;</span><span class="pln"> </span></pre>

<p>
	كل ما عليك هو البحث عن وسمي الفتح والإغلاق وتعديل النص الموجود بينهما ليصبح كما يلي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_48" style=""><span class="pln"> </span><span class="tag">&lt;h1</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"text-uppercase text-white font-weight-bold"</span><span class="tag">&gt;</span><span class="pln">Your Favorite ...</span><span class="tag">&lt;/h1&gt;</span><span class="pln"> </span></pre>

<p>
	يمكن عمل الشيء نفسه في جميع وسوم صفحة HTML، كما يمكن إضافة فقرات جديدة بحريّة تامة. على سبيل المثال نستطيع أن نضيف فقرة موجودة بنسخ ولصق كود فقرة سابقة مع تغيير النص الموجود ضمنها كما يلي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_50" style=""><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"text-white-75 font-weight-light"</span><span class="tag">&gt;</span><span class="pln">Start Bootstrap can ...</span><span class="tag">&lt;/p&gt;</span><span class="pln">
</span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"text-white-75 font-weight-light"</span><span class="tag">&gt;</span><span class="pln">Paragraph 2</span><span class="tag">&lt;/p&gt;</span></pre>

<p>
	الآن وبعد أن تعرفت على طريقة التعامل مع النصوص وتخصيصها، لنشرح طريقة التعامل مع الصور ونغير صورة الخلفية في ترويسة صفحتنا.
</p>

<p>
	هذا قد يكون أصعب قليلًا لأنه لا يتم ضمن ملف HTML فلا يوجد وسم يشير إلى تضمين صورة في الصفحة بأي شكل لذا سنحتاج للانتقال إلى ملف CSS وإجراء تغيير فيه، فإذا نظرنا إلى وسم <code>&lt;header&gt;</code> في الصفحة سنلاحظ وجود صنف معين له اسمه <code>masthead</code> وهذا الصنف هو المسؤول عن تغيير صورة الخلفية، وإذا فتحنا ملف creative.css وانتقلنا لتعريف الصنف <code>masthead</code> سنجده بالشكل التالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3773_52" style=""><span class="pln">header</span><span class="pun">.</span><span class="pln">masthead </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">padding-top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10rem</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">padding-bottom</span><span class="pun">:</span><span class="pln"> calc</span><span class="pun">(</span><span class="lit">10rem</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="lit">72px</span><span class="pun">);</span><span class="pln">
  </span><span class="kwd">background</span><span class="pun">:</span><span class="pln"> linear-gradient</span><span class="pun">(</span><span class="pln">to bottom</span><span class="pun">,</span><span class="pln"> rgba</span><span class="pun">(</span><span class="lit">92</span><span class="pun">,</span><span class="pln"> </span><span class="lit">77</span><span class="pun">,</span><span class="pln"> </span><span class="lit">66</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.8</span><span class="pun">)</span><span class="pln"> </span><span class="lit">0%</span><span class="pun">,</span><span class="pln"> rgba</span><span class="pun">(</span><span class="lit">92</span><span class="pun">,</span><span class="pln"> </span><span class="lit">77</span><span class="pun">,</span><span class="pln"> </span><span class="lit">66</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.8</span><span class="pun">)</span><span class="pln"> </span><span class="lit">100%</span><span class="pun">),</span><span class="pln"> </span><span class="kwd">url</span><span class="pun">(</span><span class="str">"../img/bg-masthead.jpg"</span><span class="pun">);</span><span class="pln">
  </span><span class="kwd">background-position</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">background-repeat</span><span class="pun">:</span><span class="pln"> no-repeat</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">background-attachment</span><span class="pun">:</span><span class="pln"> scroll</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">background-size</span><span class="pun">:</span><span class="pln"> cover</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	يُطبَّق هذا الكود العديد من التنسيقات على الصور مثل موقع الصورة، وأبعادها، وعدد مرات تكرارها، ومسارها <code>("url("../img/bg-masthead.jpg</code> وفي أغلب الأحيان يكون هناك مجلد فرعي خاص بالصور ضمن المشروع باسم img. فلتغيير صورة الخلفية في هذا المثال نختار الصورة المناسبة لصفحتنا وننسخها إلى المجلد img ثم ننسخ اسم الصورة الجديدة ونلصقه مكان اسم الصورة القديمة ليصبح مسار الصورة<code>("url("../img/your-file.jpg</code>
</p>

<h4 id="3">
	3. تخصيص الأقسام الأخرى في الصفحة
</h4>

<p>
	عند تصفحك للملف index.html ستلاحظ وجود أقسام مختلفة ضمن الصفحة مثل قسم التنقل navigation وقسم حولنا about وقسم الخدمات services وقسم اتصل بنا contact وغيرها من الأقسام. وعلى الرغم من اختلاف المحتوى ضمن هذه الأقسام أو الصفحات إلا أن البنية العامة لكود HTML هي نفسها لا تتغير ولكن تنسيقات CSS تختلف من قسم إلى آخر وهنا يمكنك المرور على كل صفحة وتغيير التنسيقات بالشكل الذي يناسب احتياجاتك. كما يمكنك أيضًا نقل أقسام كاملة (أي الأجزاء بين وسوم <code>&lt;section&gt;</code> في كود HTML) من مكان لآخر يدويًا وذلك عن طريق قصها ولصقها في المكان الذي تريده.
</p>

<h3 id="9">
	9. ضبط الألوان والخطوط
</h3>

<p>
	تعد عملية تغيير الألوان والخطوط من أبسط الأمور في HTML وCSS والطريقة الأسهل للقيام بذلك هي كتابة تنسيقات مضمنة باستخدام الخاصية style ضمن الوسم كما في المثال التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_54" style=""><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#FF0000</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">Red text</span><span class="tag">&lt;/p&gt;</span></pre>

<p>
	تُمثَل الألوان في لغة HTML بقيم ست عشرية hexadecimal فعلى سبيل المثال تمثل القيمة <code>FF0000#</code> اللون الأحمر ويمكنك الاطلاع على جميع قيم الألوان من خلال الرابط <a href="https://www.w3schools.com/colors/colors_picker.asp" rel="external nofollow">standard colors</a>
</p>

<p>
	لكن الطريقة الأفضل لتغيير الألوان هي عن طريق كتابتها كتنسيقات منفصلة ضمن ملف CSS وليس كتنسيقات مضمنة ضمن وسوم HTML كما في المثال السابق، فعلى سبيل المثال يمكننا تحقيق نفس تأثير الكود السابق من خلال كتابة الكود التالي في ملف CSS:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3773_57" style=""><span class="pln">p</span><span class="pun">.</span><span class="pln">red </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#FF0000</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	ثم استخدام هذا الصنف في كود HTML كما يلي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_59" style=""><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"red"</span><span class="tag">&gt;</span><span class="pln">Red text</span><span class="tag">&lt;/p&gt;</span></pre>

<p>
	الطريقة الثانية هي الطريقة التي يعتمدها بوتستراب، فلتغيير لون أي نص على الصفحة، ابحث أولاً عن الوسم المسؤول عن تنسيق هذا النص، ثم انتقل إلى ملف CSS وعدل لون النص في الصنف المقابل، أو أنشئ صنفًا جديدًا لهذا اللون ثم طبقه على العناصر التي تريدها، وإذا لم يكن لهذا الوسم صنف يمكنك إنشاء صنف جديد له في ملف CSS.
</p>

<p>
	يوضح المثال التالي لك الفكرة فإذا أردت تغيير لون النص "At Your Service." في العنوان الرئيسي من اللون الأسود إلى اللون البرتقالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_61" style=""><span class="tag">&lt;h2</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"text-center"</span><span class="tag">&gt;</span><span class="pln">At Your Service</span><span class="tag">&lt;/h2&gt;</span></pre>

<p>
	اذهب إلى ملف CSS وأنشئ الصنف التالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3773_63" style=""><span class="pun">.</span><span class="pln">text-orange </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#f4623a</span><span class="pln"> </span><span class="kwd">!important</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	تعني الكلمة المحجوزة <code>important!</code> أن الأولوية للون الذي تم تطبيقه هنا وتجاوز تنسيق أي لون آخر جاء قبله، بعد تعريف هذا الصنف class يمكنك الآن العودة إلى العنوان الرئيسي وتطبيق هذا الصنف عليه كما يلي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_65" style=""><span class="tag">&lt;h2</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"text-center text-orange"</span><span class="tag">&gt;</span><span class="pln">At Your Service</span><span class="tag">&lt;/h2&gt;</span></pre>

<p>
	وعندها سيصبح العنوان الرئيسي باللون البرتقالي كما في الصورة:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="153711" href="https://academy.hsoub.com/uploads/monthly_2024_07/headercolor.jpg.04dce908482cf1e96805948b6a03fd0e.jpg" rel=""><img alt="header color" class="ipsImage ipsImage_thumbnailed" data-fileid="153711" data-unique="bmz80n4rz" style="width: 500px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_07/headercolor.jpg.04dce908482cf1e96805948b6a03fd0e.jpg"> </a>
</p>

<p>
	أما لتغيير نوع الخط وحجمه فيمكننا القيام بشيء مشابه لما قمنا به في حالة اللون حيث سنذهب إلى ملف CSS ونعرف الصنف class التالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3773_69" style=""><span class="pun">.</span><span class="pln">SOMECLASS </span><span class="pun">{</span><span class="pln">
</span><span class="kwd">font-family</span><span class="pun">:</span><span class="pln"> </span><span class="str">"Merriweather"</span><span class="pun">,</span><span class="pln"> Roboto</span><span class="pun">,</span><span class="pln"> sans-serif</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">font-size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">18px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	حددنا في هذا الصنف نوع الخط المناسب وعينا حجم الخط ليكون 18 بكسل، وبالتالي يمكن استخدام هذا الصنف في أي وسم من وسوم HTML، وفي التطبيق العملي نضع عادة كافة إعدادات الخطوط والألوان في صنف واحد ضمن ملف CSS ومن ثم نطبقها على وسوم HTML.
</p>

<p>
	وبالعودة إلى مثالنا السابق نستطيع تغيير حجم الخط للعنوان الرئيسي ليصبح 50 بكسل ولكن يجب بدايًة إنشاء الصنف التالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3773_71" style=""><span class="pun">.</span><span class="pln">text-xxl </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">font-size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	ثم نطبقه على وسم العنوان الرئيسي كما يلي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_73" style=""><span class="tag">&lt;h2</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"text-center text-orange text-xxl"</span><span class="tag">&gt;</span><span class="pln">At Your Service</span><span class="tag">&lt;/h2&gt;</span></pre>

<p>
	كما يمكننا تغيير الألوان والخطوط ضمن قالب بوسترات أيضًا من خلال الذهاب إلى الصنف المطلوب في ملف CSS وتعديله بالطريقة التي تناسب مشروعنا.
</p>

<h3 id="10">
	10. إنشاء صفحات إضافية
</h3>

<p>
	بعد أن خصصت صفحة موقعك الرئيسية حان الوقت لإنشاء صفحات إضافية للمشروع وربطها بالصفحة الرئيسية لأن أي موقع ويب لا يقتصر عادة على صفحة واحدة بل يتكون من عدة صفحات إضافية ومن هذه الصفحات:
</p>

<ul>
	<li>
		صفحة حولنا about page
	</li>
	<li>
		صفحة اتصل بنا contact us
	</li>
	<li>
		صفحة نماذج الأعمال portfolio
	</li>
	<li>
		صفحة المنتجات أو الخدمات products/services
	</li>
	<li>
		صفحة فريق العمل team
	</li>
	<li>
		صفحة السياسات policies
	</li>
</ul>

<h4 id="1-1">
	1. البدء بتصميم الصفحة
</h4>

<p>
	عندما تنشئ صفحة ويب جديدة فإن أول شيء تفكر به هو تصميم الصفحة وتخطيط عناصرها، ولذلك عندما تنشئ موقعك باستخدام HTML وCSS من الأفضل أن تضع بداية التصميم الأولي الذي يناسبك ثم تحول هذا التصميم إلى تعليمات برمجية.
</p>

<p>
	قد تكون البداية في عملية إنشاء الموقع من شاشة فارغة باستخدام HTML و CSS صعبة نوعًا ما ولذلك يمكنك كذلك الاستعانة بقوالب بوتستراب الجاهزة ولكن دعونا نأخذ قبل ذلك فكرة عن مبادئ تصميم الصفحات ثم نطبق ذلك التصميم باستخدام Bootstrap.
</p>

<p>
	يمكنك تقسيم الصفحة إلى أجزاء ومن ثم تجميعها لتكون صفحة واحدة كما في الشكل:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="153715" href="https://academy.hsoub.com/uploads/monthly_2024_07/layout.jpg.027a8c516a3b2cec8631bf899011052f.jpg" rel=""><img alt="layout" class="ipsImage ipsImage_thumbnailed" data-fileid="153715" data-unique="14j0sibt0" src="https://academy.hsoub.com/uploads/monthly_2024_07/layout.jpg.027a8c516a3b2cec8631bf899011052f.jpg"> </a>
</p>

<p>
	ما يميز بوتستراب هو أنه ينوب عنك في التعامل مع مبادئ التصميم الأساسية وتفاصيل مظهر الصفحة بحيث يمكنك التركيز على وضع هذه التفاصيل في الأماكن الصحيحة.
</p>

<p>
	لننشئ الآن صفحة جديدة هي صفحة حولنا about، في البداية سننشئ تصميمًا مبدئيًا على غرار المثال السابق الموضح أعلاه وفيه الأقسام التالية:
</p>

<ul>
	<li>
		قائمة التنقل navigation في الأعلى
	</li>
	<li>
		العنوان الرئيسي يمتد على كامل عرض الصفحة
	</li>
	<li>
		قسم المحتوى الرئيسي في منتصف الصفحة
	</li>
	<li>
		تذييل الصفحة ودائمًا يوجد في نهاية الصفحة
	</li>
</ul>

<h4 id="2">
	2. إنشاء صفحة جديدة
</h4>

<p>
	إن أبسط طريقة لإنشاء صفحة جديدة هي أخذ نسخة عن صفحة موجودة مسبقًا وبالتالي استخدام نفس القالب. في مثالنا ننسخ الصفحة index.html ونغير اسمها إلى about.html ومن ثم نغير العنوان title لتمييز الصفحات ونختار عنوان لصفحة حول الشركة ليكون على سبيل المثال <code>&lt;title&gt;About Us&lt;/title&gt;</code> والآن سنستعرض الملف سطرَا سطرًا ونقرر ما هي الأسطر التي سنتركها وما هي الأسطر التي سنحذفها:
</p>

<ul>
	<li>
		قائمة التنقل navigation: يجب الحفاظ عليها لجعل خاصية التنقل موحدة في جميع الصفحات.
	</li>
	<li>
		قسم العنوان الرئيسي: لن نكون بحاجة له وفق تصميم مشروعنا وبالتالي سنقوم بحذفه كاملًا.
	</li>
	<li>
		قسم حولنا about: هو القسم الذي سنستخدمه ليكون العنوان الرئيسي.
	</li>
	<li>
		الأقسام خدمات services ونماذج الأعمال portfolio واتصل بنا contact لن نحتاج لها على الإطلاق ولذلك سنحذفها.
	</li>
	<li>
		قسم التذييل footer سنحتاج له ولذلك يجب الحفاظ عليه.
	</li>
</ul>

<p>
	وبعد القيام بهذه التعديلات سنحصل على الكود البسيط التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_77" style=""><span class="dec">&lt;!DOCTYPE html&gt;</span><span class="pln">
</span><span class="tag">&lt;html</span><span class="pln"> </span><span class="atn">lang</span><span class="pun">=</span><span class="atv">"en"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;head&gt;</span><span class="pln">
        </span><span class="com">&lt;!-- all head definitions ... removed for clarity --&gt;</span><span class="pln">
    </span><span class="tag">&lt;/head&gt;</span><span class="pln">

    </span><span class="tag">&lt;body</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"page-top"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="com">&lt;!-- Navigation --&gt;</span><span class="pln">
        </span><span class="com">&lt;!-- actual navigation tags removed for clarity --&gt;</span><span class="pln">

        </span><span class="com">&lt;!-- About Section --&gt;</span><span class="pln">
        </span><span class="com">&lt;!-- ... --&gt;</span><span class="pln">

        </span><span class="com">&lt;!-- Footer --&gt;</span><span class="pln">
        </span><span class="com">&lt;!-- ... --&gt;</span><span class="pln">

        </span><span class="com">&lt;!-- Bootstrap script imports --&gt;</span><span class="pln">
        </span><span class="com">&lt;!-- ... --&gt;</span><span class="pln">
    </span><span class="tag">&lt;/body&gt;</span><span class="pln">
</span><span class="tag">&lt;/html&gt;</span></pre>

<p>
	القسم المفقود هنا هو قسم المحتوى الرئيسي ولذلك سنكتبه عن طريق إعادة استخدام القسم حولنا <code>About Section</code> وذلك بأخذ نسخة من الكود التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_81" style=""><span class="com">&lt;!-- About Section --&gt;</span><span class="pln">
</span><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"page-section bg-primary"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"about"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row justify-content-center"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-8 text-center"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;h2</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"text-white mt-0"</span><span class="tag">&gt;</span><span class="pln">...</span><span class="tag">&lt;/h2&gt;</span><span class="pln">
                </span><span class="tag">&lt;hr</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"divider light my-4"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
                </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"text-white mb-0"</span><span class="tag">&gt;</span><span class="pln">...</span><span class="tag">&lt;/p&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="tag">&lt;/section&gt;</span></pre>

<p>
	ثم نغير أول سطرين في الكود ليصبحا كما يلي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_83" style=""><span class="com">&lt;!-- Main Content Section --&gt;</span><span class="pln">
</span><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"page-section bg-primary"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"main-content"</span><span class="tag">&gt;</span></pre>

<p>
	وبما أننا لا نحتاج للعنصرين <code>&lt;h2&gt;</code> و <code>&lt;hr&gt;</code> لذا سنحذفهما ليتبقى لدينا الكود التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_85" style=""><span class="com">&lt;!-- Main Content Section --&gt;</span><span class="pln">
</span><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"page-section bg-primary"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"main-content"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row justify-content-center"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-8 text-center"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;p&gt;</span><span class="pln">A paragraph of text.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="tag">&lt;/section&gt;</span></pre>

<p>
	ستلاحظ عندما تحفظ الملف وتفتحه في المتصفح وجود سطرين فوق بعضهما البعض مع خلفية واحدة كما في الشكل:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="153707" href="https://academy.hsoub.com/uploads/monthly_2024_07/about-page-head.jpg.fa0c9bfc73a479773f5eb0d34ad28d8d.jpg" rel=""><img alt="about page head" class="ipsImage ipsImage_thumbnailed" data-fileid="153707" data-unique="9l9p31yvx" style="width: 500px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_07/about-page-head.jpg.fa0c9bfc73a479773f5eb0d34ad28d8d.jpg"> </a>
</p>

<p>
	من الأفضل أن تكون الخلفية بيضاء في قسم المحتوى الرئيسي، ولنحقق ذلك بسهولة نزيل الصنف <code>bg-primary</code> من الوسم الرئيسي <code>&lt;section&gt;</code> ليصبح سطر الكود كما يلي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_88" style=""><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"page-section"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"main-content"</span><span class="tag">&gt;</span></pre>

<p>
	وتصبح النتيجة كما في الشكل:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="153708" href="https://academy.hsoub.com/uploads/monthly_2024_07/about-page-head-2.jpg.d1982804160d05caad1281bea4f125a0.jpg" rel=""><img alt="about page head 2" class="ipsImage ipsImage_thumbnailed" data-fileid="153708" data-unique="z5py5rmcx" style="width: 500px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_07/about-page-head-2.jpg.d1982804160d05caad1281bea4f125a0.jpg"> </a>
</p>

<p>
	سنضيف الآن بعض الفقرات إلى الكود لملئها بالمحتوى، ونضيف عنوان فرعي كما يلي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_93" style=""><span class="com">&lt;!-- Main Content Section --&gt;</span><span class="pln">
</span><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"page-section"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"main-content"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row justify-content-center"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-8 text-center"</span><span class="tag">&gt;</span><span class="pln">

                </span><span class="tag">&lt;p&gt;</span><span class="pln">Lorem ipsum dolor sit amet, consectetur adipiscing
                    elit...</span><span class="tag">&lt;/p&gt;</span><span class="pln">
                </span><span class="tag">&lt;p&gt;</span><span class="pln">Proin fermentum, felis tempor pharetra lobortis, magna quam
                    hendrerit dolor...</span><span class="tag">&lt;/p&gt;</span><span class="pln">
                </span><span class="tag">&lt;h3&gt;</span><span class="pln">Subhead</span><span class="tag">&lt;/h3&gt;</span><span class="pln">

                </span><span class="tag">&lt;p&gt;</span><span class="pln">Lorem ipsum dolor sit amet, consectetur adipiscing
                    elit...</span><span class="tag">&lt;/p&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="tag">&lt;/section&gt;</span></pre>

<p>
	ليصبح شكل الصفحة كما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="153703" href="https://academy.hsoub.com/uploads/monthly_2024_07/about-1.jpg.ba421d78c8329df236392a79d944dfa7.jpg" rel=""><img alt="about 1" class="ipsImage ipsImage_thumbnailed" data-fileid="153703" data-unique="ydv8w76dg" style="width: 500px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_07/about-1.thumb.jpg.ccd0bc8d1257d7b8443b26731017c099.jpg"> </a>
</p>

<p>
	إذا لم ترغب في توسيط النص ما عليك سوى إزالة الصنف <code>text-center</code> من الوسم <code>&lt;div&gt;</code> كما في الشكل:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="153704" href="https://academy.hsoub.com/uploads/monthly_2024_07/about-2.jpg.a9bd08339f91f966571b3fe079f50f88.jpg" rel=""><img alt="about 2" class="ipsImage ipsImage_thumbnailed" data-fileid="153704" data-unique="yjeomuew8" style="width: 500px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_07/about-2.jpg.a9bd08339f91f966571b3fe079f50f88.jpg"> </a>
</p>

<p>
	ولإضفاء المزيد من الجمالية على النصوص الموجودة في الصفحة يمكنك إنشاء أصناف جديدة ضمن ملف CSS وتعيينها لهذه الفقرات، أو تعيين أصناف بوتستراب جاهزة وفي مثالنا قمنا بتعيين الأصناف التالية على الوسم <code>&lt;p&gt;</code> كما يلي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_97" style=""><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"lead text-muted"</span><span class="tag">&gt;</span><span class="pln">Lorem ipsum dolor sit amet...</span><span class="tag">&lt;/p&gt;</span><span class="pln">
</span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"text-muted"</span><span class="tag">&gt;</span><span class="pln">Proin fermentum, felis tempor pharetra lobortis, magna quam hendrerit dolor...</span><span class="tag">&lt;/p&gt;</span></pre>

<p>
	وعلى الوسم <code>&lt;h3&gt;</code> كما يلي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_99" style=""><span class="tag">&lt;h3</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"h3 mt-4"</span><span class="tag">&gt;</span><span class="pln">Subhead</span><span class="tag">&lt;/h3&gt;</span></pre>

<p>
	ليصبح شكل الصفحة كما في الشكل التالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="153705" href="https://academy.hsoub.com/uploads/monthly_2024_07/about-3.jpg.9ff38dfb88c8c6e827c6b5ed4fdecfd5.jpg" rel=""><img alt="about 3" class="ipsImage ipsImage_thumbnailed" data-fileid="153705" data-unique="ku1cvu4qn" style="width: 500px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_07/about-3.thumb.jpg.af527bd59c6dfb2caa57828e61565312.jpg"> </a>
</p>

<p>
	لنضف الآن صورة في أعلى الصفحة من خلال الوسم الخاص بالصورة التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_102" style=""><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"img/image.jpg"</span><span class="tag">&gt;</span></pre>

<p>
	إن كتابة الوسم بهذه الطريقة محدود جدًا إذ لا توجد أي تنسيقات به، ولإضافة بعض التنسيقات له يمكننا الاستعانة بأصناف بوتستراب الجاهزة كما يلي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_106" style=""><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"img/image"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"rounded img-fluid"</span><span class="tag">&gt;</span></pre>

<p>
	بإضافة هذه الأصناف للصورة ستظهر بحواف مستديرة وتضمن بأن حجم الصورة لن يتجاوز حجم الكتلة الموجودة ضمنها.
</p>

<p>
	يمكنك الآن إضافة بعض الوسوم إلى قسم المحتوى الرئيسي كما يلي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_110" style=""><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"lead text-muted"</span><span class="tag">&gt;</span><span class="pln">Lorem ipsum dolor sit amet...</span><span class="tag">&lt;/p&gt;</span><span class="pln">

</span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"img/image.jpg"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"rounded img-fluid"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">

</span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"text-muted"</span><span class="tag">&gt;</span><span class="pln">
    Proin fermentum, felis tempor pharetra lobortis, magna quam hendrerit
    dolor...
</span><span class="tag">&lt;/p&gt;</span><span class="pln">

</span><span class="tag">&lt;h3</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"h3 mt-4"</span><span class="tag">&gt;</span><span class="pln">Subhead</span><span class="tag">&lt;/h3&gt;</span></pre>

<p>
	ليكون الشكل النهائي لصفحة حولنا كما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="jpg" data-fileid="153706" href="https://academy.hsoub.com/uploads/monthly_2024_07/about-complete.jpg.679961f2ce6c24de28b0ea9ea3d4249a.jpg" rel=""><img alt="about complete" class="ipsImage ipsImage_thumbnailed" data-fileid="153706" data-unique="68drynzwm" style="width: 500px; height: auto;" src="https://academy.hsoub.com/uploads/monthly_2024_07/about-complete.thumb.jpg.fdce667fdb02c5a470930b40e565533b.jpg"> </a>
</p>

<h4 id="3-1">
	3. الربط مع صفحة جديدة
</h4>

<p>
	بعد الانتهاء من عملية إنشاء الصفحة الجديدة، علينا الآن ربطها مع الملف index.html والمكان الطبيعي لعملية الربط هو في قائمة التنقل navigation من خلال البحث عن سطر الكود التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_113" style=""><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-link js-scroll-trigger"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#about"</span><span class="tag">&gt;</span><span class="pln">About</span><span class="tag">&lt;/a&gt;</span></pre>

<p>
	وإجراء التغيير عليه ليصبح كما يلي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3773_115" style=""><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-link"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"about.html"</span><span class="tag">&gt;</span><span class="pln">About</span><span class="tag">&lt;/a&gt;</span></pre>

<p>
	أضفنا في السطر السابق الوسم <code><a href="https://wiki.hsoub.com/HTML/a" rel="external">&lt;a&gt;</a></code> وهو وسم الارتباط التشعبي في HTML فعن طريقه يمكننا ربط الصفحات مع بعضها البعض عن طريق توفير عنوان تلك الصفحة في البارامتر <code>href.</code> الذي يمثل نص الرابط أو الجزء القابل للنقر في الرابط وسيكون هذا النص بين وسمي الفتح والإغلاق <code>&lt;a&gt;&lt;/a&gt;</code> وبالنتيجة عند تحديث الصفحة الرئيسية سيظهر الرابط الجديد الذي تستطيع من خلاله الآن الانتقال إلى الصفحة حولنا about.
</p>

<h2 id="-1">
	خطوات إضافية لتطوير الموقع
</h2>

<p>
	بعد قراءتك لهذا المقال يفترض أنك تستطيع الآن بناء موقع ويب بسيط مؤلف من صفحتين هما الصفحة الرئيسية homepage وصفحة حولنا about، ومن الجيد أن تطور مهاراتك وتتابع بناء صفحات أخرى متعددة بتنسيقات جميلة وتضيفها إلى موقعك وتربطها بقائمة التنقل أعلى الموقع.
</p>

<p>
	كما ننصحك بتعزيز مهاراتك في تطوير مواقع الويب فهو تخصص مميز ومطلوب في سوق العمل، فإذا كنت مهتمًا باحتراف إنشاء المواقع يمكنك مطالعة <a href="https://academy.hsoub.com/learn/front-end-web-development/" rel="">دورة تطوير الواجهات من أكاديمية حسوب</a> التي تساعدك على فهم اللغات الأساسية لتطوير الويب ( HTML و CSS وجافا سكريبت) كما تشرح لك كل ما يتعلق بإطار بوتستراب Bootstrap وكيفية استخدامه في المشاريع والتعامل مع مكوناته المختلفة لتطوير مواقع احترافية بسرعة وغيرها من التقنيات المفيدة التي تساعدك على بناء معرض أعمال غني يعزز فرصتك في الحصول على عمل.
</p>

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="442" id="ips_uid_1315_6" referrerpolicy="strict-origin-when-cross-origin" src="https://academy.hsoub.com/applications/core/interface/index.html" title="دورة تطوير واجهات المستخدم UI - أكاديمية حسوب" width="786" data-embed-src="https://www.youtube.com/embed/habGCxz4LXs"></iframe>
</p>

<p>
	نتمنى لكم الاستفادة الجيدة من هذا المقال، وفي حال كان لديكم أي تساؤل يمكن تركه في قسم التعليقات أسفل المقال أو كتابته في <a href="https://academy.hsoub.com/questions/" rel="">قسم الأسئلة والأجوبة</a> في الأكاديمية.
</p>

<p>
	ترجمة وبتصرف للمقال karol krol لكاتبه <a href="https://websitesetup.org/website-coding-html-css/" rel="external nofollow">How to Code a Website</a>
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/css/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D9%84%D8%BA%D8%A9-css/" rel="">تعرف على أساسيات لغة CSS</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/css/bootstrap/%D8%AF%D9%84%D9%8A%D9%84%D9%83-%D8%A7%D9%84%D8%B4%D8%A7%D9%85%D9%84-%D9%84%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF-%D9%88%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-bootstrap-r2256/" rel="">دليلك الشامل لإعداد واستخدام إطار العمل بوتستراب Bootstrap</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/html/html-%D9%88-css-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-%D9%83%D9%8A%D9%81-%D8%AA%D8%B5%D9%85%D9%85-%D8%A3%D9%88%D9%84-%D8%B5%D9%81%D8%AD%D8%A9-%D9%88%D9%8A%D8%A8-%D9%84%D9%83-r242/" rel="">HTML و CSS للمبتدئين: كيف تصمم أول صفحة ويب لك</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/html/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D9%86%D8%B3%D9%8A%D9%82-%D8%A7%D9%84%D9%85%D9%88%D9%82%D8%B9-%D8%A7%D9%84%D8%A5%D9%84%D9%83%D8%AA%D8%B1%D9%88%D9%86%D9%8A-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%AA%D8%B9%D9%84%D9%8A%D9%85%D8%A7%D8%AA-html-r1909/" rel="">كيفية تنسيق الموقع الإلكتروني باستخدام تعليمات HTML</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/css/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%AA%D8%AE%D8%B7%D9%8A%D8%B7-%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-css-r2238/" rel="">مدخل إلى تخطيط صفحات الويب باستخدام CSS</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">2370</guid><pubDate>Sat, 20 Jul 2024 15:06:01 +0000</pubDate></item><item><title>&#x62F;&#x644;&#x64A;&#x644;&#x643; &#x627;&#x644;&#x634;&#x627;&#x645;&#x644; &#x644;&#x625;&#x639;&#x62F;&#x627;&#x62F; &#x648;&#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; &#x625;&#x637;&#x627;&#x631; &#x627;&#x644;&#x639;&#x645;&#x644; &#x628;&#x648;&#x62A;&#x633;&#x62A;&#x631;&#x627;&#x628; Bootstrap</title><link>https://academy.hsoub.com/programming/css/bootstrap/%D8%AF%D9%84%D9%8A%D9%84%D9%83-%D8%A7%D9%84%D8%B4%D8%A7%D9%85%D9%84-%D9%84%D8%A5%D8%B9%D8%AF%D8%A7%D8%AF-%D9%88%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-bootstrap-r2256/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2024_02/-Bootstrap---d4-1.png.f6ad2d8afc7cdf33803612b934243d4c.png" /></p>
<p>
	سنتعرف في مقال اليوم على الخطوات الكاملة لإنشاء موقع ويب باستخدام إطار العمل بوتستراب Bootstrap من الصفر، بداية من إنشاء ملفات الموقع على جهازك وتضمين ملفات بوستراب فيها، وانتهاء برفع هذا الموقع على خادم فعلي متصل بالانترنت، كما سنوفر في نهاية المقال الكود البرمجي الكامل للموقع الذي قمنا ببناءه.
</p>

<h2 id="bootstrap-1">
	ما هو بوتستراب Bootstrap
</h2>

<p>
	بوتستراب هو إطار عمل <a href="https://academy.hsoub.com/programming/general/%D8%A5%D8%B7%D8%A7%D8%B1-%D8%B9%D9%85%D9%84-framework/" rel="">framework</a> مجاني ومتعدد الاستخدامات موجه لمطوري الواجهات الأمامية، وهو يساعد على إنشاء <a href="https://academy.hsoub.com/design/user-interface/%D8%AF%D9%84%D9%8A%D9%84%D9%83-%D9%84%D8%AA%D8%B5%D9%85%D9%8A%D9%85-%D9%85%D9%88%D8%A7%D9%82%D8%B9-%D8%A7%D9%84%D8%A5%D9%86%D8%AA%D8%B1%D9%86%D8%AA-%D8%A7%D9%84%D9%85%D8%AA%D8%AC%D8%A7%D9%88%D8%A8%D8%A9-r784/" rel="">مواقع إنترنت متجاوبة</a> مع مختلف أحجام الشاشات بسرعة وسهولة عالية. طُوّر هذا الإطار من قبل مهندسي تويتر Twitter عام 2010 وأثبت جدارته ونجاحه وهو يستخدم حاليًا في الكثير من مواقع وتطبيقات الويب وأشهرها LinkedIn و Spotify وفي الكثير من <a href="https://academy.hsoub.com/programming/php/wordpress/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%82%D9%88%D8%A7%D9%84%D8%A8-%D9%88%D9%88%D8%B1%D8%AF%D8%A8%D8%B1%D9%8A%D8%B3-r2017/" rel="">قوالب ووردبريس WordPress</a>.
</p>

<p>
	يمكنك باستخدام Bootstrap إنشاء صفحات HTML حسب احتياجاتك وتنسيقها بأسلوب أنيق يناسب تصميمك<span id="cke_bm_413C" style="display: none;"> </span>، إذ يتضمن بوتستراب الكثير من الميزات التصميمة مثل الشرائح الدوارة carousels والجداول، والأزرار، والنوافذ المنبثقة، وغيرها كما يوفر مجموعة واسعة من الاختصارات التي تسهل إنشاء صفحات الويب وتوفر عليك الوقت والجهد.
</p>

<p>
	ولا يتطلب استخدام بوتستراب خبرة برمجية كبيرة، فهو يوفر العديد من الأصناف والملفات الجاهزة ويختصر عليك كتابة الكثير من الشيفرات البرمجية، ولكن يفضل أن تمتلك فهمًا أساسيًا في التعامل مع لغات تطوير الويب الأساسية وهي <a href="https://wiki.hsoub.com/HTML" rel="external">HTML</a> و <a href="https://wiki.hsoub.com/CSS" rel="external">CSS</a> و <a href="https://wiki.hsoub.com/JavaScript" rel="external">JavaScript</a>، ومعرفة بمفهوم التصميم المتجاوب لصفحات الويب. وإذا لم تكن ملما بها، فيمكنك التعرف عليها في المسار الأول من <a href="https://academy.hsoub.com/learn/front-end-web-development/" rel="">دورة تطوير واجهات المستخدم</a> من أكاديمية حسوب.<span id="cke_bm_418C" style="display: none;"> </span>
</p>

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="487" id="ips_uid_3406_5" src="https://academy.hsoub.com/applications/core/interface/index.html" title="ما هو بوتستراب Bootstrap" width="866" data-embed-src="https://www.youtube.com/embed/eV54nhF3sVo"></iframe>
</p>

<p>
	لننتقل الآن بعد هذه المقدمة الموجزة لشرح كافة الخطوات اللازمة لبناء موقع باستخدام بوتستراب من الألف للياء.
</p>

<h2 id="1bootstrap">
	الخطوة 1: إعداد Bootstrap
</h2>

<p>
	من أجل استخدام Bootstrap في صفحات موقعك الإلكتروني أمامك احتمالان مختلفان:
</p>

<ol>
	<li>
		تحميل ملفات بوتستراب على جهاز الحاسوب الخاص بك ثم تضمنيها في موقعك.
	</li>
	<li>
		استدعاء ملفات بوتستراب من شبكة توصيل المحتوى CDN، وتضمين رابط CDN في صفحات الويب الخاصة بك.
	</li>
</ol>

<p>
	إن استدعاء بوتستراب عن بعد فكرة جيدة حيث سيكون لكثير من المستخدمين الملف بالفعل في الذاكرة المؤقتة لمتصفحهم من تحميل مواقع الويب التي تستخدم بوتستراب، وبالتالي لن يضطروا الى إعادة تحميلها عند الدخول إلى موقعك وهذا سيسرع وقت تحميل الصفحة وهذه هي الطريقة الموصى بها، ومع ذلك يمكنك بغرض التجربة والتطوير او الاستخدام الشخصي أو التعامل مع بوتستراب دون الحاجة للاتصال بالإنترنت، فيمكنك أيضا الحصول على نسختك الخاصة من الملفات وسنبين الأسلوبين تاليًا.
</p>

<h3 id="bootstrapcdn">
	استدعاء Bootstrap من شبكة CDN
</h3>

<p>
	ننشئ كخطوة أولية ملف HTML بسيط كقاعدة لاستخدام Bootstrap، لذلك أول شيء عليك القيام به هو إنشاء مجلد باسم bootstrap على جهاز الحاسوب الخاص بك -أو الخادم server- من أجل تخزين ملفات المشروع وأنشئ ملف ضمنه باسم <code>html.index</code> وافتحه بمحرر الأكواد المفضل لديك مثل ++Notepad ثم وألصق فيه الكود التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1751_6" style=""><span class="pln">!DOCTYPE html&gt;
</span><span class="tag">&lt;html</span><span class="pln"> </span><span class="atn">lang</span><span class="pun">=</span><span class="atv">"en"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;head&gt;</span><span class="pln">
        </span><span class="tag">&lt;title&gt;</span><span class="pln">Bootstrap Tutorial Sample Page</span><span class="tag">&lt;/title&gt;</span><span class="pln">
        </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">charset</span><span class="pun">=</span><span class="atv">"utf-8"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"viewport"</span><span class="pln"> </span><span class="atn">content</span><span class="pun">=</span><span class="atv">"width=device-width, initial-scale=1"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;/head&gt;</span><span class="pln">
    </span><span class="tag">&lt;body&gt;</span><span class="pln">
    </span><span class="tag">&lt;/body&gt;</span><span class="pln">
</span><span class="tag">&lt;/html&gt;</span></pre>

<p>
	الخطوة التالية هي استدعاء ملفات بوتستراب في ترويسة الصفحة header من خلال توفير رابط الوصول لشبكة توصيل المحتوى <a href="https://academy.hsoub.com/devops/cloud-computing/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%B4%D8%A8%D9%83%D8%A7%D8%AA-%D8%AA%D8%B3%D9%84%D9%8A%D9%85-%D8%A7%D9%84%D9%85%D8%AD%D8%AA%D9%88%D9%89-cdn-%D9%84%D8%AA%D8%B3%D8%B1%D9%8A%D8%B9-%D8%AA%D8%B3%D9%84%D9%8A%D9%85-%D8%A7%D9%84%D9%85%D8%AD%D8%AA%D9%88%D9%89-%D8%A7%D9%84%D8%AB%D8%A7%D8%A8%D8%AA-r393/" rel="">CDN</a>، ويمكنك العثور على هذا الرابط أسفل <a href="https://getbootstrap.com/docs/4.5/getting-started/download/" rel="external nofollow">صفحة تنزيل بوتستراب</a>. كل ما عليك هو نسخه ولصقه في الوسم <code>&lt;head&gt;</code> في صفحة الويب الخاصة بك على النحو التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1751_8" style=""><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css"</span><span class="pln"> </span><span class="atn">integrity</span><span class="pun">=</span><span class="atv">"sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2"</span><span class="pln"> </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="tag">&gt;</span></pre>

<p>
	ملاحظة: تأكد من أخذ الربط الفعلي من صفحة التنزيل الفعلية لتضمن أنك تستخدم أحدث إصدار من بوتستراب.
</p>

<p>
	بعد إضافة الكود وعرض الملف في المتصفح، يحمل المتصفح بوتستراب تلقائيًا.
</p>

<h3 id="bootstrap-2">
	تحميل Bootstrap محليًا
</h3>

<p>
	الطريقة البديلة لإعداد بوتستراب هي تنزيله على جهازك واستخدام الملفات محليًا، ستجد ملفات التنزيل أيضا في <a href="https://getbootstrap.com/docs/4.5/getting-started/download/" rel="external nofollow">صفحة تنزيل بوتستراب</a> وبمجرد الانتهاء من تنزيله قم بفك ضغط الملف ستجد ضمنه مجلدين: مجلد css يحتوي على ملفات CSS ومجلد js يحتوي على ملفات JS
</p>

<p>
	انسخ محتويات هذا المجلد في مجلد المشروع الذي أنشأته سابقًا، وبعد ذلك يمكنك تضمين ملف css مثلًا في ترويسة الملف <code>html.index</code> لتحميله قبل تحميل محتوى صفحة الويب من خلال كتابة الكود التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1751_10" style=""><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="pln"> </span><span class="atv">"bootstrap/css/bootstrap.min.css"</span><span class="tag">&gt;</span></pre>

<p>
	ستلاحظ أن هذا يتضمن مسار الملف الذي يمكن من خلاله العثور على ملف Bootstrap، تأكد من أن مسارك يتوافق مع الإعداد الفعلي، فأسماء المسارات قد تختلف من اصدار آخر لإطار العمل Bootstrap وبحسب بنية موقعك.
</p>

<p>
	ولتضمين ملف جافا سكريبت يمكنك كتابة الكود التالي أسفل الصفحة قبل الوسم <code>&lt;body/&gt;</code> مباشرة:
</p>

<pre class="ipsCode">&lt;script src="bootstrap/js/bootstrap.min.js"&gt;&lt;/script&gt;
</pre>

<h3 id="jquery">
	تضمين jQuery
</h3>

<p>
	من أجل الحصول على الوظائف الكاملة لبوتستراب، ستحتاج أيضا إلى تحميل مكتبة <a href="https://academy.hsoub.com/programming/javascript/jquery/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D9%91%D8%A7%D8%AA-jquery-r60/" rel="">jQuery</a> ويمكنك أيضًا تحميلها عن طريق استدعائها عن بعد او استضافتها محليًا على جهازك.
</p>

<p>
	ملاحظة: سيتوقف <a href="https://getbootstrap.com/docs/versions/" rel="external nofollow">الإصدار الحالي</a> 5 Bootstrap الموجود حاليًا في حالة Beta عن استخدام مكتبة jQuery ويعتمد على استخدام أكواد جافا سكريبت العادية، أما الإصدار الحالي Bootstrap 4 فلا زال يعتمد على مكتبة jQuery لذا ستحتاج لتضمينها في مشروعك.
</p>

<p>
	يمكنك العثور على أحدث إصدار من مكتبة jQuery من خلال ذلك التوجه إلى <a href="https://code.jquery.com/" rel="external nofollow">releases.jquery</a>، ونسخ السطر البرمجي الآتي ولصقه قبل وسم الإغلاق <code>&lt;body\&gt;</code>.
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1751_15" style=""><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"https://code.jquery.com/jquery-3.5.1.min.js"</span><span class="pln"> </span><span class="atn">integrity</span><span class="pun">=</span><span class="atv">"sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0="</span><span class="pln"> </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="tag">&gt;&lt;/script&gt;</span></pre>

<p>
	كما يمكنك بدلًا من ذلك تنزيل ملفات jQuery من نفس الرابط ونقلها إلى مجلد المشروع، واستدعاؤها في في صفحتك من خلال الكود التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1751_13" style=""><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"jquery-3.5.1.min.js"</span><span class="tag">&gt;&lt;/script&gt;</span></pre>

<p>
	مرة أخرى تأكد من أن المسار متوافق مع موقع ملف المكتبة وإصدار jQuery الذي تستخدمه.
</p>

<h3 id="bootstrapjavascript">
	تحميل ملحقات مكتبة Bootstrap JavaScript
</h3>

<p>
	الخطوة الأخيرة في إعداد Bootstrap هي ملحقات مكتبة جافا سكربيت الخاصه ببوتستراب، وستجد هذا الملف مضمن في مجلد إطار العمل بوتستراب الذي قمت بتحميله محليًا وكتابة الكود التالي أسفل الصفحة بعد استدعاء jQuery مباشرة
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1751_17" style=""><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"bootstrap/js/bootstrap.min.js"</span><span class="tag">&gt;&lt;/script&gt;</span></pre>

<p>
	كما يمكنك العثور على روابط لتضمينه مباشرة في صفحتك دون الحاجة لتحميله في صفحة تحميل بوتستراب التي ذكرناها سابقًا واستدعاؤه من خلال كتابة الكود التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1751_19" style=""><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.min.js"</span><span class="pln"> </span><span class="atn">integrity</span><span class="pun">=</span><span class="atv">"sha384-w1Q4orYjBQndcko6MimVbzY0tgp4pWB4lZ7lr30WKz0vr/aWKhXdBNmNb5D92v7s"</span><span class="pln"> </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="tag">&gt;&lt;/script&gt;</span></pre>

<p>
	اذا اتبعت الخطوات المذكورة في الأعلى بشكل صحيح، فيجب أن ينتهي بك الأمر بملف يشبه التالي (إذا كنت تتبع أسلوب تضمين بوتستراب من شبكة CDN المتصلة بالإنترنت):
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1751_21" style=""><span class="dec">&lt;!DOCTYPE html&gt;</span><span class="pln">
</span><span class="tag">&lt;html</span><span class="pln"> </span><span class="atn">lang</span><span class="pun">=</span><span class="atv">"en"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;head&gt;</span><span class="pln">
        </span><span class="tag">&lt;title&gt;</span><span class="pln">Bootstrap Tutorial Sample Page</span><span class="tag">&lt;/title&gt;</span><span class="pln">
        </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">charset</span><span class="pun">=</span><span class="atv">"utf-8"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"viewport"</span><span class="pln"> </span><span class="atn">content</span><span class="pun">=</span><span class="atv">"width=device-width, initial-scale=1"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css"</span><span class="pln"> </span><span class="atn">integrity</span><span class="pun">=</span><span class="atv">"sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2"</span><span class="pln"> </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;/head&gt;</span><span class="pln">
    </span><span class="tag">&lt;body&gt;</span><span class="pln">
        </span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"https://code.jquery.com/jquery-3.5.1.min.js"</span><span class="pln"> </span><span class="atn">integrity</span><span class="pun">=</span><span class="atv">"sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0="</span><span class="pln"> </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">
        </span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.min.js"</span><span class="pln"> </span><span class="atn">integrity</span><span class="pun">=</span><span class="atv">"sha384-w1Q4orYjBQndcko6MimVbzY0tgp4pWB4lZ7lr30WKz0vr/aWKhXdBNmNb5D92v7s"</span><span class="pln"> </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">
    </span><span class="tag">&lt;/body&gt;</span><span class="pln">
</span><span class="tag">&lt;/html&gt;</span></pre>

<p>
	أما إذا كنت تستدعيها محليًا على جهازك سيكون شكل الكود كالتالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1751_23" style=""><span class="dec">&lt;!DOCTYPE html&gt;</span><span class="pln">
</span><span class="tag">&lt;html</span><span class="pln"> </span><span class="atn">lang</span><span class="pun">=</span><span class="atv">"en"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;head&gt;</span><span class="pln">
        </span><span class="tag">&lt;title&gt;</span><span class="pln">Bootstrap Tutorial Sample Page</span><span class="tag">&lt;/title&gt;</span><span class="pln">
        </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">charset</span><span class="pun">=</span><span class="atv">"utf-8"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"viewport"</span><span class="pln"> </span><span class="atn">content</span><span class="pun">=</span><span class="atv">"width=device-width, initial-scale=1"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"bootstrap/css/bootstrap.min.css"</span><span class="tag">&gt;</span><span class="pln">    
    </span><span class="tag">&lt;/head&gt;</span><span class="pln">
    </span><span class="tag">&lt;body&gt;</span><span class="pln">    
        </span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"jquery-3.5.1.min.js"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">
        </span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"bootstrap/js/bootstrap.min.js"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">        
    </span><span class="tag">&lt;/body&gt;</span><span class="pln">    
</span><span class="tag">&lt;/html&gt;</span></pre>

<p>
	الآن انتهيت من إعداد بوتستراب وأنت جاهز الان جاهز للانتقال إلى الخطوة التالية.
</p>

<h2 id="2">
	الخطوة 2: تصميم صفحة الهبوط الخاصة بك
</h2>

<p>
	إذا فتحت صفحة موقعك الإلكتروني بالمتصفح ستجدها فارغة، وفي هذه الخطوة سننشئ <a href="https://academy.hsoub.com/marketing/inbound-marketing/%D8%AA%D8%B9%D8%B1%D9%91%D9%81-%D8%B9%D9%84%D9%89-%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D9%87%D8%A8%D9%88%D8%B7-landing-pages-%D9%88%D9%85%D9%83%D9%88%D9%91%D9%86%D8%A7%D8%AA%D9%87%D8%A7-r23/" rel="">صفحة هبوط</a> تحتوى على عناصر مختلفة، حتى نجعلك ترى حالات مختلفة لاستخدام إطار العمل بوتستراب.
</p>

<h3 id="">
	إضافة شريط التنقل
</h3>

<p>
	أول شيء نود القيام به هو أن نضيف شريط التنقل بأعلى الصفحة، وهذا يسمح للزوار بالتجول والتنقل في موقعك واكتشاف صفحاته الأخرى. لذلك سوف نستخدم الصنف <a href="https://wiki.hsoub.com/Bootstrap/navbar" rel="external"><code>navbar</code></a> الذي يعد أحد العناصر الافتراضية في Bootstrap وينشئ شريط تنقل متجاوب مع مختلف أحجام الشاشات
</p>

<p>
	سنكتب كود إضافته مباشرة بعد الوسم <code>&lt;body&gt;</code> على النحو التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1751_25" style=""><span class="tag">&lt;nav</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar navbar-expand-md"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar-brand"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">Logo</span><span class="tag">&lt;/a&gt;</span><span class="pln">
    </span><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar-toggler navbar-dark"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">data-toggle</span><span class="pun">=</span><span class="atv">"collapse"</span><span class="pln"> </span><span class="atn">data-target</span><span class="pun">=</span><span class="atv">"#main-navigation"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;span</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar-toggler-icon"</span><span class="tag">&gt;&lt;/span&gt;</span><span class="pln">
    </span><span class="tag">&lt;/button&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"collapse navbar-collapse"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"main-navigation"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;ul</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar-nav"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;li</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-item"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-link"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">Home</span><span class="tag">&lt;/a&gt;</span><span class="pln">
            </span><span class="tag">&lt;/li&gt;</span><span class="pln">
            </span><span class="tag">&lt;li</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-item"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-link"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">About</span><span class="tag">&lt;/a&gt;</span><span class="pln">
            </span><span class="tag">&lt;/li&gt;</span><span class="pln">
            </span><span class="tag">&lt;li</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-item"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-link"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">Contact</span><span class="tag">&lt;/a&gt;</span><span class="pln">
            </span><span class="tag">&lt;/li&gt;</span><span class="pln">
        </span><span class="tag">&lt;/ul&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="tag">&lt;/nav&gt;</span></pre>

<p>
	قد تكون الشيفرة أعلاه مليئة بأصناف css الجديدة عليك، لذا سنقدم لها شرحًا له موجزًا:
</p>

<ul>
	<li>
		 <code>navbar-expand-md</code>: يشير إلى النقطة التي يتوسع فيها شريط التنقل وينتقل من أسلوب عرضه عموديًا إلى شريط أفقي يأخذ حجمًا كاملًا ، وفي حالتنا حددنا توسيعه في الشاشات المتوسطة التي يكون عرضها أكبر من 768 بكسل.
	</li>
	<li>
		 <code>navbar-brand</code>: يستخدم لتضمين اسم الموقع أو صورة شعاره ضمن شريط التنقل.
	</li>
	<li>
		 <code>navbar-toggler</code>: يشير لزر التبديل الذي يتحكم بظهور واختفاء القائمة القابلة للطي فالقيمة <code>collapse=toggle-data</code> تشير لأن شريط التنقل سيتحول إلى أيقونة وليس الى قائمة منسدلة، ومن المهم أن تحدد الهدف من خلال معرف id وتضع نفس الـ id في عنصر <code>navbar</code> الفعلي.
	</li>
	<li>
		 <code>navbar-toggler-icon</code>: يؤدي إلى إنشاء الأيقونة التي يضغط عليه المستخدمون لفتح القائمة على شاشات أصغر وتمثل عادة على شكل أيقونة تحتوي ثلاثة خطوط أفقية متوازية (أيقونة الهمبرغر).
	</li>
	<li>
		 <code>navbar-nav</code>: يحتوى على عناصر القائمة الموجودة في شريط التنقل، ويستخدم مع <code>nav-item</code> و <code>nav-link</code> لتنسيق وتنظيم العناصر داخل القائمة.
	</li>
</ul>

<p>
	بهذا نكون قد انتهينا من إنشاء شريط تنقل في صفحة الهبوط وسيبدو على النحو التالي:
</p>

<p style="text-align: center;">
	<img alt="navbar.png" class="ipsImage ipsImage_thumbnailed" data-fileid="144626" data-ratio="8.50" data-unique="7m5i7penf" width="753" src="https://academy.hsoub.com/uploads/monthly_2024_02/navbar.png.8d53af628dbab99c3f2376e7e1dd9f5f.png">
</p>

<p>
	قد لا يبدو الشريط مثاليًا لكونه لا يحتوى على التنسيقات المرتبطة به، ويمكننا إضافة ألوان افتراضية على سبيل المثال يمكن إعطاء شريط التنقل أصناف مثل <code>navbar-dark bg-dark</code> لإضافة ألوان داكنة افتراضية أو كتابة تنسيقاتنا المخصصة وربطها بهذه الأصناف كما سنوضح في الفقرة التالية.
</p>

<h3 id="css">
	تضمين ملف CSS بتنسيقات خاصة
</h3>

<p>
	لحسن الحظ يمكنك تغيير التنسيق الافتراضي لأصناف بوتستراب لكن لا داعي لتعديل ملفات التنسيق يدويًا بل يمكنك إضافة ملفات CSS الخاصة بك واستخدامها للاستعاضة عن التنسيق الحالي.
</p>

<p>
	كل ما عليك فعله هو إنشاء ملف فارغ باستخدام محرر الأكواد الخاص بك وتسميته <code>main.css</code> على سبيل المثال وربطه بصفحة الويب بكتابة الكود التالي في وسم الترويسة <code>&lt;head&gt;</code>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1751_28" style=""><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"text/css"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"main.css"</span><span class="tag">&gt;</span></pre>

<p>
	يفترض الكود أعلاه أن الملف موجود في مجلد المشروع الرئيسي مباشرة، فإذا كنت تريد وضع الملف في مجلد فرعي، فعليك تضمين المسار الصحيح حتى يعمل.
</p>

<p>
	الآن يمكنك إضافة التنسيقات الخاصة بك الى موقعك بكتابتها ضمن هذا الملف، على سبيل المثال لتصميم خلفية لصفحتك الخاصة بالإضافة إلى شريط التنقل ومكوناته، يمكنك كتابة كود تنسيق كالتالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_9787_7" style=""><span class="pln">body </span><span class="pun">{</span><span class="pln">
 </span><span class="kwd">padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
 </span><span class="kwd">margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
 </span><span class="kwd">background</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#f2f6e9</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">navbar </span><span class="pun">{</span><span class="pln">
 </span><span class="kwd">background</span><span class="pun">:</span><span class="lit">#6ab446</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">nav-link</span><span class="pun">,</span><span class="pln">
</span><span class="pun">.</span><span class="pln">navbar-brand </span><span class="pun">{</span><span class="pln">
 </span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#fff</span><span class="pun">;</span><span class="pln">
 </span><span class="kwd">cursor</span><span class="pun">:</span><span class="pln"> pointer</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">nav-link </span><span class="pun">{</span><span class="pln">
 </span><span class="kwd">margin-right</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1em</span><span class="pln"> </span><span class="kwd">!important</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="kwd">nav-link</span><span class="pun">:</span><span class="pln">hover </span><span class="pun">{</span><span class="pln">
 </span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#000</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">navbar-collapse </span><span class="pun">{</span><span class="pln">
 </span><span class="kwd">justify-content</span><span class="pun">:</span><span class="pln"> flex-end</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	بعد تطبيق التنسيقات ستظهر النتيجة كما في الصورة التالية:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="144620" href="https://academy.hsoub.com/uploads/monthly_2024_02/navbar-style.png.9d5b3fb78e003e41b003b65d43dd5a85.png" rel=""><img alt="navbar style" class="ipsImage ipsImage_thumbnailed" data-fileid="144620" data-unique="7tzf8v5p4" src="https://academy.hsoub.com/uploads/monthly_2024_02/navbar-style.png.9d5b3fb78e003e41b003b65d43dd5a85.png"> </a>
</p>

<h3 id="-1">
	إنشاء حاوية لمحتوى الصفحة
</h3>

<p>
	بعد شريط التنقل سننشئ حاوية لمحتوى الصفحة وهذا أمر سهل في بوتستراب فكل ما تحتاجه هو إضافة الشيفرة التالية أسفل الوسم <code>navbar</code> :
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1751_32" style=""><span class="tag">&lt;header</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"page-header header container-fluid"</span><span class="tag">&gt;</span><span class="pln">
</span><span class="tag">&lt;/header&gt;</span></pre>

<p>
	لا حظ أن الصنف <a href="https://wiki.hsoub.com/Bootstrap/layout_overview" rel="external"><code>container-fluid</code></a> هو من أحد الأصناف الافتراضية في Bootstrap ويؤدي تطبيقه على عنصر <code>div</code> إلى تطبيق مجموعة من التنسيقات الخاصة عليه تلقائيًا والتأكد من أن الحاوية تتمدد عبر عرض الشاشة بالكامل، كما أنها مازالت حاوية ولديها عرض تابت خاص بها لذلك ستجد دائما مساحة على جانبي الشاشة بسبب حجمها الثابت.
</p>

<p>
	ومع ذلك إذا قمت بإعادة تحميل الصفحة الآن، فلن ترى أي شيء في الحاوية لأنك قمت بإنشاء عنصر HTML فارغ. سنكمل إضافة العناصر في الخطوة التالية
</p>

<h3 id="-2">
	إضافة صورة خلفية و شيفرة جافا سكريبت مخصصة
</h3>

<p>
	نريد الآن تضمين صورة خلفية بملء الشاشة في الصفحة، وسنستخدم بعض أكواد jQuery أو JavaScript لجعل الصورة تتمدد على كامل الشاشة.
</p>

<p>
	يمكنك القيام بذلك كما قمت بتضمين ملف CSS مخصص في صفحتك، عن طريق إنشاء ملف نصي فارغ باسم <code>main.js</code> ووضعه داخل مجلد الموقع ثم استدعائه قبل الوسم <code>&lt;body/&gt;</code> مباشرة داخل الصفحة <code>index.html</code>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1751_34" style=""><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"main.js"</span><span class="tag">&gt;&lt;/script&gt;</span></pre>

<p>
	وبعد ذلك أضف كود jQuery التالي لجعل عنصر ال <code>&lt;header&gt;</code> يمتد عبر الشاشة كلها:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_1751_58" style=""><span class="pln">$</span><span class="pun">(</span><span class="pln">document</span><span class="pun">).</span><span class="pln">ready</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(){</span><span class="pln">
    $</span><span class="pun">(</span><span class="str">'.header'</span><span class="pun">).</span><span class="pln">height</span><span class="pun">(</span><span class="pln">$</span><span class="pun">(</span><span class="pln">window</span><span class="pun">).</span><span class="pln">height</span><span class="pun">());</span><span class="pln">
</span><span class="pun">})</span></pre>

<p>
	كما ذكرنا سابقًا لن يأتي 5 Bootstrap مضمنًا مع مكتبة jQuery، لذا للقيام بهذه لخطوة في موقعك عند التعامل مع هذا الإصدار سيكون عليك كتابة أكواد JavaScript التالية:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_9787_9" style=""><span class="kwd">var</span><span class="pln"> ready </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="pln">callback</span><span class="pun">)</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">document</span><span class="pun">.</span><span class="pln">readyState </span><span class="pun">!=</span><span class="pln"> </span><span class="str">"loading"</span><span class="pun">)</span><span class="pln"> callback</span><span class="pun">();</span><span class="pln">
    </span><span class="kwd">else</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">"DOMContentLoaded"</span><span class="pun">,</span><span class="pln"> callback</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
ready</span><span class="pun">(()</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">".header"</span><span class="pun">).</span><span class="pln">style</span><span class="pun">.</span><span class="pln">height </span><span class="pun">=</span><span class="pln"> window</span><span class="pun">.</span><span class="pln">innerHeight </span><span class="pun">+</span><span class="pln"> </span><span class="str">"px"</span><span class="pun">;</span><span class="pln">
</span><span class="pun">})</span></pre>

<p>
	بعد ذلك قم بتعيين مسار صورة الخلفية من داخل ملف <code>main.css</code> كما يلي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_1751_54" style=""><span class="pun">.</span><span class="pln">header </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">background-image</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">url</span><span class="pun">(</span><span class="str">'images/header-background.jpg'</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">background-size</span><span class="pun">:</span><span class="pln"> cover</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">background-position</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">position</span><span class="pun">:</span><span class="pln"> relative</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	إذا أضفت صورة ذات حجم مناسب وفى المسار الصحيح سوف تحصل على نتيجة مشابهة للتالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="144604" href="https://academy.hsoub.com/uploads/monthly_2024_02/background.png.2d335877d5c393fc225f533169e5a195.png" rel=""><img alt="background" class="ipsImage ipsImage_thumbnailed" data-fileid="144604" data-unique="mvqx75hx1" src="https://academy.hsoub.com/uploads/monthly_2024_02/background.png.2d335877d5c393fc225f533169e5a195.png"> </a>
</p>

<h3 id="overlay">
	إضافة تراكب overlay
</h3>

<p>
	لجعل صورة الخلفية أكثر أناقة سنضيف تأثير التراكب (overlay) لذلك قم بإنشاء <code>div</code> آخر داخل الوسم <code>&lt;header&gt;</code> الذي قمت بإنشائه منذ قليل
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1751_42" style=""><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"overlay"</span><span class="tag">&gt;&lt;/div&gt;</span></pre>

<p>
	بعد ذلك يمكنك إضافة التنسيقات الخاصة به داخل ملف ال CSS كما يلي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_1751_52" style=""><span class="pun">.</span><span class="pln">overlay </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">position</span><span class="pun">:</span><span class="pln"> absolute</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">min-height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100%</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">min-width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100%</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">background</span><span class="pun">:</span><span class="pln"> rgba</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.6</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	هذا سوف سينشئ تراكب مميز للغاية للصورة التي قمت بوضعها:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="144621" href="https://academy.hsoub.com/uploads/monthly_2024_02/overlay.png.200c808cfbe575f093b4e50f23db4550.png" rel=""><img alt="overlay" class="ipsImage ipsImage_thumbnailed" data-fileid="144621" data-unique="8mmdy0x1k" src="https://academy.hsoub.com/uploads/monthly_2024_02/overlay.png.200c808cfbe575f093b4e50f23db4550.png"> </a>
</p>

<h3 id="-3">
	إضافة عنوان الصفحة ومحتواها النصي
</h3>

<p>
	لنضف عنوان للصفحة وبعض النصوص الأساسية لصفحة الهبوط الخاصة بنا، لإنشاء ذلك كل ما عليك هو إضافة ذلك الكود داخل الحاوية التي قمت بإنشائها وكتابة الكود التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1751_46" style=""><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"description"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;h1&gt;</span><span class="pln"> Welcome to the Landing Page!</span><span class="tag">&lt;/h1&gt;</span><span class="pln">
    </span><span class="tag">&lt;p&gt;</span><span class="pln"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum quam odio, quis placerat ante luctus eu. Sed aliquet dolor id sapien rutrum, id vulputate quam iaculis. Suspendisse consectetur mi id libero fringilla, in pharetra sem ullamcorper.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	وبعد ذلك أضف بعض التنسيقات في ملف <code>main.css</code> على النحو التالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_1751_50" style=""><span class="pun">.</span><span class="pln">description </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50%</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">position</span><span class="pun">:</span><span class="pln"> absolute</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">45%</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">transform</span><span class="pun">:</span><span class="pln"> translate</span><span class="pun">(-</span><span class="lit">50%</span><span class="pun">,</span><span class="pln"> </span><span class="pun">-</span><span class="lit">55%</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">text-align</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">description h1 </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#6ab446</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">description p </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#fff</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">font-size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1.3rem</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">line-height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1.5</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	الآن سوف تبدو صفحة الهبوط هكذا:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="144612" href="https://academy.hsoub.com/uploads/monthly_2024_02/main-text.png.22687f095b07d85362a549660839a68c.png" rel=""><img alt="main text" class="ipsImage ipsImage_thumbnailed" data-fileid="144612" data-unique="6eusx7aoz" src="https://academy.hsoub.com/uploads/monthly_2024_02/main-text.png.22687f095b07d85362a549660839a68c.png"> </a>
</p>

<h3 id="cta">
	إنشاء زر دعوة لاتخاذ إجراء CTA
</h3>

<p>
	لا تكتمل أي صفحة بدون عبارة تحث المستخدم على اتخاذ إجراء ، وغالبا تكون على شكل زر ، لحسن الحظ يوفر إطار العمل Bootstrap الكثير من الأدوات لانشاء الأزرار بسرعة وسهولة، يمكنك أن تجد الكثير من الامثلة <a href="https://getbootstrap.com/docs/4.5/components/buttons/" rel="external nofollow">الازرار</a>، في حالتنا نحن سنقوم بإضافة ذلك الكود اسفل محتوى الصفحة تحت الحاوية <code>&lt;description&gt;</code> كالتالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1751_60" style=""><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-outline-secondary btn-lg"</span><span class="tag">&gt;</span><span class="pln">Tell Me More!</span><span class="tag">&lt;/button&gt;</span></pre>

<p>
	بالإضافة الى ذلك نقوم بإضافة بعض التنسيقات في ملف <code>main.css</code>:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_1751_62" style=""><span class="pun">.</span><span class="pln">description button </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">border</span><span class="pun">:</span><span class="lit">1px</span><span class="pln"> solid </span><span class="lit">#6ab446</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">background</span><span class="pun">:</span><span class="lit">#6ab446</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">border-radius</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">color</span><span class="pun">:</span><span class="lit">#fff</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">description </span><span class="kwd">button</span><span class="pun">:</span><span class="pln">hover </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">border</span><span class="pun">:</span><span class="lit">1px</span><span class="pln"> solid </span><span class="lit">#fff</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">background</span><span class="pun">:</span><span class="lit">#fff</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">color</span><span class="pun">:</span><span class="lit">#000</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	وبعد الحفظ وإعادة تحميل الصفحة سيكون شكلها كالتالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="144605" href="https://academy.hsoub.com/uploads/monthly_2024_02/button.png.aef8bd9d23e71568b4fea156bf6066a9.png" rel=""><img alt="button" class="ipsImage ipsImage_thumbnailed" data-fileid="144605" data-unique="83d2ehoa5" src="https://academy.hsoub.com/uploads/monthly_2024_02/button.png.aef8bd9d23e71568b4fea156bf6066a9.png"> </a>
</p>

<h3 id="-4">
	إنشاء قسم من ثلاثة أعمدة
</h3>

<p>
	لم ننتهي بعد من إنشاء الصفحة بالكامل، نريد الاّن إنشاء ثلاثة أعمدة أسفل المحتوى الرئيسي للحصول على معلومات إضافية من خلال إنشاء شبكة <a href="https://wiki.hsoub.com/Bootstrap/grid" rel="external">grid</a>، إليك كيفية القيام بهذا الأمر:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1751_64" style=""><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container features"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-4 col-md-4 col-sm-12"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;h3</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"feature-title"</span><span class="tag">&gt;</span><span class="pln">Lorem ipsum</span><span class="tag">&lt;/h3&gt;</span><span class="pln">
            </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/column-1.jpg"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"img-fluid"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;p&gt;</span><span class="pln">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum quam odio, quis placerat ante luctus eu. Sed aliquet dolor id sapien rutrum, id vulputate quam iaculis.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">

        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-4 col-md-4 col-sm-12"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;h3</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"feature-title"</span><span class="tag">&gt;</span><span class="pln">Lorem ipsum</span><span class="tag">&lt;/h3&gt;</span><span class="pln">
            </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/column-2.jpg"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"img-fluid"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;p&gt;</span><span class="pln">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum quam odio, quis placerat ante luctus eu. Sed aliquet dolor id sapien rutrum, id vulputate quam iaculis.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">

        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-4 col-md-4 col-sm-12"</span><span class="tag">&gt;</span><span class="pln">

        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	أول شيء ستلاحظه هو عنصر الصنف <code>row</code> والذي ستحتاجه عند إنشاء أعمدة لتعمل كحاوية للشبكة، أما بالنسبة للأعمدة فجميعها بها عدة أصناف مثل <code>col-md-4</code> و <code>col-sm-12</code> و <code>col-lg-4</code> تشير لأحجام مختلفة للأعمدة على الشاشات المختلفة. ففي النظام الشبكي لبوتستراب يصل عدد الأعمدة في الصف الواحد إلى<br>
	12 عمود، وبالتالي عند منحهم الأصناف السابقة فهذا يعني أنهم سيشغلون ثلث الشاشة على الشاشات الكبيرة والمتوسطة (4 من أصل 12 عمود)، ويشغلون الشاشة بأكملها على الأجهزة الصغيرة (12 من أصل 12 عمود).
</p>

<p>
	ستلاحظ أيضا أننا قمنا بتضمين و<a href="https://wiki.hsoub.com/Bootstrap/images" rel="external">تنسيق الصور</a> باستخدام الصنف <code>image-fluid</code> لجعلها متجاوبة مع حجم الشاشة التي تعرض عليها ويمكنك إضافة التنسيق التالي في ملف التنسيقات المعتاد للمزيد من التنسيقات الخاصة:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_1751_66" style=""><span class="pun">.</span><span class="pln">features </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">4em</span><span class="pln"> auto</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1em</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">position</span><span class="pun">:</span><span class="pln"> relative</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">feature-title </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#333</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">font-size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1.3rem</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">font-weight</span><span class="pun">:</span><span class="pln"> </span><span class="lit">700</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">margin-bottom</span><span class="pun">:</span><span class="pln"> </span><span class="lit">20px</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">text-transform</span><span class="pun">:</span><span class="pln"> uppercase</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">features img </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">-webkit-box-shadow</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> </span><span class="lit">4px</span><span class="pln"> rgba</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.4</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">-moz-box-shadow</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> </span><span class="lit">4px</span><span class="pln"> rgba</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.4</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">box-shadow</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> </span><span class="lit">4px</span><span class="pln"> rgba</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.4</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">margin-bottom</span><span class="pun">:</span><span class="pln"> </span><span class="lit">16px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	سيكون شكل صفحتنا الآن كالتالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="144610" href="https://academy.hsoub.com/uploads/monthly_2024_02/grid-columns.png.360f1826bb7a3701124a6d0dcee86332.png" rel=""><img alt="grid columns" class="ipsImage ipsImage_thumbnailed" data-fileid="144610" data-unique="tq98iy11u" src="https://academy.hsoub.com/uploads/monthly_2024_02/grid-columns.thumb.png.7e3a248f2d57da557c590a7882a0cf82.png"> </a>
</p>

<p>
	إذا كنت لا تريد تعيين ظل الصندوق يدويًا على عناصرك عبر CSS فيمكنك استخدام أصناف محددة مسبقًا في بوتستراب مثل<br>
	<code>shadow-sm.</code> و <code>shadow.</code> و <code>shadow-lg.</code>. ولللمزيد من المعلومات عن تلك الأصناف يمكنك مطالعة <a href="https://wiki.hsoub.com/Bootstrap/shadows" rel="external">مكوِّن الظلال Shadows في إطار العمل Bootstrap</a>.
</p>

<h3 id="-5">
	إضافة نموذج الاتصال
</h3>

<p>
	ستلاحظ أن أحد الحقول الجديدة لا يزال فارغًا، و هذا عن قصد لأننا نريد إضافة نموذج اتصال إليه للسماح للزوار بالتواصل معنا، ولحسن الحظ فإن إنشاء نموذج اتصال في Bootstrap امر سهل للغاية، كل ما عليك هو كتابة الكود التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1751_68" style=""><span class="tag">&lt;h3</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"feature-title"</span><span class="tag">&gt;</span><span class="pln">Get in Touch!</span><span class="tag">&lt;/h3&gt;</span><span class="pln">
</span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-group"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"text"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-control"</span><span class="pln"> </span><span class="atn">placeholder</span><span class="pun">=</span><span class="atv">"Name"</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">""</span><span class="tag">&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-group"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"email"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-control"</span><span class="pln"> </span><span class="atn">placeholder</span><span class="pun">=</span><span class="atv">"Email Address"</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"email"</span><span class="tag">&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-group"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;textarea</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-control"</span><span class="pln"> </span><span class="atn">rows</span><span class="pun">=</span><span class="atv">"4"</span><span class="tag">&gt;&lt;/textarea&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"submit"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-secondary btn-block"</span><span class="pln"> </span><span class="atn">value</span><span class="pun">=</span><span class="atv">"Send"</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">""</span><span class="tag">&gt;</span></pre>

<p>
	يستخدم الصنف <code>from-group</code> لتغليف حقول النموذج لتنسيقها ويشير الصنف <code>from-control</code> إلى حقول النموذج مثل الحقول النصية والأزرار وما إلى ذلك.
</p>

<p>
	هناك الكثير الذي يمكنك القيام به باستخدام النماذج والتي يمكنك العثور عليها في <a href="https://wiki.hsoub.com/Bootstrap/forms" rel="external">هذا التوثيق الخاص بالنماذج</a>، لكن ما ورد في الأعلى يكفي لصفحتنا الحالية، اكتبه داخل العمود الفارغ المتبقي، ثم أضف في ملف  <code>main.css </code>هذا التنسيق:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_1751_70" style=""><span class="pun">.</span><span class="pln">features </span><span class="pun">.</span><span class="pln">form-control</span><span class="pun">,</span><span class="pln">
</span><span class="pun">.</span><span class="pln">features input </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">border-radius</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">features </span><span class="pun">.</span><span class="pln">btn </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">background-color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#589b37</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> solid </span><span class="lit">#589b37</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#fff</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">margin-top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">20px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">features </span><span class="pun">.</span><span class="kwd">btn</span><span class="pun">:</span><span class="pln">hover </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">background-color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#333</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> solid </span><span class="lit">#333</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	عندما تضيف التنسيقات المطلوبة سيكون لديك نموذج كالتالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="144608" href="https://academy.hsoub.com/uploads/monthly_2024_02/form.png.4029af0677f790f63743dc41c3f9abb6.png" rel=""><img alt="form" class="ipsImage ipsImage_thumbnailed" data-fileid="144608" data-unique="6qgkp3ope" src="https://academy.hsoub.com/uploads/monthly_2024_02/form.png.4029af0677f790f63743dc41c3f9abb6.png"> </a>
</p>

<h2 id="-6">
	قسم الفريق
</h2>

<p>
	سنضيف الآن قسم فريق العمل ونعرض فيه أعضاء الفريق ومناصبهم في الشركة، وسننسقه باستخدام البطاقات <a href="https://wiki.hsoub.com/Bootstrap/card" rel="external">cards</a> وهي عبارة عن حاويات مرنة في بوتستراب.
</p>

<p>
	نريد أن نجعل لهذا القسم لونًا مختلفًا، لذا سننشئ عنصر <code>&lt;div&gt;</code> آخر كخلفية وبداخله حاوية أخرى بصنف مخصص لمزيد من التخصيص متبوعة بصف <code>row</code> كما يلي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1751_72" style=""><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"background"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container team"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row"</span><span class="tag">&gt;</span><span class="pln">

        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	كما تلاحظ يعد إنشاء البطاقات أمًرا سهلًا كل ما عليك هو إعطاء العنصر <code>&lt;div&gt;</code> الصنف <code>card</code> ويمكنك أيضًا استخدام أصناف <code>grid</code> لتحديد حجمها وتحديد عدد البطاقات التي تظهر في الصف الواحد. بالإضافة إلى ذلك نظرًا لأننا نريد أن يتم توسيط كل المحتوى الموجود في البطاقة سنضيف إليها أيضًا الصنف <code>text-center</code> على النحو التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1751_74" style=""><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card col-lg-3 col-md-3 col-sm-4 text-center"</span><span class="tag">&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	يمكن أن تحتوي البطاقات على عناصر مختلفة. وفي حالتنا نريد صورة في الأعلى، متبوعة باسم الشخص كعنوان للبطاقة ووصف يوضح طبيعة عمله وقد لا تتفاجأ إذا علمت أن Bootstrap يقدم اصنافًا مخصصة لكل ذلك.
</p>

<p>
	أما بالنسبة للصور ضمن البطاقات فسنستخدم الصنف <code>card-img-top</code> لوضع صورة على سطح البطاقة، وسنعطيه أيضا صنف <code>rounded-circle</code> لجعل هذه الصورة مستديرة. بعد ذلك ننشئ عنصر جديد <code>card-body</code> يحتوي على عنوان وفقرة مع الصنفين <code>card-title</code> و <code>card-text</code> على التوالي.
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1751_76" style=""><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card col-lg-3 col-md-3 col-sm-4 text-center"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-img-top rounded-circle"</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/team-image-1.png"</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"Card image"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;h4</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-title"</span><span class="tag">&gt;</span><span class="pln">Jane Doe</span><span class="tag">&lt;/h4&gt;</span><span class="pln">
        </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-text"</span><span class="tag">&gt;</span><span class="pln">Job Description</span><span class="tag">&lt;/p&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	عندما نضع الكود أعلاه داخل عنصر الصف <code>row</code>، ونكرره ثمانية مرات، ونضع ملفات الصور في المواقع المعنية، سنحصل على هذه النتيجة:
</p>

<p style="text-align: center;">
	<img alt="card.png" class="ipsImage ipsImage_thumbnailed" data-fileid="144627" data-ratio="49.15" data-unique="dwfmkhww4" width="763" src="https://academy.hsoub.com/uploads/monthly_2024_02/card.png.e70d2a1369ce70c5ffafe489b56928d0.png">
</p>

<p>
	ولجعلها تبدو هكذا أضفنا التنسيقات التالية في ملف CSS:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_1751_78" style=""><span class="pun">.</span><span class="pln">background </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">background</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#dedec8</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">4em</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">team </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#5e5e55</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="lit">180px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">team </span><span class="pun">.</span><span class="pln">card-columns </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">-webkit-column-count</span><span class="pun">:</span><span class="pln"> </span><span class="lit">4</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">-moz-column-count</span><span class="pun">:</span><span class="pln"> </span><span class="lit">4</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">column-count</span><span class="pun">:</span><span class="pln"> </span><span class="lit">4</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">team </span><span class="pun">.</span><span class="pln">card </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">background</span><span class="pun">:</span><span class="pln">none</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">border</span><span class="pun">:</span><span class="pln"> none</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">team </span><span class="pun">.</span><span class="pln">card-title </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">font-size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1.3rem</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">margin-bottom</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">text-transform</span><span class="pun">:</span><span class="pln"> uppercase</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<h3 id="-7">
	إنشاء تذييل الصفحة
</h3>

<p>
	آخر شيء نريد إضافته إلى صفحتنا هو قسم التذييل footer وسنجعله مكون من عمودين من خلال كتابة الكود التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1751_80" style=""><span class="tag">&lt;footer</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"page-footer"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-8 col-md-8 col-sm-12"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;h6</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"text-uppercase font-weight-bold"</span><span class="tag">&gt;</span><span class="pln">Additional Information</span><span class="tag">&lt;/h6&gt;</span><span class="pln">
                </span><span class="tag">&lt;p&gt;</span><span class="pln">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum quam odio, quis placerat ante luctus eu. Sed aliquet dolor id sapien rutrum, id vulputate quam iaculis.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
                </span><span class="tag">&lt;p&gt;</span><span class="pln">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum quam odio, quis placerat ante luctus eu. Sed aliquet dolor id sapien rutrum, id vulputate quam iaculis.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-4 col-md-4 col-sm-12"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;h6</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"text-uppercase font-weight-bold"</span><span class="tag">&gt;</span><span class="pln">Contact</span><span class="tag">&lt;/h6&gt;</span><span class="pln">
            </span><span class="tag">&lt;p&gt;</span><span class="pln">1640 Riverside Drive, Hill Valley, California
            </span><span class="tag">&lt;br/&gt;</span><span class="pln">info@mywebsite.com
            </span><span class="tag">&lt;br/&gt;</span><span class="pln">+ 01 234 567 88
            </span><span class="tag">&lt;br/&gt;</span><span class="pln">+ 01 234 567 89</span><span class="tag">&lt;/p&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;div&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"footer-copyright text-center"</span><span class="tag">&gt;</span><span class="pln">© 2020 Copyright: MyWebsite.com</span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="tag">&lt;/footer&gt;</span></pre>

<p>
	يسلط هذا القسم الضوء على بعض الاحتمالات لتعديل طبيعة بوتستراب من خلال استخدام الأصناف التالية:
</p>

<ul>
	<li>
		<code>text-uppercase</code>: لجعل كافة أحرف النص كبيرة.
	</li>
	<li>
		<code>font-weight-bold</code>: لجعل النص أكثر سمكًا ووضوحًا.
	</li>
	<li>
		text-center: لمحاذاة النص في وسط العنصر الذي يوجد ضمنه.
	</li>
</ul>

<p>
	كما يمكنك مطالعة مزيد من المعلومات عن تنسيق النصوص من خلال توثيق <a href="https://wiki.hsoub.com/Bootstrap/text" rel="external">أدوات النصوص في إطار العمل Bootstrap</a>
</p>

<p>
	وهنا يمكنك استخدام تنسيقات أيضًا كالتالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_1751_82" style=""><span class="pun">.</span><span class="pln">page-footer </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">background-color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#222</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#ccc</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">60px</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="lit">30px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">footer-copyright </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#666</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">40px</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	ستكون نتيجة التذييل كما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="144607" href="https://academy.hsoub.com/uploads/monthly_2024_02/footer.png.a0bff13296242b77faa536dd896523a7.png" rel=""><img alt="footer" class="ipsImage ipsImage_thumbnailed" data-fileid="144607" data-unique="f3g59f63z" src="https://academy.hsoub.com/uploads/monthly_2024_02/footer.png.a0bff13296242b77faa536dd896523a7.png"> </a>
</p>

<h3 id="mediaqueries">
	إضافة استعلامات الوسائط Media Queries
</h3>

<p>
	الصفحة جاهزة الآن بشكل أساسي. كما أنها تستجيب بشكل كامل. ومع ذلك، لا تظهر بعض الأقسام بشكل صحيح في عرض الجوال للمتصفح، على سبيل المثال هذا ما تبدو عليه صورة العنوان على أجهزة الجوال:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="144622" href="https://academy.hsoub.com/uploads/monthly_2024_02/problem.png.3ee531df0dd08c8dedd8e7f8d10cd4c4.png" rel=""><img alt="problem" class="ipsImage ipsImage_thumbnailed" data-fileid="144622" data-unique="l2mjyh1wo" src="https://academy.hsoub.com/uploads/monthly_2024_02/problem.png.3ee531df0dd08c8dedd8e7f8d10cd4c4.png"> </a>
</p>

<p>
	يمكن تصحيح ذلك الخطأ بسهولة باستخدام <a href="https://academy.hsoub.com/programming/css/%D8%A7%D8%B3%D8%AA%D8%B9%D9%84%D8%A7%D9%85%D8%A7%D8%AA-%D8%A7%D9%84%D9%88%D8%B3%D8%A7%D8%A6%D8%B7-media-queries-%D9%81%D9%8A-css-r1059/" rel="">استعلام وسائط</a> بسيط، ما عليك سوى أن تضع في اعتبارك النقاط المحددة <a href="https://getbootstrap.com/docs/4.5/layout/overview/#responsive-breakpoints" rel="external nofollow">breakpoints </a> في بوتستراب.
</p>

<p>
	tلتصحيح المشكلة يمكنك ببساطة كتابة بعض من الأسطر البرمجية كالتالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_1751_84" style=""><span class="kwd">@media</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">max-width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">575.98px</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="pun">.</span><span class="pln">description </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
        </span><span class="kwd">padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="lit">15px</span><span class="pun">;</span><span class="pln">
        </span><span class="kwd">position</span><span class="pun">:</span><span class="pln"> absolute</span><span class="pun">;</span><span class="pln">
        </span><span class="kwd">top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10%</span><span class="pun">;</span><span class="pln">
        </span><span class="kwd">transform</span><span class="pun">:</span><span class="pln"> none</span><span class="pun">;</span><span class="pln">
        </span><span class="kwd">text-align</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">.</span><span class="pln">description h1 </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">font-size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2em</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="pun">.</span><span class="pln">description p </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">font-size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1.2rem</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="pun">.</span><span class="pln">features </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	بعد ذلك سيكون كل شئ على مايرام كما في الصورة التالية:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="144613" href="https://academy.hsoub.com/uploads/monthly_2024_02/media-queries.png.8f05b78bdf89dc9858ac61629813848a.png" rel=""><img alt="media queries" class="ipsImage ipsImage_thumbnailed" data-fileid="144613" data-unique="aogcjax7j" src="https://academy.hsoub.com/uploads/monthly_2024_02/media-queries.png.8f05b78bdf89dc9858ac61629813848a.png"> </a>
</p>

<p>
	.
</p>

<h3 id="-8">
	إنشاء صفحات إضافية
</h3>

<p>
	حتى الآن قمنا فقط بإنشاء صفحة واحدة فقط لموقع بوتستراب الخاص بنا. وكما تتذكر فقد أضفنا لصفحتنا قائمة تنقل تتضمن روابط لكن لا تؤدي هذه الروابط حاليًا إلى أي مكان عند النقر عليها.
</p>

<p>
	لإضافة صفحات إضافية إلى موقع Bootstrap الخاص بكقم ببساطة بإنشاء نسخة من <code>index.html</code> وإعطائها اسمًا مختلفًا، مثلًا <code>about.html</code>. واستخدام أجزاء الصفحة التي تظل كما هي مثل قائمة التنقل وحذف أو تعديل ما تريد تغييره فقط.
</p>

<p>
	على سبيل المثال ، هذا هو الشكل الذي قد تبدو عليه صفحة "About":
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="144603" href="https://academy.hsoub.com/uploads/monthly_2024_02/about.png.746530eaa13d8cc94e55a163b897dce9.png" rel=""><img alt="about" class="ipsImage ipsImage_thumbnailed" data-fileid="144603" data-unique="mlb5uejz3" src="https://academy.hsoub.com/uploads/monthly_2024_02/about.thumb.png.df3725351fb00529a499f2fdd39e7f56.png"> </a>
</p>

<p>
	عندما يكون لديك الملف الثاني، كل ما عليك فعله هو التأكد من أن الرابط في قائمة التنقل يشير بالفعل إلى الملف كما يلي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1751_86" style=""><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-link"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"about.html"</span><span class="tag">&gt;</span><span class="pln">About</span><span class="tag">&lt;/a&gt;</span></pre>

<p>
	ملاحظة: يجب أن يكون <code>about.html</code> في نفس مسار الملف <code>index.html</code> ليعمل الكود، أما إذا كان في مجلد فرعي يسمى html مثلًا فعليك ربطه على هذا النحو:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1751_88" style=""><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-link"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"html/about.html"</span><span class="tag">&gt;</span><span class="pln">About</span><span class="tag">&lt;/a&gt;</span></pre>

<p>
	هذا كل شي، لديك الآن صفحة ثانية على موقع Bootstrap الخاص بك ويمكن الوصول إليها من قائمة التنقل، فقط تأكد من أنه كلما قمت بتغيير روابط التنقل أو أضفت المزيد من الصفحات إلى موقعك فعليك دائمًا تحديث الروابط في جميع الملفات الأخرى أيضًا
</p>

<h3 id="modal">
	إنشاء رسالة منبثقة Modal
</h3>

<p>
	سنقوم ختامًا بإنشاء نموذج لموقع الاختبار الخاص بنا. هذا ليس ضروريًا ولكنه فرصة للتعرف على المزيد من إمكانيات Bootstrap. وفي حال لم تكن معتادًا على مصطلح modalفهو يعني عنصرًا مثل النافذة المنبثقة التي تظهر أعلى موقع الويب ويمكنك استخدامه لمختلف الأغراض. في حالتنا، نريد إنشاء طلب للاشتراك في رسالة إخبارية.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="144614" href="https://academy.hsoub.com/uploads/monthly_2024_02/modal.png.19e3dbb87f254d29fb22a3dec877acdb.png" rel=""><img alt="modal" class="ipsImage ipsImage_thumbnailed" data-fileid="144614" data-unique="917l6tdrj" src="https://academy.hsoub.com/uploads/monthly_2024_02/modal.png.19e3dbb87f254d29fb22a3dec877acdb.png"> </a>
</p>

<p>
	يقدم Bootstrap شيفرات خاصة به <a href="https://getbootstrap.com/docs/4.5/components/modal/" rel="external nofollow">للرسائل المنبثقة</a> لكن قبل إنشاء نافذة الرسالة المنبثقة، نريد أولا إنشاء المشغل لجعلها تظهر على الصفحة. وإلا فلن نرى ما نفعله
</p>

<p>
	للقيام بذلك ما عليك سوى إضافة كود JavaScript التالي إلى ملف <code>main.js</code> الخاص بك:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_1751_90" style=""><span class="pln">setTimeout</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    $</span><span class="pun">(</span><span class="str">'#demo-modal'</span><span class="pun">).</span><span class="pln">modal</span><span class="pun">();</span><span class="pln">
</span><span class="pun">},</span><span class="pln"> </span><span class="lit">500</span><span class="pun">);</span></pre>

<p>
	يؤدي هذا إلى تشغيل الرسالة المنبثقة لتظهر بعد وقت محدد وهو 500 مللي ثانية، انتبه بأن الشيفرة السابقة هي دالة jQuery خاصة بإصدار 4 Bootstrap ولكن في 5 Bootstrap سيكون الأمر مختلف كما ناقشنا ذلك من قبل.
</p>

<p>
	لنبدآ في العمل الفعلي على إنشاء الرسالة المنبثقة. يبدأ كل شيء بثلاثة عناصر متداخلة تحتوي على <code>modal</code> و <code>modal-dialog</code> و <code>modal-content</code>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1751_92" style=""><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"demo-modal"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"modal fade"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"modal-dialog modal-lg modal-dialog-centered"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"modal-content"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	تنشئ الشيفرة السابقة نافذة الرسالة المنبثقة أعلى صفحتك وإعداد تلك النافذة حتى تملأها بالمحتوى:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="144617" href="https://academy.hsoub.com/uploads/monthly_2024_02/modal-set.png.59e7c7a5229b9d03faca945b2afdf898.png" rel=""><img alt="modal set" class="ipsImage ipsImage_thumbnailed" data-fileid="144617" data-unique="11pljs9ik" src="https://academy.hsoub.com/uploads/monthly_2024_02/modal-set.png.59e7c7a5229b9d03faca945b2afdf898.png"> </a>
</p>

<p>
	قمنا أيضًا بإعطاء عنصر الرسالة المنبثقة model معرف <code>demo-modal#</code> لتسهيل استهدافه داخل CSS وكي يعمل مع مشغل JavaScript، يتأكد الصنف <code>fade</code> من أن ظهوره النافذو واختفائها يكون بالتدريج وليس بطريقة مفاجئة، ويحدد العنصر <code>modal-igl</code> حجم النافذة، في حين يضعها العنصر <code>modal-dialog-centered</code> في الوسط بشكل عمودي على الشاشة.
</p>

<p>
	قد تتساءل أين تضع هذه الشيفرة؟ هذا سؤال جيد. توضع الشيفرة السابقة مباشرة قبل وسم الإغلاق <code>&lt;body/&gt;</code> وأسفل استدعاءات jQuery وأي ملفات جافا سكريبت
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="144616" href="https://academy.hsoub.com/uploads/monthly_2024_02/modal-location.png.4ebb78c5343669932496c012c9a97eac.png" rel=""><img alt="modal location" class="ipsImage ipsImage_thumbnailed" data-fileid="144616" data-unique="iyv6rhypw" src="https://academy.hsoub.com/uploads/monthly_2024_02/modal-location.png.4ebb78c5343669932496c012c9a97eac.png"> </a>
</p>

<p>
	أخيرًا نريد إنشاء ترويسة للرسالة المنبثقة تحوي صورةً بالداخل وكذلك زر لإغلاق النافذة المنبثقة. يمكنك القيام بذلك عن طريق وضع الشيفرة التالية داخل الصنف <code>modal-content</code>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1751_94" style=""><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"modal-header"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"rounded-circle mx-auto"</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/email-icon.png"</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"modal image"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"close"</span><span class="pln"> </span><span class="atn">data-dismiss</span><span class="pun">=</span><span class="atv">"modal"</span><span class="pln"> </span><span class="atn">aria-label</span><span class="pun">=</span><span class="atv">"close"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;span&gt;</span><span class="pln">x</span><span class="tag">&lt;/span&gt;</span><span class="pln">
    </span><span class="tag">&lt;/button&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	لاحظ الصنف <code>mx-auto</code> للصورة. إنه صنف بوتستراب يساعد على توسيط جميع أنواع العناصر. للمزيد عن <a href="https://getbootstrap.com/docs/4.5/utilities/spacing/#horizontal-centering" rel="external nofollow">horizontal-centering</a>. بالنسبة لزر الإغلاق ، تحتاج إلى إضافة الصنف التالي له <code>"data-dismiss="modal</code> بحيث يتم إغلاق النافذة المنبثقة بالفعل.
</p>

<p>
	هذا ما لدينا حتى الآن:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="144615" href="https://academy.hsoub.com/uploads/monthly_2024_02/modal-appear.png.ed40e74099998da43e6c65bfe200f355.png" rel=""><img alt="modal appear" class="ipsImage ipsImage_thumbnailed" data-fileid="144615" data-unique="mcxndd1q2" src="https://academy.hsoub.com/uploads/monthly_2024_02/modal-appear.png.ed40e74099998da43e6c65bfe200f355.png"> </a>
</p>

<p>
	الآن ننتقل إلى نص النافذه المنبثقة، والذي سنضعه أسفل <code>modal-header</code> والذي سيتضمن عنوانًا ونصًا ونموذجًا لتضمين عنوان بريدك الإلكتروني. إليك الكود:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1751_96" style=""><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"modal-body text-center"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;h4&gt;</span><span class="pln">Subscribe to our newsletter</span><span class="tag">&lt;/h4&gt;</span><span class="pln">
    </span><span class="tag">&lt;p&gt;</span><span class="pln">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque interdum quam odio, quis placerat ante luctus eu.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"input-group"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"email"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-control"</span><span class="pln"> </span><span class="atn">placeholder</span><span class="pun">=</span><span class="atv">"Enter your email address"</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"email"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"input-group-append"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"submit"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn"</span><span class="pln"> </span><span class="atn">value</span><span class="pun">=</span><span class="atv">"Subscribe"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	لاحظ أن الصنف <code>input-gruop</code> يسمح لك بوضع مدخلات مثل حقول النموذج والأزرار بجانب بعضها البعض، كما يضع الصنف <code>input-group-append</code> الزر بعد حقل النموذج، أما الصنف <code>input-group-prepend</code> فهو يمكنك من وضع أي شيء في المقدمة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="144618" href="https://academy.hsoub.com/uploads/monthly_2024_02/modal-text.png.ab275717659da262ebfa6c21587198f2.png" rel=""><img alt="modal text" class="ipsImage ipsImage_thumbnailed" data-fileid="144618" data-unique="i2xfjnjw0" src="https://academy.hsoub.com/uploads/monthly_2024_02/modal-text.png.ab275717659da262ebfa6c21587198f2.png"> </a>
</p>

<p>
	بقي لدينا التنسيقات، اكتب الكود الآتي في ملف <code>main.css</code> لتحقق المظهر الظاهر بالصورة السابقة:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_1751_98" style=""><span class="pun">#</span><span class="pln">demo-modal </span><span class="pun">.</span><span class="pln">modal-content </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">border-radius</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2rem</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">#</span><span class="pln">demo-modal </span><span class="pun">.</span><span class="pln">modal-header </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">border-bottom</span><span class="pun">:</span><span class="pln"> none</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">#</span><span class="pln">demo-modal h4 </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#000</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">font-size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">30px</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="lit">25px</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">font-weight</span><span class="pun">:</span><span class="pln"> bold</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">text-transform</span><span class="pun">:</span><span class="pln"> capitalize</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">#</span><span class="pln">demo-modal </span><span class="pun">.</span><span class="pln">close </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">background</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#c0c3c8</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">border-radius</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50%</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#fff</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">font-size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">19px</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">font-weight</span><span class="pun">:</span><span class="pln"> normal</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">30px</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">opacity</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0.5</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">position</span><span class="pun">:</span><span class="pln"> absolute</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">right</span><span class="pun">:</span><span class="pln"> </span><span class="lit">26px</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">text-align</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">26px</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">30px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">#</span><span class="pln">demo-modal </span><span class="pun">.</span><span class="pln">close span </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">position</span><span class="pun">:</span><span class="pln"> relative</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">top</span><span class="pun">:</span><span class="pln"> </span><span class="pun">-</span><span class="lit">3px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">#</span><span class="pln">demo-modal </span><span class="pun">.</span><span class="pln">modal-body p </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#999</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">#</span><span class="pln">demo-modal </span><span class="pun">.</span><span class="pln">form-control</span><span class="pun">,</span><span class="pln">
</span><span class="pun">#</span><span class="pln">demo-modal </span><span class="pun">.</span><span class="pln">btn </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">min-height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">46px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">#</span><span class="pln">demo-modal </span><span class="pun">.</span><span class="pln">btn </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">background-color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#1da098</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">border</span><span class="pun">:</span><span class="pln"> none</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#fff</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">min-width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">150px</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">transition</span><span class="pun">:</span><span class="pln"> all </span><span class="lit">0.4s</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">#</span><span class="pln">demo-modal </span><span class="pun">.</span><span class="kwd">btn</span><span class="pun">:</span><span class="pln">hover</span><span class="pun">,</span><span class="pln">
</span><span class="pun">#</span><span class="pln">demo-modal </span><span class="pun">.</span><span class="kwd">btn</span><span class="pun">:</span><span class="pln">focus </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">background-color</span><span class="pun">:</span><span class="pln"> </span><span class="lit">#12968d</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<h3 id="-9">
	تحميل موقع الويب الخاص بك إلى مضيف الويب
</h3>

<p>
	حصلت الآن على موقع ويب مكتمل ومتجاوب مع كل الشاشات أيضًا. لكن لا أحد يستطيع رؤيته. ولتحميله على الويب وإتاحته للجميع تحتاج إلى <a href="https://academy.hsoub.com/apps/web/%D8%A3%D9%86%D9%88%D8%A7%D8%B9-%D8%A7%D9%84%D8%A7%D8%B3%D8%AA%D8%B6%D8%A7%D9%81%D8%A7%D8%AA-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D8%AE%D8%AA%D9%8A%D8%A7%D8%B1-%D8%A3%D9%81%D8%B6%D9%84-%D8%A7%D8%B3%D8%AA%D8%B6%D8%A7%D9%81%D8%A9-%D9%84%D9%85%D9%88%D9%82%D8%B9%D9%83-%D8%A3%D9%88-%D9%85%D8%AA%D8%AC%D8%B1%D9%83-%D8%A7%D9%84%D8%A5%D9%84%D9%83%D8%AA%D8%B1%D9%88%D9%86%D9%8A-r392/" rel="">استضافة ويب</a> واسم للنطاق <a href="https://academy.hsoub.com/devops/networking/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A3%D8%B3%D9%85%D8%A7%D8%A1-%D8%A7%D9%84%D9%86%D8%B7%D8%A7%D9%82%D8%A7%D8%AA-%D9%81%D9%8A-%D8%B4%D8%A8%D9%83%D8%A9-%D8%A7%D9%84%D8%A5%D9%86%D8%AA%D8%B1%D9%86%D8%AA-r573/" rel="">domain</a> ليتمكن الأشخاص من إدخال عنوان موقع الويب الخاص بك في متصفحهم ثم الوصول إلى موقع بوتستراب الإلكتروني الجديد على الإنترنت. من أجل السماح لهم بالقيام بذلك، تحتاج إلى تحميل الموقع على الخادم الخاص بك باستخدام عميل لـ FTP مثل <a href="https://academy.hsoub.com/devops/servers/%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-filezilla-%D9%84%D8%AA%D8%A8%D8%A7%D8%AF%D9%84-%D8%A7%D9%84%D9%85%D9%84%D9%81%D8%A7%D8%AA-%D8%A7%D9%84%D8%A2%D9%85%D9%86-%D9%85%D8%B9-%D8%A7%D9%84%D8%AE%D8%A7%D8%AF%D9%85-r604/" rel="">FileZilla</a>. احصل على عنوان مضيف FTP الخاص بك واسم المستخدم وكلمة المرور من مزود الاستضافة للاتصال بخادمك عن بُعد. بعدها ستكون قادرًا على رؤية الملفات والمسارات موجودة هناك.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="144611" href="https://academy.hsoub.com/uploads/monthly_2024_02/host.png.233d32a4f5d575373f3e40bc15823435.png" rel=""><img alt="host" class="ipsImage ipsImage_thumbnailed" data-fileid="144611" data-unique="i77v2raag" src="https://academy.hsoub.com/uploads/monthly_2024_02/host.png.233d32a4f5d575373f3e40bc15823435.png"> </a>
</p>

<p>
	انتقل إلى المسار الذي يشير نطاقك إليه (عادةً المسار الأول). بعدها ما عليك سوى العثور على المجلد الذي يحتوي على ملفات Bootstrap على القرص الصلب، ووضع علامة على جميع الملفات الموجودة بداخله ثم سحبها إلى الخادم لبدء التحميل. ستستغرق العملية بعض الوقت حتى تنتهي بناء على سرعة الاتصال لديك بالإضافة إلى عدد وحجم ملفاتك.
</p>

<p>
	بمجرد الانتهاء حاول الوصول إلى نطاقك وستتمكن من رؤية الموقع النهائي في نافذة المتصفح
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="144609" href="https://academy.hsoub.com/uploads/monthly_2024_02/fullpage.png.1ce005adc13df92c55246e532375f0ce.png" rel=""><img alt="fullpage" class="ipsImage ipsImage_thumbnailed" data-fileid="144609" data-unique="g3eer12ot" src="https://academy.hsoub.com/uploads/monthly_2024_02/fullpage.thumb.png.7e75db05c4c492845701ec06de022916.png"> </a>
</p>

<p>
	ومن هنا يمكنك تحميل كامل كود المقال <a class="ipsAttachLink" data-fileext="zip" data-fileid="144629" href="https://academy.hsoub.com/applications/core/interface/file/attachment.php?id=144629&amp;key=cae6b5d6744c7892e72e803fedf80740" rel="">websitesetup-bootstrap-tutorial.zip</a>
</p>

<h2 id="-10">
	الخلاصة
</h2>

<p>
	تعرفنا في مقال اليوم على إطار عمل بوتستراب Bootstrap وهو إطار مجاني مفتوح المصدر لتطوير واجهة المستخدم. يتيح لك وضع نماذج أولية للتصاميم بسرعة وإنشاء صفحات ويب والبدء في العمل بشكل عام.
</p>

<p>
	أنت تعرف الآن كيفية إعداد وتثبيت Bootstrap ومكوناته وإنشاء صفحة هبوط بسيطة، وتضمين بعض المحتوى الأساسي فيها، وتنسيقها، ويمكنك إنشاء أي مواقع مميزة بالاعتماد عليه وإذا كانت لديك أي أفكار أو أسئلة حول ما ورد في المقال يمكنك تركه في قسم التعليقات في الأسفل.
</p>

<p>
	ترجمة وبتصرف للمقال <a href="https://websitesetup.org/bootstrap-tutorial-for-beginners/" rel="external nofollow">How to Setup and Use Bootstrap Step-by-Step</a> للكاتب Nick Schäferhoff
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/css/bootstrap/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-5-r1315/" rel="">مدخل إلى إطار العمل بوتستراب 5</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/css/bootstrap/%D9%85%D9%83%D9%88%D9%86-%D8%A7%D9%84%D8%A8%D8%B7%D8%A7%D9%82%D8%A9-card-%D9%88%D9%85%D9%83%D9%88%D9%86-%D8%A7%D9%84%D8%B4%D8%B1%D8%A7%D8%A6%D8%AD-%D8%A7%D9%84%D8%AF%D9%88%D8%A7%D8%B1%D8%A9-carousel-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-r1458/" rel="">مكون البطاقة Card ومكون الشرائح الدوارة Carousel في بوتستراب</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/css/bootstrap/10-%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D8%B4%D8%A7%D8%A6%D8%B9%D8%A9-%D8%B9%D9%86%D8%AF-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-bootstrap-r190/" rel="">10 أخطاء شائعة عند استخدام إطار العمل Bootstrap</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/css/bootstrap/%D8%AA%D8%B7%D8%A8%D9%8A%D9%82-%D9%85%D8%AE%D8%B7%D8%B7-%D8%A7%D9%84%D8%B5%D9%81%D8%AD%D8%A9-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-%D8%B9%D9%84%D9%89-%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-r1457/" rel="">تطبيق مخطط الصفحة في بوتستراب على صفحات الويب</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">2256</guid><pubDate>Sat, 24 Feb 2024 12:08:02 +0000</pubDate></item><item><title>&#x645;&#x642;&#x627;&#x631;&#x646;&#x629; Bootstrap &#x648; Tailwind</title><link>https://academy.hsoub.com/programming/css/bootstrap/%D9%85%D9%82%D8%A7%D8%B1%D9%86%D8%A9-bootstrap-%D9%88-tailwind-r2060/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2023_08/-Bootstrap--Tailwind(1).png.e252c0f5f8d7826fc3156741fec14d24.png" /></p>
<p>
	سنتحدث في هذا الفيديو عن الفرق بين بوتستراب Bootstrap و تيل ويند Tailwind. عندما نبدأ عملية التطوير في الموقع الذي نعمل عليه، سنحتاج إلى توفير الوقت عبر استخدام بعض المكتبات والأدوات الجاهزة وأطر العمل، ومن أشهر أطر العمل التي نستطيع استخدامها في الفرونت إند أو الواجهات الأمامية هي بوتستراب أو تيل ويند، وهنا سنستعرض الفرق بينهما وأيهما أفضل لاستخدامها؟
</p>

<p>
	<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" frameborder="0" height="603" id="ips_uid_9328_5" src="https://academy.hsoub.com/applications/core/interface/index.html" title="مقارنة Bootstrap و Tailwind" width="1072" data-embed-src="https://www.youtube.com/embed/iV3Wvr0djkQ"></iframe>
</p>

<p>
	تعلم الآن كيفية <a href="https://academy.hsoub.com/learn/front-end-web-development/?utm_source=youtube.com&amp;utm_medium=referral&amp;utm_campaign=academy-22feb12" rel="">تطوير واجهات المستخد</a>م<span style="display: none;"> </span>، ولا تنسَ الاستعانة خلال رحلة تعلمك وعملك بتوثيقات <a href="https://wiki.hsoub.com/%D8%A7%D9%84%D8%B5%D9%81%D8%AD%D8%A9_%D8%A7%D9%84%D8%B1%D8%A6%D9%8A%D8%B3%D9%8A%D8%A9" rel="external">موسوعة حسوب</a> المجانية. وإذا أردت متابعة المعلومات البرمجية العلمية مكتوبة فيمكنك الاطلاع على <a href="https://academy.hsoub.com/programming/" rel="">قسم البرمجة في أكاديمية حسوب</a>، كما يمكنك متابعة جديد الفيديوهات التقنية المتاحة على <a href="https://www.youtube.com/@HsoubAcademy" rel="external nofollow">يوتيوب أكاديمية حسوب</a> مجانًا.
</p>
]]></description><guid isPermaLink="false">2060</guid><pubDate>Sun, 12 Feb 2023 15:00:00 +0000</pubDate></item><item><title>&#x645;&#x642;&#x627;&#x631;&#x646;&#x629; &#x628;&#x64A;&#x646; Bootstrap &#x648; Tailwind CSS</title><link>https://academy.hsoub.com/programming/css/bootstrap/%D9%85%D9%82%D8%A7%D8%B1%D9%86%D8%A9-%D8%A8%D9%8A%D9%86-bootstrap-%D9%88-tailwind-css-r1595/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_05/629601e497977_--Bootstrap--Tailwind-CSS.jpg.b76317b725d65d6e60c9671b8fec59b4.jpg" /></p>
<p>
	مع سرعة تطور <a href="https://academy.hsoub.com/devops/networking/%D8%A2%D9%84%D9%8A%D8%A9-%D8%B9%D9%85%D9%84-%D8%B4%D8%A8%D9%83%D8%A9-%D8%A7%D9%84%D8%A5%D9%86%D8%AA%D8%B1%D9%86%D8%AA-r571/" rel="">الإنترنت</a> والويب وزيادة اعتماد الشركات على الويب تجلت أهمية التصميم المرن والتخطيط سريع الاستجابة والأنماط التفاعلية مع المستخدم والتخطيط الشبكي لصفحات الويب والكثير من الأمور الأخرى، وبدأت تظهر جدلات آنذاك بين أهمية التصميم أم المحتوى؟ ولكن لا يمكننا النظر إلى هذين العنصرين على أنهما متنافسين بقدر ما هما متكاملين لأنه في الحقيقة ومع أن المحتوى هو العمود الفقري لأي موقع إنترنت إلا أن التصميم ما هو إلا أداة إيصال هذا المحتوى للمستخدم لذلك أهميته توازي أهمية المحتوى لأن واجهة الموقع ذات التصميم السهل تخلق انطباعًا أوليًا رائعًا في أذهان المستخدمين، وهذا هو سبب زيادة تركيز مطوري الويب على تطوير واستخدام أدوات تساعدهم في الوصول تصاميم رائعة بأقل مجهود ووقت ممكن.
</p>

<p>
	لذلك بدأت تظهر في السنوات القليلة الماضية أدوات ومكتبات وأطر عمل تسرع من عملية تطوير و<a href="https://academy.hsoub.com/design/user-interface/%D8%A7%D9%84%D8%AF%D9%84%D9%8A%D9%84-%D8%A5%D9%84%D9%89-%D8%AA%D9%87%D9%8A%D8%A6%D8%A9-%D9%88%D8%A7%D8%AC%D9%87%D8%A9-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-ui-r652/" rel="">واجهات المستخدم</a> ويُعرفُ <strong>إطار العمل Framework</strong> في البرمجة على أنه أداة توفر مكونات أو حلول جاهزة لتخصيصها من أجل أي مشروع بهدف تسريع عملية التطوير، ويمكن أن يشتمل الإطار على مكتبة أو مكتبات مساعدة، كما يوفر إطار العمل الدوال القياسية منخفضة المستوى لتمكن المطورين من التركيز على صلب المشروع وعدم إضاعة وقتهم في الأمور المتكررة.
</p>

<p>
	من بين التي الأطر التي ذاع صيتها نذكر <a href="https://wiki.hsoub.com/Bootstrap" rel="external">Bootstrap</a> و Skeleton و Bulma و Tailwind <a href="https://wiki.hsoub.com/CSS" rel="external">CSS</a> و Materialize. تتعددُ أهداف هذه الأدوات والأطر المخصصة للواجهات الأمامية فمنها ما تركز على بناء مكتبة مكونات كبيرة جاهزة للاستخدام في المشاريع، ومنها ما تركز على إتاحة الأساسيات لتمكن المطورين تخصيص مواقعهم، هذا التنوع جعل كل مطور يتجه إلى الإطار الذي يناسب متطلباته، ولكن من بين الأطر الذي ذاع صيتها في الآونة الأخيرة Bootstrap و Tailwind CSS سنحاول في هذا المقال تسليط الضوء على هذين الإطارين وسنطلع على سر قوة وشعبية Bootstrap والاهتمام السريع والمتزايد لإطار Tailwind CSS ولنستكشفُ بعدها أيهما أفضل Tailwind CSS أم Bootstrap.
</p>

<p>
	نسعى لتجنب التحيز بين هذين الإطارين ولكن بالتأكيد هناك بعض المشاريع يتناسب معها إطار معين أكثر من الآخر وهذا أمر طبيعي، كما نفترض في هذا المقال بأن لديك معرفة أساسية بتقنيات تطوير الويب وكيفية عمل المواقع.
</p>

<h2>
	نبذة موجزة عن Bootstrap و Tailwind CSS
</h2>

<p>
	في ظل التطور السريع لتقنيات الويب يجب على المطورين دومًا تحليل أي تقنية جديدة من خلال الاطلاع على إيجابياتها وسلبياتها قبل اعتمادها في عملهم ومشاريعهم الجديدة، منذ ظهور إطار العمل Bootstrap عام 2011 أصبح عنصرًا أساسيًا من عناصر تطوير الويب، ولكن في الآونة الأخيرة ظهر <a href="https://academy.hsoub.com/programming/general/%D8%A5%D8%B7%D8%A7%D8%B1-%D8%B9%D9%85%D9%84-framework/" rel="">إطار عمل</a> جديد وسرعان ما حظي باهتمام كبير في مجتمع المطورين وهذا الإطار هو Tailwind CSS. لنفهم ماهية كل من هذين الإطارين بالتفصيل.
</p>

<h3>
	ما هو Bootstrap؟
</h3>

<p>
	بحسب تعريف الموقع الرسمي لإطار <a href="https://wiki.hsoub.com/Bootstrap/" rel="external">Bootstrap</a> هو إطار عمل للواجهات الأمامية لمواقع الويب مجاني ومفتوح المصدر، طوّر هذا الإطار اثنان من المبرمجين وهما مارك أوتو Mark Otto وجاكوب ثورتون Jacob Thorton في مسابقة داخلية في شركة تويتر Twitter في أغسطس 2011، وهو يتكون من شيفرات برمجية بلغة <a href="https://wiki.hsoub.com/HTML" rel="external">HTML</a> و CSS و<a href="https://wiki.hsoub.com/JavaScript" rel="external">جافاسكربت</a>، وصمم خصيصًا لتسهيل عملية تطوير الويب لمواقع الويب المتجاوبة والتي تعتمد على التصميم للهواتف المحمولة أولًا Mobile First Design من خلال توفير مجموعة من المكونات تعمل على جميع أحجام الشاشات، بل إن هذا الإطار قائمًا على المكونات إذ يأتي مع مجموعة من المكونات الجاهزة للاستخدام وذلك لتسريع تصميم موقع الويب، كما أن الشيفرة البرمجية الخاصة بملفات التنسيق CSS موجه للكائنات، وهو يعمل مع معظم المتصفحات من بينها متصفح غوغل كروم Chrome وإنترنت إكسبلور Internet Explorer …إلخ.
</p>

<p>
	يعد إطار العمل Bootstrap سهل التعلم لأي شخص مبتدئ <a href="https://academy.hsoub.com/programming/css/%D8%A7%D9%84%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D8%B3%D8%B1%D9%8A%D8%B9-%D8%A5%D9%84%D9%89-%D9%84%D8%BA%D8%A9-%D8%A7%D9%84%D8%AA%D9%86%D8%B3%D9%8A%D9%82-css-r551/" rel="">بلغة CSS</a>، كما تتوافر الكثير من الدورات التعليمية عبر الإنترنت لمساعدتك على البدء. ولا تتطلب مكوناته سوى معرفة أساسية بلغة HTML و CSS و <a href="https://academy.hsoub.com/programming/javascript/%D8%A7%D9%84%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D8%B3%D8%B1%D9%8A%D8%B9-%D8%A5%D9%84%D9%89-%D9%84%D8%BA%D8%A9-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D8%AC%D8%A7%D9%81%D8%A7%D8%B3%D9%83%D8%B1%D9%8A%D8%A8%D8%AA-javascript-r550/" rel="">جافاسكربت</a> لتعديلها. يأتي إطار العمل Bootstrap بنظام شبكة محدد مسبقًا يتكون من صفوف وأعمدة، مما يتيح للمطور إنشاء شبكة داخل شبكة بالإضافة إلى ذلك، يجعل نظام الشبكة واجهات الموقع أكثر وضوحًا للمستخدمين والمطورين. ومكونات هذا الإطار متوافقة مع أحدث إصدارات المتصفحات الشائعة. كما يمكنك أيضًا استخدام مكوناته في تصميمات <a href="https://academy.hsoub.com/apps/web/10-%D9%85%D8%B9%D8%A7%D9%8A%D9%8A%D8%B1-%D9%84%D8%A7%D8%AE%D8%AA%D9%8A%D8%A7%D8%B1-%D9%86%D8%B8%D8%A7%D9%85-%D8%A5%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A7%D9%84%D9%85%D8%AD%D8%AA%D9%88%D9%89-cms-r170/" rel="">أنظمة إدارة المحتوى</a> الشائعة مثل <a href="https://academy.hsoub.com/programming/php/wordpress/" rel="">ووردبريس WordPress</a> وجوملا غيرها.
</p>

<h3>
	ما هو Tailwind CSS؟
</h3>

<p>
	هو إطار عمل <a href="https://academy.hsoub.com/programming/css/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%A7%D8%B3%D8%AA%D8%B9%D9%85%D8%A7%D9%84-%D9%84%D8%BA%D8%A9-css-r1049/" rel="">CSS</a> أول من نوعه يقدم أدوات مساعدة بالدرجة الأولى Utility-First أكثر مما يقدم مكونات جاهزة إذ يتيح لك إنشاء واجهات مستخدم مخصصة مع الحد الأدنى من الشيفرة البرمجية لملفات تنسيق CSS. كما يمنحك تحكمًا كاملًا في واجهة واجهة المستخدم الخاصة بك من خلال الأصناف Classes الموجودة فيه.
</p>

<p>
	يساعد إطار عمل Tailwind CSS في السيطرة على التصميم ويجعله فريدًا لأن الإطار لا يفرض سمة افتراضية يجب عليك استخدامها مثل أطر CSS الأخرى. فمثلًا يمكنك إعطاء كل مشروع مظهرًا مختلفًا حتى إذا كنت تستخدم نفس العناصر (لوحة الألوان والحجم وما إلى ذلك). لذلك فهو من أطر العمل القليلة التي لا تفرض طريقة معينة لتصميم مشروعك. بل إنه من أسرع الأطر عندما يتعلق الأمر بدمج التصاميم مع ملفات HTML.
</p>

<p>
	بناءً على ما سبق، يمكنك بسهولة إنشاء تخطيطات لعناصر الواجهات الأمامية من خلال آلاف الأصناف المضمنة التي لا تتطلب منك سوى استدعائها في التنسيق للعنصر. لذلك لا يتعين عليك كتابة قواعد التنسيق CSS بنفسك. تعد أصناف CSS هذه هي السبب الرئيسي وراء سرعة البناء والتصميم باستخدام Tailwind، بالإضافة إلى ذلك يمكن إزالة جميع أصناف CSS غير المستخدمة عبر أداة <a href="https://purgecss.com/" rel="external nofollow">PurgeCSS</a> والتي تساعدك على إبقاء الشيفرة البرمجية لملفات التنسيق CSS النهائية صغيرة الحجم.
</p>

<h2>
	مقارنة بين Tailwind CSS vs Bootstrap
</h2>

<p>
	لندخل أكثر في التفاصيل ولنطلع على أهم الفروقات بين هذين الإطارين.
</p>

<h3>
	المجتمع والتطوير
</h3>

<p>
	لننظر أولًا في المجتمع لتقييم تطوير هذه الأطر، عندما نرى أن الإطار حصل على الكثير من التحديثات فهذا أمر إيجابي ويشير إلى أن تطوير هذه الأطر مستمر على قدم وساق. دعونا نلقي نظرة على مجتمعات Tailwind CSS vs Bootstrap فيما يتعلق بالإحصاءات الموجودة في مستودعات GitHub الخاصة بها ونؤكد أن هذه الأرقام حتى تاريخ كتابة المقال.
</p>
<style type="text/css">
table {
    width: 100%;
}

thead {
    vertical-align: middle;
    text-align: center;
} 

td, th {
    border: 1px solid #dddddd;
    text-align: right;
    padding: 8px;
    text-align: inherit;

}
tr:nth-child(even) {
    background-color: #dddddd;
}</style>
<table>
	<thead>
		<tr>
			<th>
				وجه المقارنة
			</th>
			<th>
				إطار العمل Bootstrap
			</th>
			<th>
				إطار العمل Tailwind CSS
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>
				الموقع الرسمي
			</td>
			<td>
				<a href="https://github.com/twbs/bootstrap" rel="external nofollow">Bootstrap</a>
			</td>
			<td>
				<a href="https://github.com/tailwindlabs/tailwindcss" rel="external nofollow">Tailwindcss</a>
			</td>
		</tr>
		<tr>
			<td>
				تاريخ أول إصدار
			</td>
			<td>
				2011
			</td>
			<td>
				2017
			</td>
		</tr>
		<tr>
			<td>
				رقم الاصدار
			</td>
			<td>
				v4.6.1
			</td>
			<td>
				v3.0.18
			</td>
		</tr>
		<tr>
			<td>
				عدد المراقبين
			</td>
			<td>
				7 آلاف شخص
			</td>
			<td>
				567 شخص
			</td>
		</tr>
		<tr>
			<td>
				عدد النجوم
			</td>
			<td>
				155 ألف نجمة
			</td>
			<td>
				53.3 ألف نجمة
			</td>
		</tr>
		<tr>
			<td>
				عدد التفريعات
			</td>
			<td>
				76.1 ألف مستودع مشتق
			</td>
			<td>
				2.6 ألف تفريعة
			</td>
		</tr>
		<tr>
			<td>
				عدد المساهمين
			</td>
			<td>
				1274 مساهم
			</td>
			<td>
				214 مساهم
			</td>
		</tr>
	</tbody>
</table>

<p>
	يلعبُ قِدم إطار Bootstrap والذي يصل عُمره لأكثر من 12 سنة دورًا مهمًا في شعبيته ومن الطبيعي أن نجد له مجتمعًا كبيرًا من المطورين والأدوات والمنتديات وما إلى ذلك. أما إطار Tailwind CSS فلا يزال جديدًا وينمو بسرعة كبيرة ويتزايد مستخدميه ومطوريه يوميًا، ولنتذكر دومًا بأن المجتمع الأكبر للمطورين يمكن أن يساعدك في الحصول على المساعدة بصورة أسرع عند مواجهة أية مشكلة في التنفيذ.
</p>

<h3>
	المكونات الجاهزة وقابلية التخصيص
</h3>

<p>
	يوجد العديد من المكونات الجاهزة للاستخدام في إطار Bootstrap إذ يوجد أكثر من 40 عنصرًا جاهزًا مثل الشريط الرأسي للموقع Headerbar وعناصر التنقل Navigation وتذييل الموقع Footer والاستمارات Forms والنوافذ الشرطية Modals والعديد من مكونات واجهة المستخدم الأخرى. يتميز Bootstrap إطار بأسلوب مرئي متسق وتحتوي غالبية مواقع الويب التي تستخدم هذا الإطار على نفس عناصر التنقل والهيكل والتصميم، مما يجعلها تبدو غير احترافية. ولكن الأمر المفيد هو أنه إذا كنت مبتدئًا ولا تعرف الكثير عن لغة CSS فمن السهل جدًا استخدام الإطار وإنشاء قالب موقع ويب جيد.
</p>

<p>
	بالمقابل لا نجد ذلك مع إطار Tailwind CSS فلا يوجد مكونات جاهزة سواء من الإطار بحد ذاته ولكن يوجد القليل من المكونات المقدمة من المجتمع، وفي الحقيقة يجد المطورون بأن أفضل ميزة في Tailwind CSS هو أنه يقدم أدوات مساعدة بدلًا من مكونات جاهزة، ولذلك فأنه تتيح قابلية التخصيص بدرجة كبيرة أي أنه يمكنك إنشاء تصاميم وواجهات مستخدم مخصصة بطريقة ممتازة باستخدام الأصناف Classes التي يوفرها إطار العمل وبدرجة مقبولة من المجهود في كتابة الشيفرة البرمجية. يمكنك بسهولة الاستفادة من تصميم كل مكون على حدة بالطريقة التي تتطلبها واجهة المستخدم الخاصة بك.
</p>

<h3>
	بنية الشيفرة البرمجية
</h3>

<p>
	يعمل إطار Tailwind بطريقة مختلفة عن معظم أطر عمل CSS إذ يمزج بين قواعد الأنماط مع ملفات HTML الخاصة بك أي أن الشيفرة البرمجية الخاصة بالتنسيق باستخدام الأصناف ستكون موجودة بالكامل مع شيفرة HTML، وهذا يتعارض مع مبدأ <strong>"فصل الاهتمامات"</strong> <a href="https://en.wikipedia.org/wiki/Separation_of_concerns" rel="external nofollow">Separation Of Concerns</a> أو اختصارًا SoC، الذي هو أحد المفاهيم الرئيسية في علوم الحاسوب وهو تحديدًا من مبادئ تصميم الشيفرة البرمجية والتي تنص على فصل الشيفرات البرمجية لبرامج الحاسوب إلى أقسام متميزة وكل قسم يعالج مشكلة منفصلة.
</p>

<p>
	يفضل العديد من المطورين فصل بنية الصفحة عن تصميمها من خلال ملفات التنسيق، ولكن استخدام الكثير من الأصناف تجعل عملية كتابة الشيفرة البرمجية طويلة.
</p>

<p>
	أما في إطار العمل Bootstrap فنجد أن قواعد التنسيق مفصولة عن الهيكل الأساسي للصفحة وبالرغم من أن هنالك بعض المبرمجين يخطئون ويدمجون قواعد التنسيق داخل ملفات HTML إلا أن الإطار بحد ذاته لا يشجع على هذه الممارسات.
</p>

<p>
	بالإضافة إلى ذلك هنالك الفرق بين مبادئ التصميم في Bootstrap و Tailwind CSS فإطار العمل Bootstrap يستخدم منهجية <a href="http://oocss.org/" rel="external nofollow">Object Oriented CSS</a> أو اختصارًا OOCSS لأنه يستخدم كائنات مثل عناصر التنقل والاستمارات …إلخ، وطرقًا لتفاعل المستخدم مع تطبيقات ومواقع الويب. بينما يوفر Tailwind CSS مجموعة أصناف يمكنك إضافتها أو إزالتها أو تحريرها في ملف الإعداد Tailwind.config.js الخاص بالإطار حتى تتمكن من تخصيص التصميم الخاص بك، كما يوجد أصناف لجميع أنواع الهوامش والحشو والخلفيات وأحجام الخطوط ومجموعات الخطوط والموضع ومن بعض الأمثلة عن هذه الأصناف نذكر <code>flex</code> و <code>pt-4</code> و <code>text-center</code> و <code>rotate-90</code> وغيرها، وإليك هذا المثال لفهم هذه الاختلافات.
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_709_17" style=""><span class="dec">&lt;!DOCTYPE html&gt;</span><span class="pln">
</span><span class="tag">&lt;html&gt;</span><span class="pln">

</span><span class="tag">&lt;head&gt;</span><span class="pln">
    </span><span class="com">&lt;!-- Tailwind CSS --&gt;</span><span class="pln">
    </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="pln">
</span><span class="atv">"https://unpkg.com/tailwindcss@^1.0/dist/tailwind.min.css"</span><span class="pln">
        </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;title&gt;</span><span class="pln">Tailwind CSS</span><span class="tag">&lt;/title&gt;</span><span class="pln">
</span><span class="tag">&lt;/head&gt;</span><span class="pln">

</span><span class="tag">&lt;body</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> gray</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">

    </span><span class="com">&lt;!--Card 1--&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">" w-full lg:max-w-full lg:flex"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"border-r border-b border-l
            border-gray-400 lg:border-l-0
            lg:border-t lg:border-gray-400 bg-white
            \rounded-b lg:rounded-b-none lg:rounded-r
            p-4 leading-normal"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"text-gray-700 text-base"</span><span class="tag">&gt;</span><span class="pln">
                This Card is made using Tailwind CSS.
            </span><span class="tag">&lt;/p&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="tag">&lt;/body&gt;</span><span class="pln">

</span><span class="tag">&lt;/html&gt;</span></pre>

<p>
	بينما لاحظ كيف ستكون نفس الصفحة ولكن بإطار عمل Bootstrap:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_709_19" style=""><span class="pun">&lt;!</span><span class="pln">DOCTYPE html</span><span class="pun">&gt;</span><span class="pln">
</span><span class="pun">&lt;</span><span class="pln">html</span><span class="pun">&gt;</span><span class="pln">

</span><span class="pun">&lt;</span><span class="pln">head</span><span class="pun">&gt;</span><span class="pln">
    </span><span class="pun">&lt;!--</span><span class="pln"> BOOTSTRAP </span><span class="pun">--&gt;</span><span class="pln">
    </span><span class="pun">&lt;</span><span class="pln">link rel</span><span class="pun">=</span><span class="str">"stylesheet"</span><span class="pln"> href</span><span class="pun">=</span><span class="pln">
</span><span class="str">"https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"</span><span class="pln">
        integrity</span><span class="pun">=</span><span class="pln">
</span><span class="str">"sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"</span><span class="pln">
        crossorigin</span><span class="pun">=</span><span class="str">"anonymous"</span><span class="pun">&gt;</span><span class="pln">
    </span><span class="pun">&lt;</span><span class="pln">title</span><span class="pun">&gt;</span><span class="pln">BOOTSTRAP</span><span class="pun">&lt;/</span><span class="pln">title</span><span class="pun">&gt;</span><span class="pln">
</span><span class="pun">&lt;/</span><span class="pln">head</span><span class="pun">&gt;</span><span class="pln">

</span><span class="pun">&lt;</span><span class="pln">body style</span><span class="pun">=</span><span class="str">"background-color: gray;"</span><span class="pun">&gt;</span><span class="pln">
    </span><span class="pun">&lt;</span><span class="pln">div </span><span class="kwd">class</span><span class="pun">=</span><span class="str">"card"</span><span class="pun">&gt;</span><span class="pln">
        </span><span class="pun">&lt;</span><span class="pln">div </span><span class="kwd">class</span><span class="pun">=</span><span class="str">"card-body"</span><span class="pun">&gt;</span><span class="pln">
            </span><span class="typ">This</span><span class="pln"> </span><span class="typ">Card</span><span class="pln"> is made using BOOTSTRAP</span><span class="pun">.</span><span class="pln">
        </span><span class="pun">&lt;/</span><span class="pln">div</span><span class="pun">&gt;</span><span class="pln">
    </span><span class="pun">&lt;/</span><span class="pln">div</span><span class="pun">&gt;</span><span class="pln">
</span><span class="pun">&lt;/</span><span class="pln">body</span><span class="pun">&gt;</span><span class="pln">

</span><span class="pun">&lt;/</span><span class="pln">html</span><span class="pun">&gt;</span></pre>

<p>
	في الحقيقة هذه النقطة من أكثر النقاط إثارة للجدل على مستودع إطار العمل في موقع Github ولكن مع ذلك نشهد زيادة كبيرة في الإقبال على هذا الإطار الأمر الذي يدل على وجود محبين لهذه الطريقة من الشيفرات البرمجية.
</p>

<h3>
	دعم المتصفحات
</h3>

<p>
	قد لا يلتفت الكثير إلى هذه النقطة ولكن قد يضطر المبرمج في مرحلة أو مشروع ما إلى النظر لأمر دعم المتصفحات، فيدعم إطار العمل Bootstrap أحدث الإصدارات لغالبية المتصفحات المدمجة في الأنظمة الأساسية مثل نظام التشغيل ويندوز ومتصفح إنترنت إكسبلورر Internet Explorer 10-11 (يذكر أن هذا المتصفح سينتهي دعمه في 22 حزيران عام 2022) أو مايكروسوفت إيدج Microsoft Edge، وإذا كنت بحاجة لدعم النسخ القديمة من المتصفحات مثل مايكروسوفت إكسبلورر IE8-9، فننصحك باستخدام الإصدار Bootstrap 3.
</p>

<p>
	بالنسبة لإطار العمل Tailwind CSS فهو يدعم أيضًا أحدث الإصدارات من المتصفحات مثل كروم Chrome وفيرفوكس Firefox ومايكروسوفت إيدج وسفاري Safari. ولكن لا يدعم Tailwind CSS v3.0 أي إصدار من متصفح إنترنت إكسبلورر IE وإذا أردت دعم المتصفح IE 11 فنوصي باستخدام Tailwind CSS v1.9، والذي لا يزال خيارًا جيدًا ومنتجًا للغاية بالمقارنة مع الطرق القديمة لكتابة الشيفرات الخاصة لملفات التنسيق CSS.
</p>

<h3>
	السرعة والأداء
</h3>

<p>
	في إطار العمل Bootstrap يوجد عدد هائل من المكونات والوظائف وهذا يعني تضمين ملفات كبيرة الحجم إلى تبعيات المشروع. يمكن أن يؤدي استخدام الإطار في مشروعك إلى إبطائه وزيادة وقت تحميل الموقع وبالطبع إثقال كاهل الخادم أيضًا. لتجنب هذه المشكلة تأكد من إضافة الأصناف التي تحتاجها فقط واستخدم الإصدار المصغر أو المضغوط gzip من الملفات الإطار.
</p>

<p>
	بالمقابل بما أن إطار Tailwind CSS ليس به أي مكونات مُعدة مسبقًا الأمر الذي ينعكس على صغر حجم الملفات والتبعيات الخاصة به، وعمومًا إذا لم تكن بحاجة إلى مجموعة كبيرة من المكونات والوظائف التي توفرها Bootstrap فإن إطار Tailwind هي الخيار الأفضل للمشاريع البسيطة وخفيفة الوزن.
</p>

<h3>
	سهولة التعلم للمبتدئين
</h3>

<p>
	يعد إطار العمل Bootstrap سهل الاستخدام لديه منحنى تعليمي بسيط في البداية ويمكن أن يستغرق الأمر بعض الوقت لتعلم كافة الأصناف والمكونات المتاحة كما أنه يوجد العديد من الدورات والمقالات الفيديوهات المتاحة عن هذا الإطار الأمر الذي يجعل رحلة التعلم سهلة نسبيًا.
</p>

<p>
	يتطلب إطار Tailwind CSS وقتًا أطول للتعلم، وحتى بالنسبة للمطورين ذوي الخبرة، يمكن أن يكون من الصعب تعلم كيفية استخدام الأصناف المُعدة مسبقًا والاستفادة منها بالطريقة المثلى، ولكن كما هو الحال مع أي تقنية جديدة فإن الممارسة وكثرة الاستخدام ستُمكننا من الاستفادة من كافة المميزات، بالإضافة إلى ذلك يفتقر إطار Tailwind CSS للمقالات والدروس والفيديوهات التعليمية وبالرغم من أنها قطعت شوطًا كبيرًا كتقنية ناشئة إلا أنها لا تزال متخلفة عن المنافسين مثل Bootstrap، بعبارة أخرى ضع في اعتبارك أن هذا سيؤدي لاستهلاك وقت إضافي لحل المشاكل.
</p>

<h3>
	بيئات العمل ودعم اللغات في محرر الشيفرات
</h3>

<p>
	يزيد عمر إطار العمل Bootstrap عن 12 سنة لذلك نجد بأن معظم محررات الشيفرات البرمجية مثل Sublime و Visual Studio Code و JetBrains تدعمه، وبالمقابل لا نجد هذا الدعم ضمني بالنسبة لإطار Tailwind CSS ولكن يمكن للمحررات المشهورة أن تدعمه من خلال تنزيل إضافة Tailwind CSS IntelliSense لمحرر Visual Studio Code والتي تقدم ميزات متقدمة مثل الإكمال التلقائي وتمييز بعض الجمل والفحص والتحقق من الكتابة الصحيحة في الحقيقة العديد من المحررات الأخرى لديها إضافات أو حلول شبيهة لدعم هذا الإطار.
</p>

<h2>
	أيهما أفضل Tailwind CSS vs Bootstrap؟
</h2>

<p>
	المشكلة الأساسية في إطار العمل Bootstrap هي أن المواقع التي تستخدمه تبدو متشابهة إلى حد ما، وذلك لأن إطار العمل Bootstrap جرّد إنشاء المكونات لدرجة أنه أجبر المطورين على استخدام الأنماط المتوفرة فقط. الشيء نفسه ينطبق على أطر عمل أخرى من نفس المجموعة، ويمكن أن يجادل البعض بأنه يمكن تجاوز الإطار بتخصيص ملفات قواعد التنسيق CSS الخاصة بنا، ولكن مهلًا إذا تجاوزنا إطار العمل كثيرًا، فعندها نعود إلى نقطة مهمة وهي هل هناك فعلًا فائدة من استخدام هذا الإطار؟ لأننا فعليًا سننشئ تنسيقات خاصة بنا ولذلك سيكون إطار العمل مجرد تبعيات إضافية للموقع. أليس كذلك؟!
</p>

<p>
	بالمقابل لا يعيق إطار العمل Tailwind CSS قدرتنا على الإبداع في بناء واجهات مستخدم معقدة وإنما يتيح ذلك بسهولة دون فرض تصميم معين على جميع المواقع. كما أن استخدام مجموعة من أصناف الأدوات المساعدة التي تتيح لك العمل مع ما تحتاج إليه بالضبط، وعدم القلق أبدًا بشأن التغييرات التي تطرأ على عنصر معين لأنه التغييرات ستبقى على ذلك العنصر ولن تؤثر على العناصر الأخرى المشابهة. أي لا مزيد من التنقل جيئة وذهابًا بين ملفات HTML وملفات قواعد التنسيق في المحرر الخاص بك، وبعض المبرمجين لا يفضلون ذلك لأن الشيفرة البرمجية الخاصة بصفحات HTML ستكون فوضوية للغاية، وبالمقابل تكون الشيفرة البرمجية لإطار Bootstrap منظمة ونظيفة كما أن إطار Bootstrap يدعم التفاعل بالاعتماد على لغة جافاسكربت فيوفر مثلًا شرائط تنقل وقوائم وحقول إدخال جاهزة الأمر الذي يسهل دخول المبتدئين ويسرّع من العمل على المشروع إن لم يتطلب تخصيصًا.
</p>

<p>
	في الحقيقة يمكن أن يكون استخدام إطار Bootstrap مناسبًا أكثر للمبتدئين أو للمطورين الشاملين Full Stack وبالمقابل يكون إطار Tailwind CSS مناسبًا أكثر للخبراء ومطوري الواجهات الأمامية Front End Developer.
</p>

<h2>
	متى نستخدم Tailwind CSS و Bootstrap؟
</h2>

<p>
	يسهل إطار العمل Bootstrap عملية تصميم المواقع على المصممين المبتدئين والذين يسارعون إلى بناء نموذج أولي من الموقع أو تطبيق الويب باستخدام مكتبة ضخمة تحتوي على عدد هائل من المكونات والمشاريع المُقدمة من قبل المجتمع، ولكن بمجرد أن يتطور التطبيق وتتعقد تصاميمه ومتطلباته يحدُ الإطار من عملية التصميم ومرونتها ويصبح عبئًا بدل أن يكون مساعدًا.
</p>

<p>
	بالمقابل يعدُ إطار Tailwind CSS حلًا ممتازًا للمطورين المطلعين على لغة CSS والذين يرغبون في تسريع عملية الإنشاء والتصميم على المدى الطويل. ولا يحبذ استخدام الإطار إذا لم تكن معتادًا على لغة CSS أو لا ترغب في قضاء الوقت في تعلم التفاصيل الدقيقة لها.
</p>

<p>
	وبالتأكيد أن الأمر يتعلق باحتياجات المشروع وحجمه وإمكانيات الفريق، يمكن أن يساعدك الإطار في توفير وقت التصميم وخصيصًا للمطورين الذين لا يفضلون استخدام المكونات الجاهزة، وبالتالي فإن قضاء الوقت في اختبار هذا الإطار أمر مفيد. وعمومًا إذ سنح لك الوقت في يوم من الأيام فأنصحك بتجربة إطار Tailwind CSS وخصيصًا إذا كنت مطور واجهات أمامية.
</p>

<h2>
	الخاتمة
</h2>

<p>
	تعرفنا في هذا المقال على لمحة سريعة عن سرعة تطور واجهات الويب واطلعنا على تسارع تطوير الأدوات والأطر المساعدة لتحقيق السرعة والإنتاجية في عملية التصميم في هكذا أجواء كما تعرفنا على أشهر إطاري عمل وهما Bootstrap و Tailwind CSS كما نظرنا إلى الاختلاف بينهما في المجتمع والتطوير وفي المكونات الجاهزة وقابلية التخصيص وفي بنية الشيفرة البرمجية ودعم المتصفحات لهذه الأطر والسرعة والأداء لكل إطار وسهولة التعلم للمبتدئين وبيئات العمل ودعم اللغات في محررات الشيفرات البرمجة لنختم المقال بفهم أي الإطارين أفضل ومتى نستخدم كل واحد منها.
</p>

<p>
	وختامًا يُتوقع من كل إطار عمل أن يسهل من عملية بناء المشاريع البرمجية من خلال توفير بنية أساسية للشيفرات البرمجية المتكررة، وجعل تركيز المبرمج على بناء وإعداد المميزات الإضافية الخاصة بالمشروع هذا هو الهدف وإذا شعرت بأن الإطار أصبح عبئًا على المشروع فعندها لا بد أنك تستخدم الإطار الخاطئ وعندها لا بد من البحث عن الحلول البديلة.
</p>

<h2>
	المصادر
</h2>

<ul>
	<li>
		مقال <a href="https://blog.logrocket.com/tailwind-css-vs-bootstrap-ui-kits/" rel="external nofollow">Tailwind CSS vs. Bootstrap: Is it time to ditch UI kits? - LogRocket Blog</a> لصاحبه Obinna Ekwuno.
	</li>
	<li>
		مقال <a href="https://aspiresoftware.in/blog/tailwind-css-vs-bootstrap/" rel="external nofollow">Top 15 Competitive Differences of Tailwind CSS VS Bootstrap</a> لكاتبه Vinod Luhar.
	</li>
	<li>
		مقال <a href="https://povio.com/blog/8-reasons-why-trying-out-tailwind-css-is-worth-your-time/" rel="external nofollow">8 Reasons Why Trying out Tailwind CSS is Worth Your Time</a> لصاحبه Matevz Petek.
	</li>
	<li>
		مقال <a href="https://www.netsolutions.com/insights/what-is-a-framework-in-programming/" rel="external nofollow">What is a Framework in Programming &amp; Why You Should Use One</a> لصاحبه Ritesh Ranjan.
	</li>
</ul>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/css/%D9%85%D9%88%D8%A7%D8%B6%D9%8A%D8%B9-%D9%85%D8%AA%D9%82%D8%AF%D9%85%D8%A9-%D9%81%D9%8A-css-r1060/" rel="">مواضيع متقدمة في CSS</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/css/bootstrap/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-5-r1315/" rel="">مدخل إلى إطار العمل بوتستراب 5</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1595</guid><pubDate>Mon, 20 Jun 2022 15:05:00 +0000</pubDate></item><item><title>&#x639;&#x646;&#x627;&#x635;&#x631; &#x627;&#x644;&#x625;&#x62F;&#x62E;&#x627;&#x644;: &#x625;&#x646;&#x634;&#x627;&#x621; &#x627;&#x633;&#x62A;&#x645;&#x627;&#x631;&#x629; &#x62F;&#x641;&#x639; &#x641;&#x64A; &#x628;&#x648;&#x62A;&#x633;&#x62A;&#x631;&#x627;&#x628;</title><link>https://academy.hsoub.com/programming/css/bootstrap/%D8%B9%D9%86%D8%A7%D8%B5%D8%B1-%D8%A7%D9%84%D8%A5%D8%AF%D8%AE%D8%A7%D9%84-%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D8%A7%D8%B3%D8%AA%D9%85%D8%A7%D8%B1%D8%A9-%D8%AF%D9%81%D8%B9-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-r1560/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_05/6280b8be1a2b4_------.png.d6641c37e4c6d52f29495ced7f5050bb.png" /></p>

<p>
	سنتعرف في هذا الدرس على طريقة التعامل مع عناصر الإدخال في بوتستراب، إذ توفّر بوتستراب دعمًا قويًا لعناصر الإدخال من خلال إضفاء لمسة جمالية واضحة عليها. سنتعرّف على العناصر الأساسية التي تُستخدم بشكل متكرّر في جميع تطبيقات الويب ثم سنعمل، كما جرت العادة، على تطبيق ما تعلّمناه على موقعنا "نبيه" الذي بنيناه من المقالات السابقة. ستحتاج إلى مراجعة المقالات السابقة في هذه السلسلة كي تتعرّف أكثر على هذا الموقع.
</p>

<p>
	سنتعلّم في هذا الدرس:
</p>

<ul>
<li>
		تنسيق أشهر عناصر الإدخال في بوتستراب.
	</li>
	<li>
		إنشاء صفحة الدفع ضمن موقع نبيه.
	</li>
</ul>
<p>
	هذا الفصل جزء من سلسلة فصول عن بوتستراب 5، وإليك كامل فهرس السلسلة:
</p>

<ul>
<li>
		<a href="https://academy.hsoub.com/programming/html/bootstrap/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-5-r1315/" rel="">مدخل إلى إطار العمل بوتستراب 5</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/html/bootstrap/%D8%B4%D8%B1%D9%8A%D8%B7-%D8%A7%D9%84%D8%AA%D9%86%D9%82%D9%84-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-5-r1316/" rel="">شريط التنقل في بوتستراب 5</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/html/bootstrap/%D9%85%D8%AE%D8%B7%D8%B7-%D8%A7%D9%84%D8%B5%D9%81%D8%AD%D8%A9-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-5-r1317/" rel="">مخطط الصفحة في بوتستراب 5</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/html/bootstrap/%D8%AA%D8%B7%D8%A8%D9%8A%D9%82-%D9%85%D8%AE%D8%B7%D8%B7-%D8%A7%D9%84%D8%B5%D9%81%D8%AD%D8%A9-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-%D8%B9%D9%84%D9%89-%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-r1457/" rel="">تطبيق مخطط الصفحة في بوتستراب على صفحات الويب</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/html/%D9%85%D9%83%D9%88%D9%86-%D8%A7%D9%84%D8%A8%D8%B7%D8%A7%D9%82%D8%A9-card-%D9%88%D9%85%D9%83%D9%88%D9%86-%D8%A7%D9%84%D8%B4%D8%B1%D8%A7%D8%A6%D8%AD-%D8%A7%D9%84%D8%AF%D9%88%D8%A7%D8%B1%D8%A9-carousel-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-r1458/" rel="">مكون البطاقة Card ومكون الشرائح الدوارة Carousel في بوتستراب</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/css/bootstrap/%D9%85%D9%83%D9%88%D9%86-%D8%A7%D9%84%D8%B1%D8%B3%D8%A7%D8%A6%D9%84-%D8%A7%D9%84%D9%85%D9%86%D8%A8%D8%AB%D9%82%D8%A9-modal-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-r1559/" rel="">مكون الرسائل المنبثقة Modal في بوتستراب</a>
	</li>
	<li>
		عناصر الإدخال: إنشاء استمارة دفع في بوتستراب
	</li>
</ul>
<h2>
	تنسيق أشهر عناصر الإدخال في بوتستراب
</h2>

<p>
	تُستخدم عناصر الإدخال عادةً لاستقبال المدخلات من المستخدم، وكما نعلم توفّر <a href="https://wiki.hsoub.com/HTML" rel="external">HTML</a> عناصر جيدة بهذا الصدد. تضفي بوتستراب ناحية جمالية وتناسق واضح على هذه العناصر.
</p>

<p>
	فيما يلي أشهر هذه العناصر التي لا غنى عنها في أي تطبيق ويب يستقبل الدخل من المستخدم.
</p>

<h3>
	عنصر الإدخال النصي
</h3>

<p>
	وهو من أشهر العناصر وأكثرها استخدمًا، ويمكن تنسيق هذا العنصر عن طريق استخدام الصنف التنسيقي <code>form-control</code>. السبب في أنّ هذا الصنف يبدأ بالكلمة <code>form</code> هو أنّه عادةً ما يوضع (وغيره من عناصر الإدخال) ضمن عنصر النموذج <a href="https://wiki.hsoub.com/HTML/form" rel="external"><code>&lt;form&gt;</code></a> رغم أنّه ليس من الضروري ذلك. الشكل العام هو:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_9435_9" style="">
<span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"text"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-control"</span><span class="pln"> </span><span class="tag">&gt;</span></pre>

<p>
	ومن الممكن أيضًا بدلًا من استخدام الصنف <code>form-control</code>، استخدام الصنفين التنسيقيين <code>form-control-lg</code> و <code>form-control-sm</code> اللذين يجعلان عنصر الإدخال النصي كبيرًا أو صغيرًا على الترتيب.
</p>

<h3>
	عنصر العنوان
</h3>

<p>
	هو العنصر <a href="https://wiki.hsoub.com/HTML/label" rel="external"><code>&lt;label&gt;</code></a> وعادةً ما يُستخدم مع العديد من عناصر الإدخال لتوضيح الغاية منها. الصنف التنسيقي المستخدم هنا هو <code>form-label</code> والشكل العام له:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_9435_11" style="">
<span class="tag">&lt;label</span><span class="pln"> </span><span class="atn">for</span><span class="pun">=</span><span class="atv">"DEST_ID"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-label"</span><span class="tag">&gt;</span><span class="pln">العنوان المطلوب</span><span class="tag">&lt;/label&gt;</span><span class="pln">
</span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"DEST_ID"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"text"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-control"</span><span class="pln"> </span><span class="tag">&gt;</span></pre>

<p>
	حيث <code>DEST_ID</code> هو معرّف عنصر الإدخال الذي سيكون عنصر العنوان مخصّصًا له كما موضع. ومرّة أخرى يمكن استخدام الصنفين التنسيقيين <code>form-control-lg</code> و <code>form-control-sm</code> كما في عنصر الإدخال النصي.
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<div class="ipsQuote_contents ipsClearfix">
		<p>
			<strong>ملاحظة</strong>: من الممكن وضع عنصري الإدخال النصي والعنوان ضمن عنصر <code>div</code> له التنسيق <code>form-group</code> والهدف من ذلك هو تجميع هذين العنصرين كي يشكلا وحدة مستقلة لها هوامشها وحاشياتها الجاهزة والملائمة مع العناصر المحيطة، كما ويمكن استخدام هذا التنسيق مع أي عناصر أخرى قد تحتاج إليها.
		</p>
	</div>
</blockquote>

<h3>
	عنصر الاختيار
</h3>

<p>
	من الممكن أيضًا تنسيق عنصر الاختيار <a href="https://wiki.hsoub.com/HTML/input/checkbox" rel="external"><code>checkbox</code></a> على الشكل التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_9435_13" style="">
<span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-check-input"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"checkbox"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"normal_unchecked"</span><span class="tag">&gt;</span></pre>

<p>
	لاحظ الصنف التنسيقي <code>form-check-input</code>. سيظهر هذا العنصر بحالته العادية دون وجود علامة الاختيار ضمنه. أمّا إذا أردت ظهوره بحالة الاختيار فأضف السمة <code>checked</code> فقط إلى هذا العنصر:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_9435_15" style="">
<span class="pln"> </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-check-input"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"checkbox"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"normal_checked"</span><span class="pln"> </span><span class="atn">checked</span><span class="tag">&gt;</span></pre>

<p>
	في كلتا الحالتين السابقتين سيظهر عنصر الاختيار على شكل مربّع صغير بحالة عدم اختيار أو بحالة اختيار على الترتيب، ولكن من الضروري بالطبع إضافة عنصر عنوان توضيحي يوضّح الغاية من عنصر الاختيار، لذلك يمكن وضع عنصر عنوان بجوار عنصر الاختيار له الصنف التنسيقي <code>form-check-label</code> على النحو التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_9435_17" style="">
<span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-check-input"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"checkbox"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"normal_unchecked"</span><span class="tag">&gt;</span><span class="pln">
</span><span class="tag">&lt;label</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-check-label"</span><span class="pln"> </span><span class="atn">for</span><span class="pun">=</span><span class="atv">"normal_unchecked"</span><span class="tag">&gt;</span><span class="pln">عنصر اختيار عادي</span><span class="tag">&lt;/label&gt;</span></pre>

<p>
	عادةً ما يوضّع العنصرين السابقين ضمن عنصر <code>div</code> له التنسيق <code>form-check</code>، وبهذا يصبح مثالنا البسيط على الشكل التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_9435_19" style="">
<span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-check"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-check-input"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"checkbox"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"normal_unchecked"</span><span class="tag">&gt;</span><span class="pln">
</span><span class="tag">&lt;label</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-check-label"</span><span class="pln"> </span><span class="atn">for</span><span class="pun">=</span><span class="atv">"normal_unchecked"</span><span class="tag">&gt;</span><span class="pln">عنصر اختيار عادي</span><span class="tag">&lt;/label&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	سيولّد ذلك شكلًا شبيها بما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="98750" href="https://academy.hsoub.com/uploads/monthly_2022_05/1.png.7fbf0fe7f5a38992aa4bfa10a5c76068.png" rel=""><img alt="1.png" class="ipsImage ipsImage_thumbnailed" data-fileid="98750" data-unique="px3g2ybem" src="https://academy.hsoub.com/uploads/monthly_2022_05/1.png.7fbf0fe7f5a38992aa4bfa10a5c76068.png" style="width: 180px; height: auto;"></a>
</p>

<h3>
	عنصر الانتقاء
</h3>

<p>
	يمكن بشكل مشابه لعنصر الاختيار وضع عنصر الانتقاء <a href="https://wiki.hsoub.com/HTML/input/radio" rel="external"><code>radio</code></a> مع عنصر العنوان الخاص به ضمن عنصر <code>div</code> له التنسيق <code>form-check</code> على الشكل التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_9435_22" style="">
<span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-check"</span><span class="tag">&gt;</span><span class="pln">
  </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-check-input"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"radio"</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"radioGroup"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"normal_radio"</span><span class="tag">&gt;</span><span class="pln">
  </span><span class="tag">&lt;label</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-check-label"</span><span class="pln"> </span><span class="atn">for</span><span class="pun">=</span><span class="atv">"normal_radio"</span><span class="tag">&gt;</span><span class="pln">
    عادي
  </span><span class="tag">&lt;/label&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-check"</span><span class="tag">&gt;</span><span class="pln">
  </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-check-input"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"radio"</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"radioGroup"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"selected_radio"</span><span class="pln"> </span><span class="atn">checked</span><span class="tag">&gt;</span><span class="pln">
  </span><span class="tag">&lt;label</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-check-label"</span><span class="pln"> </span><span class="atn">for</span><span class="pun">=</span><span class="atv">"selected_radio"</span><span class="tag">&gt;</span><span class="pln">
    في وضع انتقاء
  </span><span class="tag">&lt;/label&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	وضعت في الشيفرة السابقة عنصري انتقاء مع ضبط السمة <code>name</code> لهما على النفس القيمة <code>radioGroup</code> لكي نستطيع انتقاء واحد منهما فقط في كل مرّة. يمكن بالطبع إضافة أي عدد من عناصر الانتقاء بحيث يكون لكل منها نفس قيمة السمة <code>name</code> لكي تُعامل على شكل مجموعة واحدة.
</p>

<p>
	ستولّد الشيفرة السابقة شكلًا شبيهًا بما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="98751" href="https://academy.hsoub.com/uploads/monthly_2022_05/2.png.54d0d98cc26f55a929d1bd49da32204f.png" rel=""><img alt="2.png" class="ipsImage ipsImage_thumbnailed" data-fileid="98751" data-unique="rd6vxllp4" src="https://academy.hsoub.com/uploads/monthly_2022_05/2.png.54d0d98cc26f55a929d1bd49da32204f.png" style="width: 150px; height: auto;"></a>
</p>

<h2>
	إنشاء صفحة الدفع ضمن موقع "نبيه"
</h2>

<p>
	حان الآن موعد تجهيز صفحة الدفع checkout.html الخاصة بموقع نبيه. سنجري بدايةً تعديلين صغيرين على الملفين: shopping-cart.html و styles.css.
</p>

<p>
	بالنسبة للملف styles.css سنضيف تنسيق بسيط لمحاذاة بيانات الدفع بشكل ملائم. أضف التنسيق التالي إلى نهاية هذا الملف:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_9435_25" style="">
<span class="com">/*Checkout*/</span><span class="pln">
</span><span class="pun">.</span><span class="pln">payment</span><span class="pun">-</span><span class="pln">details</span><span class="pun">{</span><span class="pln">
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3</span><span class="pun">%</span><span class="pln"> </span><span class="lit">5</span><span class="pun">%;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	بالنسبة للملف shopping-cart.html فسنضيف زر "الشراء الآن" إلى أسفل الصفحة الذي سيحولنا إلى صفحة الدفع التي سنبنيها تاليًا، لذا أضف الشيفرة التالية إلى الملف shopping-cart.html قبل القسم <code>‎section id="footer"‎</code> مباشرةً:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_9435_27" style="">
<span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-4 shopping-cart-content"</span><span class="tag">&gt;&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"checkout.html"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-primary"</span><span class="tag">&gt;</span><span class="pln">الشراء الآن</span><span class="tag">&lt;/a&gt;&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	جاء الآن دور الملف checkout.html والتي ستكون محتوياته على النحو التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_9435_29" style="">
<span class="dec">&lt;!DOCTYPE html&gt;</span><span class="pln">
</span><span class="tag">&lt;html</span><span class="pln"> </span><span class="atn">lang</span><span class="pun">=</span><span class="atv">"ar"</span><span class="pln"> </span><span class="atn">dir</span><span class="pun">=</span><span class="atv">"rtl"</span><span class="tag">&gt;</span><span class="pln">

</span><span class="tag">&lt;head&gt;</span><span class="pln">
    </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">charset</span><span class="pun">=</span><span class="atv">"UTF-8"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"viewport"</span><span class="pln"> </span><span class="atn">content</span><span class="pun">=</span><span class="atv">"width=device-width, initial-scale=1.0"</span><span class="tag">&gt;</span><span class="pln">

    </span><span class="com">&lt;!-- Bootstrap CSS --&gt;</span><span class="pln">
    </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.rtl.min.css"</span><span class="pln">
        </span><span class="atn">integrity</span><span class="pun">=</span><span class="atv">"sha384-gXt9imSW0VcJVHezoNQsP+TNrjYXoGcrqBZJpry9zJt8PCQjobwmhMGaDHTASo9N"</span><span class="pln"> </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"css/styles.css"</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">

    </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"preconnect"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://fonts.googleapis.com"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"preconnect"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://fonts.gstatic.com"</span><span class="pln"> </span><span class="atn">crossorigin</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;link</span><span class="pln">
        </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://fonts.googleapis.com/css2?family=Almarai:wght@300;400;700;800&amp;family=Tajawal:wght@200;300;400;500;700;800;900&amp;display=swap"</span><span class="pln">
        </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="tag">&gt;</span><span class="pln">

    </span><span class="com">&lt;!-- Boostrap 5 icons - web font --&gt;</span><span class="pln">
    </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.7.0/font/bootstrap-icons.css"</span><span class="tag">&gt;</span><span class="pln">

    </span><span class="tag">&lt;title&gt;</span><span class="pln">دورات نبيه | صفحة الدفع</span><span class="tag">&lt;/title&gt;</span><span class="pln">
</span><span class="tag">&lt;/head&gt;</span><span class="pln">

</span><span class="tag">&lt;body&gt;</span><span class="pln">
    </span><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"header"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="com">&lt;!-- Nav Bar --&gt;</span><span class="pln">
        </span><span class="tag">&lt;nav</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar navbar-expand-lg navbar-light"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container-fluid"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar-brand"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/nabih-logo.png"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">margin</span><span class="pun">-</span><span class="pln">left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">8px</span><span class="pun">;</span><span class="atv">"</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">""</span><span class="pln"> </span><span class="atn">height</span><span class="pun">=</span><span class="atv">"32"</span><span class="tag">&gt;</span><span class="pln">
                    نبيه
                </span><span class="tag">&lt;/a&gt;</span><span class="pln">
                </span><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar-toggler"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">data-bs-toggle</span><span class="pun">=</span><span class="atv">"collapse"</span><span class="pln">
                    </span><span class="atn">data-bs-target</span><span class="pun">=</span><span class="atv">"#navbarSupportedContent"</span><span class="pln"> </span><span class="atn">aria-controls</span><span class="pun">=</span><span class="atv">"navbarSupportedContent"</span><span class="pln">
                    </span><span class="atn">aria-expanded</span><span class="pun">=</span><span class="atv">"false"</span><span class="pln"> </span><span class="atn">aria-label</span><span class="pun">=</span><span class="atv">"Toggle navigation"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;span</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar-toggler-icon"</span><span class="tag">&gt;&lt;/span&gt;</span><span class="pln">
                </span><span class="tag">&lt;/button&gt;</span><span class="pln">
                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"collapse navbar-collapse"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"navbarSupportedContent"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;ul</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar-nav me-2 mb-2 mb-lg-0 ms-3"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;li</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-item"</span><span class="tag">&gt;&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-link"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">التصنيفات</span><span class="tag">&lt;/a&gt;&lt;/li&gt;</span><span class="pln">
                    </span><span class="tag">&lt;/ul&gt;</span><span class="pln">
                    </span><span class="tag">&lt;form</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"d-flex me-auto w-100"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-control"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"search"</span><span class="pln"> </span><span class="atn">placeholder</span><span class="pun">=</span><span class="atv">"ابحث عن أي موضوع"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-link"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">position</span><span class="pun">:</span><span class="pln"> relative</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">
                            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"counter zero"</span><span class="tag">&gt;&lt;/div&gt;</span><span class="pln">

                            </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/icons8-shopping-cart-32.png"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
                        </span><span class="tag">&lt;/div&gt;</span><span class="pln">

                        </span><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-dark nabih-buttons"</span><span class="tag">&gt;</span><span class="pln">دخول</span><span class="tag">&lt;/button&gt;</span><span class="pln">
                        </span><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-outline-dark nabih-buttons"</span><span class="tag">&gt;</span><span class="pln">تسجيل جديد</span><span class="tag">&lt;/button&gt;</span><span class="pln">
                    </span><span class="tag">&lt;/form&gt;</span><span class="pln">
                </span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/nav&gt;</span><span class="pln">
    </span><span class="tag">&lt;/section&gt;</span><span class="pln">

    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"payment-details"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-md-7 col-lg-8"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;h4</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"mb-3"</span><span class="tag">&gt;</span><span class="pln">بيانات الدفع</span><span class="tag">&lt;/h4&gt;</span><span class="pln">
            </span><span class="tag">&lt;form&gt;</span><span class="pln">                
                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row g-3"</span><span class="tag">&gt;</span><span class="pln"> </span><span class="com">&lt;!-- الموضع 1 --&gt;</span><span class="pln">
                    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-sm-6"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;label</span><span class="pln"> </span><span class="atn">for</span><span class="pun">=</span><span class="atv">"firstName"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-label"</span><span class="tag">&gt;</span><span class="pln">الاسم</span><span class="tag">&lt;/label&gt;</span><span class="pln">
                        </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"text"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-control"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"firstName"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;/div&gt;</span><span class="pln">

                    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-sm-6"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;label</span><span class="pln"> </span><span class="atn">for</span><span class="pun">=</span><span class="atv">"lastName"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-label"</span><span class="tag">&gt;</span><span class="pln">الكنية</span><span class="tag">&lt;/label&gt;</span><span class="pln">
                        </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"text"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-control"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"lastName"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;/div&gt;</span><span class="pln">

                    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-12"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;label</span><span class="pln"> </span><span class="atn">for</span><span class="pun">=</span><span class="atv">"username"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-label"</span><span class="tag">&gt;</span><span class="pln">اسم المستخدم</span><span class="tag">&lt;/label&gt;</span><span class="pln">
                        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"input-group"</span><span class="tag">&gt;</span><span class="pln"> </span><span class="com">&lt;!-- الموضع 2 --&gt;</span><span class="pln">
                            </span><span class="tag">&lt;span</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"input-group-text"</span><span class="tag">&gt;</span><span class="pln">#</span><span class="tag">&lt;/span&gt;</span><span class="pln">
                            </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"text"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-control"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"username"</span><span class="pln"> </span><span class="atn">placeholder</span><span class="pun">=</span><span class="atv">"اسم المستخدم"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                    </span><span class="tag">&lt;/div&gt;</span><span class="pln">

                    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-12"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;label</span><span class="pln"> </span><span class="atn">for</span><span class="pun">=</span><span class="atv">"email"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-label"</span><span class="tag">&gt;</span><span class="pln">البريد الإلكتروني </span><span class="tag">&lt;span</span><span class="pln">
                                </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"text-muted"</span><span class="tag">&gt;</span><span class="pln">(اختياري)</span><span class="tag">&lt;/span&gt;&lt;/label&gt;</span><span class="pln">
                        </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"email"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-control"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"email"</span><span class="pln"> </span><span class="atn">placeholder</span><span class="pun">=</span><span class="atv">"you@example.com"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;/div&gt;</span><span class="pln">


                </span><span class="tag">&lt;/div&gt;</span><span class="pln">

                </span><span class="tag">&lt;hr</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"my-4"</span><span class="tag">&gt;</span><span class="pln"> </span><span class="com">&lt;!-- الموضع 3 --&gt;</span><span class="pln">


                </span><span class="tag">&lt;h4</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"mb-3"</span><span class="tag">&gt;</span><span class="pln">الدفع</span><span class="tag">&lt;/h4&gt;</span><span class="pln"> 

                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"my-3"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-check"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"credit"</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"paymentMethod"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"radio"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-check-input"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;label</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-check-label"</span><span class="pln"> </span><span class="atn">for</span><span class="pun">=</span><span class="atv">"credit"</span><span class="tag">&gt;</span><span class="pln">بطاقة إئتمان</span><span class="tag">&lt;/label&gt;</span><span class="pln">
                    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-check"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"debit"</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"paymentMethod"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"radio"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-check-input"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;label</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-check-label"</span><span class="pln"> </span><span class="atn">for</span><span class="pun">=</span><span class="atv">"debit"</span><span class="tag">&gt;</span><span class="pln">بطاقة عادية</span><span class="tag">&lt;/label&gt;</span><span class="pln">
                    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-check"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"paypal"</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"paymentMethod"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"radio"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-check-input"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;label</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-check-label"</span><span class="pln"> </span><span class="atn">for</span><span class="pun">=</span><span class="atv">"paypal"</span><span class="tag">&gt;</span><span class="pln">باي بال</span><span class="tag">&lt;/label&gt;</span><span class="pln">
                    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                </span><span class="tag">&lt;/div&gt;</span><span class="pln">

                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-md-6"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;label</span><span class="pln"> </span><span class="atn">for</span><span class="pun">=</span><span class="atv">"cc-name"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-label"</span><span class="tag">&gt;</span><span class="pln">الاسم على البطاقة</span><span class="tag">&lt;/label&gt;</span><span class="pln">
                        </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"text"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-control"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"cc-name"</span><span class="pln"> </span><span class="atn">placeholder</span><span class="pun">=</span><span class="atv">""</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;small</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"text-muted"</span><span class="tag">&gt;</span><span class="pln">الاسم الكامل كما يظهر على البطاقة</span><span class="tag">&lt;/small&gt;</span><span class="pln">
                    </span><span class="tag">&lt;/div&gt;</span><span class="pln">

                    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-md-6"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;label</span><span class="pln"> </span><span class="atn">for</span><span class="pun">=</span><span class="atv">"cc-number"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-label"</span><span class="tag">&gt;</span><span class="pln">رقم البطاقة</span><span class="tag">&lt;/label&gt;</span><span class="pln">
                        </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"text"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-control"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"cc-number"</span><span class="pln"> </span><span class="atn">placeholder</span><span class="pun">=</span><span class="atv">""</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;/div&gt;</span><span class="pln">

                    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-md-3"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;label</span><span class="pln"> </span><span class="atn">for</span><span class="pun">=</span><span class="atv">"cc-expiration"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-label"</span><span class="tag">&gt;</span><span class="pln">تاريخ الانتهاء</span><span class="tag">&lt;/label&gt;</span><span class="pln">
                        </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"text"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-control"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"cc-expiration"</span><span class="pln"> </span><span class="atn">placeholder</span><span class="pun">=</span><span class="atv">""</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;/div&gt;</span><span class="pln">

                    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-md-3"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;label</span><span class="pln"> </span><span class="atn">for</span><span class="pun">=</span><span class="atv">"cc-cvv"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-label"</span><span class="tag">&gt;</span><span class="pln">CVV</span><span class="tag">&lt;/label&gt;</span><span class="pln">
                        </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"text"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-control"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"cc-cvv"</span><span class="pln"> </span><span class="atn">placeholder</span><span class="pun">=</span><span class="atv">""</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;/div&gt;</span><span class="pln">

                    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-check"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"checkbox"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-check-input"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"save-card"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;label</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-check-label"</span><span class="pln"> </span><span class="atn">for</span><span class="pun">=</span><span class="atv">"save-card"</span><span class="tag">&gt;</span><span class="pln">احفظ بيانات البطاقة</span><span class="tag">&lt;/label&gt;</span><span class="pln">
                    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                </span><span class="tag">&lt;/div&gt;</span><span class="pln">


                </span><span class="tag">&lt;hr</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"my-4"</span><span class="tag">&gt;</span><span class="pln">

                </span><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"w-100 btn btn-primary btn-lg"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"submit"</span><span class="tag">&gt;</span><span class="pln">الدفع</span><span class="tag">&lt;/button&gt;</span><span class="pln"> </span><span class="com">&lt;!-- الموضع 4 --&gt;</span><span class="pln">
            </span><span class="tag">&lt;/form&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">

    </span><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"footer"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;footer&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container-fluid"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;i</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"bi bi-facebook social-icon"</span><span class="tag">&gt;&lt;/i&gt;</span><span class="pln">
                </span><span class="tag">&lt;i</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"bi bi-twitter social-icon"</span><span class="tag">&gt;&lt;/i&gt;</span><span class="pln">
                </span><span class="tag">&lt;i</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"bi bi-instagram social-icon"</span><span class="tag">&gt;&lt;/i&gt;</span><span class="pln">
                </span><span class="tag">&lt;i</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"bi bi-envelope social-icon"</span><span class="tag">&gt;&lt;/i&gt;</span><span class="pln">
                </span><span class="tag">&lt;p&gt;</span><span class="pln">© دورات نبيه 2021</span><span class="tag">&lt;/p&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/footer&gt;</span><span class="pln">
    </span><span class="tag">&lt;/section&gt;</span><span class="pln">
    </span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"</span><span class="pln">
        </span><span class="atn">integrity</span><span class="pun">=</span><span class="atv">"sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"</span><span class="pln">
        </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">
</span><span class="tag">&lt;/body&gt;</span><span class="pln">

</span><span class="tag">&lt;/html&gt;</span></pre>

<p>
	ستحصل بعد المعاينة على شكل شبيه بما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="98752" href="https://academy.hsoub.com/uploads/monthly_2022_05/3.png.ff81538cd97525326bb6650665a2dedd.png" rel=""><img alt="3.png" class="ipsImage ipsImage_thumbnailed" data-fileid="98752" data-unique="plirrv5pe" src="https://academy.hsoub.com/uploads/monthly_2022_05/3.thumb.png.500c05c2d5e6f53dce62e29da834c224.png" style="width: 650px; height: auto;"></a>
</p>

<p>
	يبدو أنّ الشيفرة السابقة يجب أن تكون واضحة الآن، ولكن رغم ذلك لنستعرض بعض النقاط الواردة فيها.
</p>

<p>
	بالنظر إلى "الموضع 1" ستلاحظ أنّني استخدمت الصنف <code>g-3</code> مع عنصر <code>div</code>، فتشير العائلة <code>g-*‎</code> إلى Gutters وهي عبارة عن فراغات هامشية معرّفة مسبقًا يمكن وضعها بين الأعمدة (أفقي) أو حتى بين الأسطر (عمودي). وظيفة هذه العائلة وغيرها من العائلات التي سنراها تباعًا هي توفير اختصار سريع لضبط الفراغات بين العناصر المستهدفة دون الحاجة إلى تعريف تنسيقات ضمن ملف تنسيقي منفصل مثلًا.
</p>

<p>
	بالنسبة للفراغات الأفقية نستخدم العائلة الفرعية <code>gx-*‎</code>، أمّا بالنسبة للفراغات العمودية فنستخدم العائلة الفرعية <code>gy-*‎</code>. أمّا إذا أردنا ضبط الفراغات الأفقية والعمودية معًا فنستخدم العائلة <code>g-*‎</code>.
</p>

<p>
	توجد ست قيم معرّفة مسبقًا وهي من <code>g-0</code> إلى <code>g-5</code> بحيث أنّ كل رقم منها (أي من 0 حتى 5) يُضرب بثابت معرّف مسبقًا في بوتستراب وهو <code>‎ $spacer</code> وقيمته هي<code> 1rem</code>. ففي مثالنا هذا يُشير الصنف <code>g-3‎</code> أنّنا نريد ضبط حشوات أفقية وعمودية بمقدار<code> 3rem</code>.
</p>

<p>
	بالنسبة "للموضع 2"، لاحظ الصنف <code>input-group</code> مع العنصر <code>div</code>. لهذا الصنف فائدة تنسيقية جميلة تتمثّل في إمكانية رصف نص عادي (يمكن استخدام العنصر <code>&lt;span&gt;</code>) يمثّل نصًا تعريفيًا، مع عنصر إدخال نصي عادي بحيث يبدوان وكأنّهما عنصر واحد. يمكن استخدام هذه الميزة مثلًا لكي تشير للمستخدم أن يُدخل معرّف تويتر ما، وذلك بوضع الرمز "@" قبل عنصر الإدخال النصي. في مثالنا هنا، وضعت الرمز "#" للإشارة إلى أنّنا نريد اسم المستخدم الخاص بالموقع.
</p>

<p>
	لكي يتم التراصف بشكل صحيح، ستحتاج أيضًا إلى استخدام التنسيق <code>input-group-text</code> مع عنصر <code>&lt;span&gt;</code> (انظر إلى السطر الذي يليه في الشيفرة) الذي يمثّل الحاضن للنص التعريفي، يليه عنصر الإدخال النصي الذي يحمل التنسيق <code>form-control</code> كما هو متوقع.
</p>

<p>
	لننتقل الآن إلى "الموضع 3". لاحظ كيف استخدمنا الصنف <code>my-4</code>. هذا الصنف يعود إلى العائلة الرئيسية <code>m-*‎</code> وهي مسؤولة عن ضبط الهوامش margins والتي يتبع لها عدة عائلات فرعية وهي:
</p>

<ul>
<li>
		العائلة <code>mt-*‎</code> وهي لضبط الهامش العلوي <code>margin-top</code>.
	</li>
	<li>
		العائلة <code>mb-*‎</code> وهي لضبط الهامش السفلي <code>margin-bottom</code>.
	</li>
	<li>
		العائلة <code>ms-*‎</code> وهي لضبط هامش البداية (وهو <code>margin-left</code> في اللغات التي تتجه من اليسار LTR أو <code>margin-right</code> في اللغات التي تتجه من اليمين RTL).
	</li>
	<li>
		العائلة <code>me-*‎</code> وهي لضبط هامش النهاية (وهو <code>margin-left</code> في اللغات RTL وهو <code>margin-right</code> في اللغات LTR).
	</li>
	<li>
		العائلة <code>mx-*‎</code> وهي لضبط الهامشين الأيمن والأيسر بنفس الوقت (<code>margin-right</code> و <code>margin-left</code>).
	</li>
	<li>
		العائلة <code>my-*‎</code> وهي لضبط الهامشين العلوي والسفلي بنفس الوقت (<code>margin-top</code> و <code>margin-bottom</code>).
	</li>
</ul>
<p>
	وكما في العائلة <code>g-*‎</code> توجد ستة قياسات يمكن استخدامها مع العائلة <code>m-*‎</code> وهي من 0 حتى 5. استخدمنا في "الموضع 2" القياس رقم 4 لضبط الهامشين العلوي والسفلي، أي: <code>my-4</code>.
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<div class="ipsQuote_contents ipsClearfix">
		<p>
			<strong>ملاحظة</strong>: توجد عائلة مرافقة للعائلة <code>m-*‎</code> وهي العائلة <code>p-*‎</code> التي تهتم بتحديد الحاشيات padding للعناصر المختارة. ولكن أرجو عدم الخلط بين العائلة <code>p-*‎</code> والعائلة <code>g-*‎</code> التي تهتم بتحديد الفراغات بين الأعمدة أو الأسطر أو كليهما معًا.
		</p>
	</div>
</blockquote>

<p>
	وأخيرًا بالنظر إلى "الموضع 4"، لاحظ أنني قد استخدمت الصنف <code>w-100</code>، يعني ذلك أني أريد أن يشغل هذا العنصر عرضًا مقداره 100% ضمن أقرب حاوية هو موجود ضمنها، كما توجد قيم أخرى أيضًا مثل <code>w-25</code> و <code>w-50</code> و <code>w-75</code>.
</p>

<p>
	يمكنك تنزيل الشيفرة الكاملة لهذا الدرس من <a class="ipsAttachLink" data-fileid="98753" href="https://academy.hsoub.com/applications/core/interface/file/attachment.php?id=98753" rel="">bootstrap5-tutorial.zip</a>، كما ويمكنك الإطلاع على نسخة حيّة من هذه الصفحة <a href="https://husam79.github.io/bootstrap5-tutorial/chapter07/index.html" rel="external nofollow">من هنا</a>.
</p>

<p>
	كما أنصحك بالإطلاع على <a href="https://wiki.hsoub.com/Bootstrap" rel="external">صفحة التوثيق الرسمية</a> في أكاديمية حسوب.
</p>

<h2>
	خاتمة
</h2>

<p>
	تعرّفنا في هذا الدرس على كيفية تنسيق بعض عناصر الإدخال الشائعة باستخدام بوتستراب، وعملنا على تطبيق ما تعلّمناه عن طريق تجهيز صفحة الدفع الخاصة بموقع "نبيه".
</p>

<p>
	نكون بذلك قد وصلنا إلى نهاية هذه السلسلة التي أرجو أن تكون قد حقّقت الفائدة المرجوة في التعرّف العملي على هذه المكتبة المهمة "بوتستراب" مع الإصدار الأخير لها 5.0 حتى تاريخ كتابة هذا المقال.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/programming/css/bootstrap/%D8%A8%D9%86%D8%A7%D8%A1-%D9%82%D8%A7%D8%A6%D9%85%D8%A9-%D8%B4%D8%AC%D8%B1%D9%8A%D8%A9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-r623/" rel="">بناء قائمة شجرية باستخدام البوتستراب</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/css/bootstrap/10-%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D8%B4%D8%A7%D8%A6%D8%B9%D8%A9-%D8%B9%D9%86%D8%AF-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-bootstrap-r190/" rel="">10 أخطاء شائعة عند استخدام إطار العمل Bootstrap</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1560</guid><pubDate>Sun, 15 May 2022 08:44:44 +0000</pubDate></item><item><title>&#x645;&#x643;&#x648;&#x646; &#x627;&#x644;&#x631;&#x633;&#x627;&#x626;&#x644; &#x627;&#x644;&#x645;&#x646;&#x628;&#x62B;&#x642;&#x629; Modal &#x641;&#x64A; &#x628;&#x648;&#x62A;&#x633;&#x62A;&#x631;&#x627;&#x628;</title><link>https://academy.hsoub.com/programming/css/bootstrap/%D9%85%D9%83%D9%88%D9%86-%D8%A7%D9%84%D8%B1%D8%B3%D8%A7%D8%A6%D9%84-%D8%A7%D9%84%D9%85%D9%86%D8%A8%D8%AB%D9%82%D8%A9-modal-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-r1559/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_05/6280b16986185_---modal--.png.33c3fe1415eb48c23b93c3e6d9203667.png" /></p>

<p>
	سنتعامل في هذا الدرس مع مكوّن جديد ومفيد من بوتستراب، ألا وهو مكوّن الرسائل المنبثقة Modal. يُستخدم هذا المكوّن في إضفاء ميزة جمالية عندما نريد التواصل مع المستخدم، كأن نُظهر به رسالة تفيد بالانتهاء من تنفيذ إجراء معيّن، أو الإبلاغ عن حدوث خطأ ما، أو حتى عندما نريد أن نُخبر المستخدم بمعلومة معيّنة بحيث يمكنه أن يتخذ قرارًا ما بناء على ذلك. وكما جرت العادة، سنطبّق ما سنتعلّمه في هذا الدرس على موقع" نبيه" الذي بنيناه في مقالات سابقة من هذه السلسلة.
</p>

<p>
	سنعمل في هذا الدرس على:
</p>

<ul>
<li>
		التعرّف على مكوّن الرسائل المنبثقة Modal في بوتستراب.
	</li>
	<li>
		إضافة المنتجات إلى سلة المشتريات في موقع نبيه.
	</li>
	<li>
		إنشاء صفحة جديدة في موقع نبيه لعرض محتويات سلة المشتريات.
	</li>
</ul>
<p>
	هذا الفصل جزء من سلسلة فصول عن بوتستراب 5، وإليك كامل فهرس السلسلة:
</p>

<ul>
<li>
		<a href="https://academy.hsoub.com/programming/html/bootstrap/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-5-r1315/" rel="">مدخل إلى إطار العمل بوتستراب 5</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/html/bootstrap/%D8%B4%D8%B1%D9%8A%D8%B7-%D8%A7%D9%84%D8%AA%D9%86%D9%82%D9%84-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-5-r1316/" rel="">شريط التنقل في بوتستراب 5</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/html/bootstrap/%D9%85%D8%AE%D8%B7%D8%B7-%D8%A7%D9%84%D8%B5%D9%81%D8%AD%D8%A9-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-5-r1317/" rel="">مخطط الصفحة في بوتستراب 5</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/html/bootstrap/%D8%AA%D8%B7%D8%A8%D9%8A%D9%82-%D9%85%D8%AE%D8%B7%D8%B7-%D8%A7%D9%84%D8%B5%D9%81%D8%AD%D8%A9-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-%D8%B9%D9%84%D9%89-%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-r1457/" rel="">تطبيق مخطط الصفحة في بوتستراب على صفحات الويب</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/html/%D9%85%D9%83%D9%88%D9%86-%D8%A7%D9%84%D8%A8%D8%B7%D8%A7%D9%82%D8%A9-card-%D9%88%D9%85%D9%83%D9%88%D9%86-%D8%A7%D9%84%D8%B4%D8%B1%D8%A7%D8%A6%D8%AD-%D8%A7%D9%84%D8%AF%D9%88%D8%A7%D8%B1%D8%A9-carousel-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-r1458/" rel="">مكون البطاقة Card ومكون الشرائح الدوارة Carousel في بوتستراب</a>
	</li>
	<li>
		مكون الرسائل المنبثقة Modal في بوتستراب
	</li>
	<li>
		عناصر الإدخال: إنشاء استمارة دفع في بوتستراب
	</li>
</ul>
<h2>
	التعرف على مكون الرسائل المنبثقة Modal في بوتستراب
</h2>

<p>
	يمكن إنشاء أشكال متنوّعة وغنيّة من مكوّن الرسائل المنبثقة. سنستعرض فيما يلي الشكل المبسّط الأساسي التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1992_7" style="">
<span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"modal"</span><span class="pln"> </span><span class="atn">tabindex</span><span class="pun">=</span><span class="atv">"-1"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"exampleModal"</span><span class="tag">&gt;</span><span class="pln"> </span><span class="com">&lt;!-- الموضع 1 --&gt;</span><span class="pln">
  </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"modal-dialog"</span><span class="tag">&gt;</span><span class="pln"> </span><span class="com">&lt;!-- الموضع 2 --&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"modal-content"</span><span class="tag">&gt;</span><span class="pln"> </span><span class="com">&lt;!-- الموضع 3 --&gt;</span><span class="pln">
      </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"modal-header"</span><span class="tag">&gt;</span><span class="com">&lt;!-- الموضع 4 --&gt;</span><span class="pln">
        </span><span class="tag">&lt;h5</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"modal-title"</span><span class="tag">&gt;</span><span class="pln">العنوان هنا</span><span class="tag">&lt;/h5&gt;</span><span class="pln">
        </span><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn-close"</span><span class="pln"> </span><span class="atn">data-bs-dismiss</span><span class="pun">=</span><span class="atv">"modal"</span><span class="pln"> </span><span class="atn">aria-label</span><span class="pun">=</span><span class="atv">"Close"</span><span class="tag">&gt;&lt;/button&gt;</span><span class="pln">
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">
      </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"modal-body"</span><span class="tag">&gt;</span><span class="pln"> </span><span class="com">&lt;!-- الموضع 5 --&gt;</span><span class="pln">
        </span><span class="tag">&lt;p&gt;</span><span class="pln">محتويات النافذة المنبثقة هنا</span><span class="tag">&lt;/p&gt;</span><span class="pln">
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">
      </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"modal-footer"</span><span class="tag">&gt;</span><span class="pln"> </span><span class="com">&lt;!-- الموضع 6 --&gt;</span><span class="pln">
        </span><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-secondary"</span><span class="pln"> </span><span class="atn">data-bs-dismiss</span><span class="pun">=</span><span class="atv">"modal"</span><span class="tag">&gt;</span><span class="pln">إغلاق</span><span class="tag">&lt;/button&gt;</span><span class="pln">
        </span><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-primary"</span><span class="tag">&gt;</span><span class="pln">حفظ التغييرات</span><span class="tag">&lt;/button&gt;</span><span class="pln">
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	من الشيفرة السابقة يبدأ تعريف النافذة المنبثقة في "الموضع 1" من خلال الصنف <code>modal</code> لعنصر <a href="https://wiki.hsoub.com/HTML/div" rel="external"><code>div</code></a> عادي. أما في "الموضع 2" نستخدم الصنف <code>modal-dialog</code> الضروري أيضًا لكي تعمل النافذة المنبثقة بشكل صحيح. تُوضع محتويات النافذة المنبثقة بشكل كامل ضمن عنصر <code>div</code> يحمل الصنف <code>modal-content</code> ويمثِّل "الموضع 3" الحاضن لمحتويات النافذة المنبثقة.
</p>

<p>
	يمكن أن يحتوي العنصر <code>div.modal-content</code> بدوره على ثلاثة أقسام:
</p>

<ul>
<li>
		ترويسة النافذة المنبثق"الموضع 4" وهي عنصر <code>div</code> له الصنف <code>modal-header</code>.
	</li>
	<li>
		جسم النافذة المنبثقة "الموضع 5" وهي عنصر <code>div</code> له الصنف <code>modal-body</code>.
	</li>
	<li>
		تذييل النافذة المنبثقة "الموضع 6" وهي عنصر <code>div</code> له الصنف <code>modal-footer</code>.
	</li>
</ul>
<p>
	بالنسبة للترويسة، فيمكن أن نضع فيها عنوان النافذة المنبثقة (عن طريق عنصر <code>div</code> له التنسيق <code>modal-title</code>) أو بمعنى آخر عنوان الرسالة التي نريد عرضها للمستخدم، بالإضافة إلى إمكانية وضع زر صغير (له التنسيق <code>btn-close</code>) لنسمح للمستخدم بإغلاق هذه النافذة. أمّا جسم النافذة، فمكن أن نضع فيه أي محتوى ملائم نريد عرضه للمستخدم. وبالنسبة للتذييل، فيوضع فيه عادةً أزرار التحكّم التي يمكن من خلالها الاستجابة للرسالة أو المعلومة التي يعرضها التطبيق.
</p>

<p>
	لتجربة الشيفرة السابقة، ستحتاج مثلًا إلى زر منفصل لكي يعمل على تفعيل ظهور النافذة المنبثقة المعرّفة ضمن هذه الشيفرة. أقترح أن تستخدم الزر البسيط التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1992_9" style="">
<span class="com">&lt;!-- Button trigger modal --&gt;</span><span class="pln">
    </span><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-primary"</span><span class="pln"> </span><span class="atn">data-bs-toggle</span><span class="pun">=</span><span class="atv">"modal"</span><span class="pln"> </span><span class="atn">data-bs-target</span><span class="pun">=</span><span class="atv">"#exampleModal"</span><span class="tag">&gt;</span><span class="pln">
        أظهر النافذة
    </span><span class="tag">&lt;/button&gt;</span></pre>

<p>
	يمكن وضع هذا الزر قبل أو بعد الشيفرة السابقة ضمن القسم <code>body</code> من الصفحة. لاحظ أنّ السمة <code>data-bs-target</code> من الزر السابق لها القيمة <code>‎#exampleModal</code> وهي نفسها معرّف عنصر <code>div</code> الرئيسي "الموضع 1" الذي يحضن النافذة المنبثقة.
</p>

<p>
	يجب عليك الانتباه أيضًا أنّه لن يمكنك تجربة الشيفرة السابقة بشكل ناجح دون استيراد مكتبات بوتستراب بشكل صحيح، كما تعلّمنا ذلك مسبقًا.
</p>

<p>
	بعد أن تعمل الشيفرة السابقة بشكل صحيح، ستحصل على شكل شبيه بما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="98746" href="https://academy.hsoub.com/uploads/monthly_2022_05/1.png.20822c7932c4366bac8a2ca70dbb9a93.png" rel=""><img alt="1.png" class="ipsImage ipsImage_thumbnailed" data-fileid="98746" data-unique="qaq35kg3o" src="https://academy.hsoub.com/uploads/monthly_2022_05/1.png.20822c7932c4366bac8a2ca70dbb9a93.png" style="width: 450px; height: auto;"></a>
</p>

<p>
	ستلاحظ عند الضغط على الزر "إغلاق" اختفاء هذه النافذة وسبب ذلك هو وجود السمة <code>data-bs-dismiss</code> مع القيمة <code>modal</code> لها، ويمكنك أيضًا الخروج من هذه النافذة بالنقر في أي مكان خارجها، وهو السلوك الافتراضي. يمكنك منع هذا السلوك، أي أنّك تجعل إخفاء هذه النافذة يكون حصرًا بالنقر على الزر "إغلاق" بأن تضع السمة <code>data-bs-backdrop</code> مع القيمة <code>static</code> لها وذلك ضمن عنصر <code>div</code> الرئيسي "الموضع 1".
</p>

<p>
	يمكنك أيضًا الحصول على تأثير لطيف عند إظهار النافذة وإخفائها وذلك بأني تضيف التنسيق <code>fade</code> إلى الصنف <code>modal</code> ضمن عنصر <code>div</code> الرئيسي "الموضع 1".
</p>

<p>
	سيصبح عنصر <code>div</code> الرئيسي بعد التعديلين المقترحين على الشكل التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1992_13" style="">
<span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"modal fade"</span><span class="pln"> </span><span class="atn">tabindex</span><span class="pun">=</span><span class="atv">"-1"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"exampleModal"</span><span class="pln"> </span><span class="atn">data-bs-backdrop</span><span class="pun">=</span><span class="atv">"static"</span><span class="tag">&gt;</span></pre>

<p>
	في الحقيقة، توجد العديد من الإضافات والتنسيقات المختلفة التي يمكنك الإطلاع عليها من خلال <a href="https://getbootstrap.com/docs/5.1/components/modal/" rel="external nofollow">صفحة التوثيق الرسمية</a> لهذا المكوّن.
</p>

<h2>
	إضافة المنتجات إلى سلة المشتريات في موقع نبيه
</h2>

<p>
	سنعمل في هذه الفقرة على محاكاة عملية إضافة المنتجات إلى سلّة المشتريات الخاصة بموقع نبيه (يمكنك تنزيل شيفرة <a href="https://academy.hsoub.com/programming/html/%D9%85%D9%83%D9%88%D9%86-%D8%A7%D9%84%D8%A8%D8%B7%D8%A7%D9%82%D8%A9-card-%D9%88%D9%85%D9%83%D9%88%D9%86-%D8%A7%D9%84%D8%B4%D8%B1%D8%A7%D8%A6%D8%AD-%D8%A7%D9%84%D8%AF%D9%88%D8%A7%D8%B1%D8%A9-carousel-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-r1458/" rel="">الدرس الخامس السابق</a> من الملف المرفق في الأسفل).
</p>

<p>
	في الحقيقة هناك العديد من الملاحظات حول هذا الموضوع، من أهمّها، أّنه من المنطقي إنشاء حسابات للمستخدمين كي يستطيع المستخدم إضافة أي منتج يرغبه إلى سلّة المشتريات الخاصة به، وأيضًا أنّنا في هذا المشروع سنعمل على حفظ المنتجات المضافة للسلة إلى التخزين المحلّي الخاص بالمتصفّخ وليس إلى قاعدة بيانات موجودة على الإنترنت. سنتغاضى في الحقيقة عن هذين المتطلّبين المهمّين والبديهيين في التطبيقات العمليّة، وذلك بسبب أنّ الهدف من هذا المشروع هو شرح مفاهيم بوتستراب 5 بصورة مبسّطة وميسرة.
</p>

<p>
	سنعمل على إجراء بعض التعديلات على ملف الصفحة الرئيسية index.html القديم، وذلك للسماح بإضافة المنتجات إلى سلة المشتريات، أهم هذه التعديلات هي:
</p>

<ul>
<li>
		إضافة الشيفرة اللازمة للإظهار نافذة منبثقة عندما يريد المستخدم أن يضيف منتج ما إلى سلّة المشتريات.
	</li>
	<li>
		إضافة قسم لشيفرة <a href="https://wiki.hsoub.com/JavaScript" rel="external">جافاسكريبت</a> تتمثّل مهمتها في إدارة عملية إضافة المنتجات التي يرغبها المستخدم إلى التخزين الداخلي ضمن المتصفّح وأيضًا تحديث أيقونة سلّة المشتريات الموجودة في أعلى الصفحة بالعدد الحالي للمنتجات التي اختارها المستخدم.
	</li>
</ul>
<p>
	في الحقيقة ستعمل <a href="https://academy.hsoub.com/programming/javascript/%D9%86%D9%85%D8%B7-%D9%83%D8%AA%D8%A7%D8%A8%D8%A9-%D8%B4%D9%8A%D9%81%D8%B1%D8%A9-%D8%AC%D8%A7%D9%81%D8%A7%D8%B3%D9%83%D8%B1%D8%A8%D8%AA-r785/" rel="">شيفرة جافاسكربت</a> السابقة على تضمين وحدة برمجية module اسمها main الموجودة ضمن الملف main.js، حيث تحتوي هذه الوحدة على بعض التوابع المفيدة التي تدير العمليات البرمجية الكاملة التي نحتاجها في هذا الدرس (سنتحدّث عن هذه الوحدة بعد قليل).
</p>

<p>
	ستصبح الشيفرة الخاصة بالملف index.html على الشكل التالي (الملف مرفق في نهاية المقال):
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1992_24" style="">
<span class="dec">&lt;!doctype html&gt;</span><span class="pln">
</span><span class="tag">&lt;html</span><span class="pln"> </span><span class="atn">lang</span><span class="pun">=</span><span class="atv">"ar"</span><span class="pln"> </span><span class="atn">dir</span><span class="pun">=</span><span class="atv">"rtl"</span><span class="tag">&gt;</span><span class="pln">

</span><span class="tag">&lt;head&gt;</span><span class="pln">
  </span><span class="com">&lt;!-- Required meta tags --&gt;</span><span class="pln">
  </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">charset</span><span class="pun">=</span><span class="atv">"utf-8"</span><span class="tag">&gt;</span><span class="pln">
  </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"viewport"</span><span class="pln"> </span><span class="atn">content</span><span class="pun">=</span><span class="atv">"width=device-width, initial-scale=1"</span><span class="tag">&gt;</span><span class="pln">

  </span><span class="com">&lt;!-- Bootstrap CSS --&gt;</span><span class="pln">
  </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.rtl.min.css"</span><span class="pln">
    </span><span class="atn">integrity</span><span class="pun">=</span><span class="atv">"sha384-gXt9imSW0VcJVHezoNQsP+TNrjYXoGcrqBZJpry9zJt8PCQjobwmhMGaDHTASo9N"</span><span class="pln"> </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="tag">&gt;</span><span class="pln">
  </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"css/styles.css"</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">

  </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"preconnect"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://fonts.googleapis.com"</span><span class="tag">&gt;</span><span class="pln">
  </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"preconnect"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://fonts.gstatic.com"</span><span class="pln"> </span><span class="atn">crossorigin</span><span class="tag">&gt;</span><span class="pln">
  </span><span class="tag">&lt;link</span><span class="pln">
    </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://fonts.googleapis.com/css2?family=Almarai:wght@300;400;700;800&amp;family=Tajawal:wght@200;300;400;500;700;800;900&amp;display=swap"</span><span class="pln">
    </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="tag">&gt;</span><span class="pln">

  </span><span class="com">&lt;!-- Boostrap 5 icons - web font --&gt;</span><span class="pln">
  </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.7.0/font/bootstrap-icons.css"</span><span class="tag">&gt;</span><span class="pln">

  </span><span class="tag">&lt;title&gt;</span><span class="pln">دورات نبيه</span><span class="tag">&lt;/title&gt;</span><span class="pln">
</span><span class="tag">&lt;/head&gt;</span><span class="pln">

</span><span class="tag">&lt;body&gt;</span><span class="pln">
  </span><span class="com">&lt;!-- نافذة منبثقة --&gt;</span><span class="pln">
  </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"modal fade"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"addToCartConfirmation"</span><span class="pln"> </span><span class="atn">tabindex</span><span class="pun">=</span><span class="atv">"-1"</span><span class="pln"> </span><span class="atn">aria-labelledby</span><span class="pun">=</span><span class="atv">"addToCartConfirmation"</span><span class="pln">
    </span><span class="atn">aria-hidden</span><span class="pun">=</span><span class="atv">"true"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"modal-dialog"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"modal-content"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"modal-header"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;h5</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"modal-title"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"modalLabel"</span><span class="tag">&gt;</span><span class="pln">نبيه</span><span class="tag">&lt;/h5&gt;</span><span class="pln">
          </span><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn-close"</span><span class="pln"> </span><span class="atn">data-bs-dismiss</span><span class="pun">=</span><span class="atv">"modal"</span><span class="pln"> </span><span class="atn">aria-label</span><span class="pun">=</span><span class="atv">"Close"</span><span class="tag">&gt;&lt;/button&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"modal-body"</span><span class="tag">&gt;</span><span class="pln">
          تمت الإضافة بنجاح
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"modal-footer"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-secondary"</span><span class="pln"> </span><span class="atn">data-bs-dismiss</span><span class="pun">=</span><span class="atv">"modal"</span><span class="tag">&gt;</span><span class="pln">إغلاق</span><span class="tag">&lt;/button&gt;</span><span class="pln">
          </span><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-primary"</span><span class="pln"> </span><span class="atn">onclick</span><span class="pun">=</span><span class="atv">"</span><span class="pln">window</span><span class="pun">.</span><span class="pln">location</span><span class="pun">=</span><span class="str">'shopping-cart.html'</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">الذهاب إلى السلة</span><span class="tag">&lt;/button&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span><span class="pln">

  </span><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"header"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="com">&lt;!-- Nav Bar --&gt;</span><span class="pln">
    </span><span class="tag">&lt;nav</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar navbar-expand-lg navbar-light"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container-fluid"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar-brand"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/nabih-logo.png"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">margin</span><span class="pun">-</span><span class="pln">left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">8px</span><span class="pun">;</span><span class="atv">"</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">""</span><span class="pln"> </span><span class="atn">height</span><span class="pun">=</span><span class="atv">"32"</span><span class="tag">&gt;</span><span class="pln">
          نبيه
        </span><span class="tag">&lt;/a&gt;</span><span class="pln">
        </span><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar-toggler"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">data-bs-toggle</span><span class="pun">=</span><span class="atv">"collapse"</span><span class="pln"> </span><span class="atn">data-bs-target</span><span class="pun">=</span><span class="atv">"#navbarSupportedContent"</span><span class="pln">
          </span><span class="atn">aria-controls</span><span class="pun">=</span><span class="atv">"navbarSupportedContent"</span><span class="pln"> </span><span class="atn">aria-expanded</span><span class="pun">=</span><span class="atv">"false"</span><span class="pln"> </span><span class="atn">aria-label</span><span class="pun">=</span><span class="atv">"Toggle navigation"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;span</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar-toggler-icon"</span><span class="tag">&gt;&lt;/span&gt;</span><span class="pln">
        </span><span class="tag">&lt;/button&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"collapse navbar-collapse"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"navbarSupportedContent"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;ul</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar-nav me-2 mb-2 mb-lg-0 ms-3"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;li</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-item"</span><span class="tag">&gt;&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-link"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">التصنيفات</span><span class="tag">&lt;/a&gt;&lt;/li&gt;</span><span class="pln">
          </span><span class="tag">&lt;/ul&gt;</span><span class="pln">
          </span><span class="tag">&lt;form</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"d-flex me-auto w-100"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-control"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"search"</span><span class="pln"> </span><span class="atn">placeholder</span><span class="pun">=</span><span class="atv">"ابحث عن أي موضوع"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-link"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">position</span><span class="pun">:</span><span class="pln"> relative</span><span class="pun">;</span><span class="atv">"</span><span class="pln"> </span><span class="atn">onclick</span><span class="pun">=</span><span class="atv">"</span><span class="pln">goToShoppingCart</span><span class="pun">()</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"counter zero"</span><span class="tag">&gt;&lt;/div&gt;</span><span class="pln">

              </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"shopping-cart.html"</span><span class="tag">&gt;&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/icons8-shopping-cart-32.png"</span><span class="pln"> </span><span class="tag">/&gt;&lt;/a&gt;</span><span class="pln"> 
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">

            </span><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-dark nabih-buttons"</span><span class="tag">&gt;</span><span class="pln">دخول</span><span class="tag">&lt;/button&gt;</span><span class="pln">
            </span><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-outline-dark nabih-buttons"</span><span class="tag">&gt;</span><span class="pln">تسجيل جديد</span><span class="tag">&lt;/button&gt;</span><span class="pln">
          </span><span class="tag">&lt;/form&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/nav&gt;</span><span class="pln">

    </span><span class="com">&lt;!--Main View--&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"mainview"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-6"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;h1</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"mainview-heading"</span><span class="tag">&gt;</span><span class="pln">دورات غنية بجودة عالية</span><span class="tag">&lt;/h1&gt;</span><span class="pln">
          </span><span class="tag">&lt;h3</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"mainview-subheading"</span><span class="tag">&gt;</span><span class="pln"> طور نفسك لتنافس في سوق العمل</span><span class="tag">&lt;/h3&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-6"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"mainview-image"</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/show-case.jpg"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
  </span><span class="tag">&lt;/section&gt;</span><span class="pln">

  </span><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"best-selling"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"section-title"</span><span class="tag">&gt;</span><span class="pln">الدورات الأكثر مبيعًا</span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"bestSellingCourses"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"carousel carousel-dark slide"</span><span class="pln"> </span><span class="atn">data-bs-ride</span><span class="pun">=</span><span class="atv">"carousel"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"carousel-inner"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"carousel-item active"</span><span class="tag">&gt;</span><span class="pln">

          </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row"</span><span class="tag">&gt;</span><span class="pln">

            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-3"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card"</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"productCard"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"P1"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/python-product.jpg"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-img-top product-image"</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"python-course"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
                  </span><span class="tag">&lt;h5</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-title card-title"</span><span class="tag">&gt;</span><span class="pln">دورة أساسيات البرمجة باستخدام بايثون</span><span class="tag">&lt;/h5&gt;</span><span class="pln">
                  </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-text card-text"</span><span class="tag">&gt;</span><span class="pln">في هذه الدورة سنتعلّم مبادئ البرمجة في لغة بايثون</span><span class="tag">&lt;/p&gt;</span><span class="pln">
                  </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-primary"</span><span class="pln"> </span><span class="atn">data-bs-toggle</span><span class="pun">=</span><span class="atv">"modal"</span><span class="pln"> </span><span class="atn">data-bs-target</span><span class="pun">=</span><span class="atv">"#addToCartConfirmation"</span><span class="tag">&gt;</span><span class="pln">أضف
                    إلى السلة</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                  </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"price-tag"</span><span class="tag">&gt;</span><span class="pln">$10</span><span class="tag">&lt;/div&gt;</span><span class="pln">
                </span><span class="tag">&lt;/div&gt;</span><span class="pln">
              </span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">

            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-3"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card"</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"productCard"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"P2"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/github-product.jpg"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-img-top product-image"</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"github-course"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
                  </span><span class="tag">&lt;h5</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-title card-title"</span><span class="tag">&gt;</span><span class="pln">دورة التعامل مع GitHub</span><span class="tag">&lt;/h5&gt;</span><span class="pln">
                  </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-text card-text"</span><span class="tag">&gt;</span><span class="pln">تعلّم كيف تدير مشاريعك البرمجية من حيث إدارة الإصدار والمساهة في
                    مشاريع برمجية
                    أخرى.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
                  </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-primary"</span><span class="pln"> </span><span class="atn">data-bs-toggle</span><span class="pun">=</span><span class="atv">"modal"</span><span class="pln"> </span><span class="atn">data-bs-target</span><span class="pun">=</span><span class="atv">"#addToCartConfirmation"</span><span class="tag">&gt;</span><span class="pln">أضف
                    إلى السلة</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                  </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"price-tag"</span><span class="tag">&gt;</span><span class="pln">$15</span><span class="tag">&lt;/div&gt;</span><span class="pln">
                </span><span class="tag">&lt;/div&gt;</span><span class="pln">
              </span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">

            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-3"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card"</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"productCard"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"P3"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/python-django-product.jpg"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-img-top product-image"</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"django-course"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
                  </span><span class="tag">&lt;h5</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-title card-title"</span><span class="tag">&gt;</span><span class="pln">دورة تطوير تطبيقات ويب باستخدام بايثون مع Django</span><span class="tag">&lt;/h5&gt;</span><span class="pln">
                  </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-text card-text"</span><span class="tag">&gt;</span><span class="pln">تعلّم كيف تبني تطبيقات ويب باستخدام لغة بايثون مع Django </span><span class="tag">&lt;/p&gt;</span><span class="pln">
                  </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-primary"</span><span class="pln"> </span><span class="atn">data-bs-toggle</span><span class="pun">=</span><span class="atv">"modal"</span><span class="pln"> </span><span class="atn">data-bs-target</span><span class="pun">=</span><span class="atv">"#addToCartConfirmation"</span><span class="tag">&gt;</span><span class="pln">أضف
                    إلى السلة</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                  </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"price-tag"</span><span class="tag">&gt;</span><span class="pln">$20</span><span class="tag">&lt;/div&gt;</span><span class="pln">
                </span><span class="tag">&lt;/div&gt;</span><span class="pln">
              </span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">

            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-3"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card"</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"productCard"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"P4"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/javascript-product.jpg"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-img-top product-image"</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"javascript-course"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
                  </span><span class="tag">&lt;h5</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-title card-title"</span><span class="tag">&gt;</span><span class="pln">دورة أساسيات البرمجة باستخدام جافاسكريبت</span><span class="tag">&lt;/h5&gt;</span><span class="pln">
                  </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-text card-text"</span><span class="tag">&gt;</span><span class="pln"> سنتعلّم في هذه الدورة كيفية تطوير تطبيقات الواجهة الأمامية باستخدام
                    جافاسكريبت
                  </span><span class="tag">&lt;/p&gt;</span><span class="pln">
                  </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-primary"</span><span class="pln"> </span><span class="atn">data-bs-toggle</span><span class="pun">=</span><span class="atv">"modal"</span><span class="pln"> </span><span class="atn">data-bs-target</span><span class="pun">=</span><span class="atv">"#addToCartConfirmation"</span><span class="tag">&gt;</span><span class="pln">أضف
                    إلى السلة</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                  </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"price-tag"</span><span class="tag">&gt;</span><span class="pln">$25</span><span class="tag">&lt;/div&gt;</span><span class="pln">
                </span><span class="tag">&lt;/div&gt;</span><span class="pln">
              </span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
          </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">

        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"carousel-item"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-3"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card"</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"productCard"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"P5"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/php-product.jpg"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-img-top product-image"</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"php-course"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
                  </span><span class="tag">&lt;h5</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-title card-title"</span><span class="tag">&gt;</span><span class="pln">دورة أساسيات البرمجة باستخدام PHP</span><span class="tag">&lt;/h5&gt;</span><span class="pln">
                  </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-text card-text"</span><span class="tag">&gt;</span><span class="pln">في هذه الدورة سنتعلّم مبادئ البرمجة في لغة PHP</span><span class="tag">&lt;/p&gt;</span><span class="pln">
                  </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-primary"</span><span class="pln"> </span><span class="atn">data-bs-toggle</span><span class="pun">=</span><span class="atv">"modal"</span><span class="pln"> </span><span class="atn">data-bs-target</span><span class="pun">=</span><span class="atv">"#addToCartConfirmation"</span><span class="tag">&gt;</span><span class="pln">أضف
                    إلى السلة</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                  </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"price-tag"</span><span class="tag">&gt;</span><span class="pln">$13</span><span class="tag">&lt;/div&gt;</span><span class="pln">
                </span><span class="tag">&lt;/div&gt;</span><span class="pln">
              </span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">

            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-3"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card"</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"productCard"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"P6"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/arduino-product.jpg"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-img-top product-image"</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"arduino-course"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
                  </span><span class="tag">&lt;h5</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-title card-title"</span><span class="tag">&gt;</span><span class="pln">دورة التعامل مع أساسيات Arduino</span><span class="tag">&lt;/h5&gt;</span><span class="pln">
                  </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-text card-text"</span><span class="tag">&gt;</span><span class="pln">تعلّم كيف تبني أنظمة مضمنه تتضمّن مشاريع بسيطة باستخدام Arduino</span><span class="tag">&lt;/p&gt;</span><span class="pln">
                  </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-primary"</span><span class="pln"> </span><span class="atn">data-bs-toggle</span><span class="pun">=</span><span class="atv">"modal"</span><span class="pln"> </span><span class="atn">data-bs-target</span><span class="pun">=</span><span class="atv">"#addToCartConfirmation"</span><span class="tag">&gt;</span><span class="pln">أضف
                    إلى السلة</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                  </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"price-tag"</span><span class="tag">&gt;</span><span class="pln">$30</span><span class="tag">&lt;/div&gt;</span><span class="pln">
                </span><span class="tag">&lt;/div&gt;</span><span class="pln">
              </span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
          </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">

      </span><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"carousel-control-prev"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">data-bs-target</span><span class="pun">=</span><span class="atv">"#bestSellingCourses"</span><span class="pln"> </span><span class="atn">data-bs-slide</span><span class="pun">=</span><span class="atv">"prev"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;span</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"carousel-control-prev-icon"</span><span class="pln"> </span><span class="atn">aria-hidden</span><span class="pun">=</span><span class="atv">"true"</span><span class="tag">&gt;&lt;/span&gt;</span><span class="pln">
      </span><span class="tag">&lt;/button&gt;</span><span class="pln">
      </span><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"carousel-control-next"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">data-bs-target</span><span class="pun">=</span><span class="atv">"#bestSellingCourses"</span><span class="pln"> </span><span class="atn">data-bs-slide</span><span class="pun">=</span><span class="atv">"next"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;span</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"carousel-control-next-icon"</span><span class="pln"> </span><span class="atn">aria-hidden</span><span class="pun">=</span><span class="atv">"true"</span><span class="tag">&gt;&lt;/span&gt;</span><span class="pln">
      </span><span class="tag">&lt;/button&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
  </span><span class="tag">&lt;/section&gt;</span><span class="pln">

  </span><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"course-categories"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"section-title"</span><span class="tag">&gt;</span><span class="pln">الأقسام المتاحة</span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-4"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"category-link"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card category-card"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/programming-category.png"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-img-top category-image"</span><span class="pln">
              </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"certifications-category"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-text category-text"</span><span class="tag">&gt;</span><span class="pln">البرمجة</span><span class="tag">&lt;/p&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
          </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/a&gt;</span><span class="pln">
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">

      </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-4"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"category-link"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card category-card"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/marketing-category.png"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-img-top category-image"</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"certifications-category"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-text category-text"</span><span class="tag">&gt;</span><span class="pln">التسويق</span><span class="tag">&lt;/p&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
          </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/a&gt;</span><span class="pln">
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">

      </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-4"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"category-link"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card category-card"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/freelance-category.png"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-img-top category-image"</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"certifications-category"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-text category-text"</span><span class="tag">&gt;</span><span class="pln">العمل الحر</span><span class="tag">&lt;/p&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
          </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/a&gt;</span><span class="pln">
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">

    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-4"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"category-link"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card category-card"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/cloud-computing-category.png"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-img-top category-image"</span><span class="pln">
              </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"certifications-category"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-text category-text"</span><span class="tag">&gt;</span><span class="pln">التطبيقات السحابية</span><span class="tag">&lt;/p&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
          </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/a&gt;</span><span class="pln">
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">

      </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-4"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"category-link"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card category-card"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/certificates-category.png"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-img-top category-image"</span><span class="pln">
              </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"certifications-category"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-text category-text"</span><span class="tag">&gt;</span><span class="pln">الشهادات العالمية</span><span class="tag">&lt;/p&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
          </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/a&gt;</span><span class="pln">
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">

      </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-4"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"category-link"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card category-card"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/apps-category.png"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-img-top category-image"</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"certifications-category"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-text category-text"</span><span class="tag">&gt;</span><span class="pln">البرامج والتطبيقات</span><span class="tag">&lt;/p&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
          </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/a&gt;</span><span class="pln">
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
  </span><span class="tag">&lt;/section&gt;</span><span class="pln">

  </span><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"footer"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;footer&gt;</span><span class="pln">
      </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container-fluid"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;i</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"bi bi-facebook social-icon"</span><span class="tag">&gt;&lt;/i&gt;</span><span class="pln">
        </span><span class="tag">&lt;i</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"bi bi-twitter social-icon"</span><span class="tag">&gt;&lt;/i&gt;</span><span class="pln">
        </span><span class="tag">&lt;i</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"bi bi-instagram social-icon"</span><span class="tag">&gt;&lt;/i&gt;</span><span class="pln">
        </span><span class="tag">&lt;i</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"bi bi-envelope social-icon"</span><span class="tag">&gt;&lt;/i&gt;</span><span class="pln">
        </span><span class="tag">&lt;p&gt;</span><span class="pln">© دورات نبيه 2021</span><span class="tag">&lt;/p&gt;</span><span class="pln">
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/footer&gt;</span><span class="pln">
  </span><span class="tag">&lt;/section&gt;</span><span class="pln">

  </span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"</span><span class="pln">
    </span><span class="atn">integrity</span><span class="pun">=</span><span class="atv">"sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"</span><span class="pln">
    </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">

  </span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"module"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="kwd">import</span><span class="pln"> </span><span class="pun">{</span><span class="pln">updateCartLabel</span><span class="pun">,</span><span class="pln"> saveItem</span><span class="pun">}</span><span class="pln"> from </span><span class="str">'./js/main.js'</span><span class="pun">;</span><span class="pln">

    let products </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">getElementsByName</span><span class="pun">(</span><span class="str">'productCard'</span><span class="pun">);</span><span class="pln">

    </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="pln">let product of products</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> product_id </span><span class="pun">=</span><span class="pln"> product</span><span class="pun">.</span><span class="pln">attributes</span><span class="pun">[</span><span class="str">'id'</span><span class="pun">].</span><span class="pln">value</span><span class="pun">;</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> product_title </span><span class="pun">=</span><span class="pln"> product</span><span class="pun">.</span><span class="pln">getElementsByClassName</span><span class="pun">(</span><span class="str">'product-title'</span><span class="pun">)[</span><span class="lit">0</span><span class="pun">].</span><span class="pln">innerHTML</span><span class="pun">;</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> product_price </span><span class="pun">=</span><span class="pln"> product</span><span class="pun">.</span><span class="pln">getElementsByClassName</span><span class="pun">(</span><span class="str">'price-tag'</span><span class="pun">)[</span><span class="lit">0</span><span class="pun">].</span><span class="pln">innerHTML</span><span class="pun">;</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> addToCartButton </span><span class="pun">=</span><span class="pln"> product</span><span class="pun">.</span><span class="pln">getElementsByClassName</span><span class="pun">(</span><span class="str">'btn-primary'</span><span class="pun">)[</span><span class="lit">0</span><span class="pun">];</span><span class="pln">

      addToCartButton</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'click'</span><span class="pun">,</span><span class="pln"> </span><span class="pun">(</span><span class="pln">e</span><span class="pun">)</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">const</span><span class="pln"> item_to_post </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> id</span><span class="pun">:</span><span class="pln"> product_id</span><span class="pun">,</span><span class="pln"> course_name</span><span class="pun">:</span><span class="pln"> product_title</span><span class="pun">,</span><span class="pln"> price</span><span class="pun">:</span><span class="pln"> product_price</span><span class="pun">.</span><span class="pln">substring</span><span class="pun">(</span><span class="lit">1</span><span class="pun">)</span><span class="pln"> </span><span class="pun">};</span><span class="pln">
        saveItem</span><span class="pun">(</span><span class="pln">item_to_post</span><span class="pun">);</span><span class="pln">
        updateCartLabel</span><span class="pun">();</span><span class="pln">
      </span><span class="pun">});</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
  </span><span class="tag">&lt;/script&gt;</span><span class="pln">

</span><span class="tag">&lt;/body&gt;</span><span class="pln">

</span><span class="tag">&lt;/html&gt;</span></pre>

<p>
	ستكون هناك أيضًا تعديلات طفيفة على ملف التنسيقات styles.css لكي يدعم صفحة سلة المشتريات. المحتوى الجديد للملف سيكون على النحو التالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_1992_26" style="">
<span class="pln">body</span><span class="pun">{</span><span class="pln">
    font</span><span class="pun">-</span><span class="pln">family</span><span class="pun">:</span><span class="pln"> </span><span class="str">'Tajawal'</span><span class="pun">,</span><span class="pln"> sans</span><span class="pun">-</span><span class="pln">serif</span><span class="pun">;</span><span class="pln">
    font</span><span class="pun">-</span><span class="pln">size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1em</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">nabih</span><span class="pun">-</span><span class="pln">buttons</span><span class="pun">{</span><span class="pln">
    margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="lit">4px</span><span class="pun">;</span><span class="pln"> 
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">6px</span><span class="pln"> </span><span class="lit">8px</span><span class="pun">;</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">7rem</span><span class="pun">;</span><span class="pln">
    white</span><span class="pun">-</span><span class="pln">space</span><span class="pun">:</span><span class="pln"> nowrap</span><span class="pun">;</span><span class="pln"> 
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">container</span><span class="pun">-</span><span class="pln">fluid</span><span class="pun">{</span><span class="pln">
    padding</span><span class="pun">:</span><span class="lit">0</span><span class="pln"> </span><span class="lit">5</span><span class="pun">%;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">section</span><span class="pun">-</span><span class="pln">title</span><span class="pun">{</span><span class="pln">
    text</span><span class="pun">-</span><span class="pln">align</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln">
    font</span><span class="pun">-</span><span class="pln">size</span><span class="pun">:</span><span class="pln"> xx</span><span class="pun">-</span><span class="pln">large</span><span class="pun">;</span><span class="pln">
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3rem</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">/*Header Section*/</span><span class="pln">

</span><span class="pun">.</span><span class="pln">counter</span><span class="pun">{</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> white</span><span class="pun">;</span><span class="pln">
    margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    position</span><span class="pun">:</span><span class="pln"> absolute</span><span class="pun">;</span><span class="pln">
    font</span><span class="pun">-</span><span class="pln">size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">15px</span><span class="pun">;</span><span class="pln">
    text</span><span class="pun">-</span><span class="pln">align</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln">
    right</span><span class="pun">:</span><span class="pln"> </span><span class="lit">6px</span><span class="pun">;</span><span class="pln">
    top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0px</span><span class="pun">;</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">20px</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">20px</span><span class="pun">;</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> red</span><span class="pun">;</span><span class="pln">
    border</span><span class="pun">-</span><span class="pln">radius</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50</span><span class="pun">%;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">zero</span><span class="pun">{</span><span class="pln">
    opacity</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">#header{</span><span class="pln">
    background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> </span><span class="com">#eee;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">navbar</span><span class="pun">-</span><span class="pln">brand</span><span class="pun">{</span><span class="pln">
    font</span><span class="pun">-</span><span class="pln">family</span><span class="pun">:</span><span class="pln"> </span><span class="str">'Almarai'</span><span class="pun">;</span><span class="pln">
    color</span><span class="pun">:#</span><span class="lit">393e46</span><span class="pun">;</span><span class="pln">
    font</span><span class="pun">-</span><span class="pln">size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2.5rem</span><span class="pun">;</span><span class="pln">
    font</span><span class="pun">-</span><span class="pln">weight</span><span class="pun">:</span><span class="lit">900</span><span class="pun">;</span><span class="pln">
    margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">mainview</span><span class="pun">-</span><span class="pln">heading </span><span class="pun">{</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> white</span><span class="pun">;</span><span class="pln">
    font</span><span class="pun">-</span><span class="pln">size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">4em</span><span class="pun">;</span><span class="pln">
    text</span><span class="pun">-</span><span class="pln">align</span><span class="pun">:</span><span class="pln"> right</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">mainview</span><span class="pun">-</span><span class="pln">subheading</span><span class="pun">{</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> white</span><span class="pun">;</span><span class="pln">
    margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">64px</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    text</span><span class="pun">-</span><span class="pln">align</span><span class="pun">:</span><span class="pln"> right</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">mainview</span><span class="pun">{</span><span class="pln">
    background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> </span><span class="com">#233e8b;</span><span class="pln">
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3</span><span class="pun">%</span><span class="pln"> </span><span class="lit">5</span><span class="pun">%;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">mainview</span><span class="pun">-</span><span class="pln">image</span><span class="pun">{</span><span class="pln">
    border</span><span class="pun">-</span><span class="pln">radius</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2</span><span class="pun">%;</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">500px</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">float</span><span class="pun">:</span><span class="pln"> left</span><span class="pun">;</span><span class="pln">    
</span><span class="pun">}</span><span class="pln">

</span><span class="com">/*Best Selling Section*/</span><span class="pln">

</span><span class="pun">.</span><span class="pln">carousel</span><span class="pun">-</span><span class="pln">inner</span><span class="pun">{</span><span class="pln">
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="lit">5</span><span class="pun">%;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">carousel</span><span class="pun">-</span><span class="pln">control</span><span class="pun">-</span><span class="pln">prev </span><span class="pun">{</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> linear</span><span class="pun">-</span><span class="pln">gradient</span><span class="pun">(</span><span class="pln">to right</span><span class="pun">,</span><span class="pln"> rgba</span><span class="pun">(</span><span class="lit">200</span><span class="pun">,</span><span class="lit">200</span><span class="pun">,</span><span class="lit">200</span><span class="pun">,</span><span class="lit">0</span><span class="pun">),</span><span class="pln"> rgba</span><span class="pun">(</span><span class="lit">200</span><span class="pun">,</span><span class="lit">200</span><span class="pun">,</span><span class="lit">200</span><span class="pun">,</span><span class="lit">1</span><span class="pun">));</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">carousel</span><span class="pun">-</span><span class="pln">control</span><span class="pun">-</span><span class="kwd">next</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> linear</span><span class="pun">-</span><span class="pln">gradient</span><span class="pun">(</span><span class="pln">to left</span><span class="pun">,</span><span class="pln"> rgba</span><span class="pun">(</span><span class="lit">200</span><span class="pun">,</span><span class="lit">200</span><span class="pun">,</span><span class="lit">200</span><span class="pun">,</span><span class="lit">0</span><span class="pun">),</span><span class="pln"> rgba</span><span class="pun">(</span><span class="lit">200</span><span class="pun">,</span><span class="lit">200</span><span class="pun">,</span><span class="lit">200</span><span class="pun">,</span><span class="lit">1</span><span class="pun">));</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">product</span><span class="pun">-</span><span class="pln">image</span><span class="pun">{</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">12rem</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">product</span><span class="pun">-</span><span class="pln">title</span><span class="pun">{</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">4rem</span><span class="pun">;</span><span class="pln">    
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">product</span><span class="pun">-</span><span class="pln">text</span><span class="pun">{</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">6rem</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">price</span><span class="pun">-</span><span class="pln">tag</span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">float</span><span class="pun">:</span><span class="pln"> left</span><span class="pun">;</span><span class="pln"> 
    border</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pun">;</span><span class="pln"> 
    border</span><span class="pun">-</span><span class="pln">style</span><span class="pun">:</span><span class="pln"> solid</span><span class="pun">;</span><span class="pln"> 
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3rem</span><span class="pun">;</span><span class="pln"> height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2rem</span><span class="pun">;</span><span class="pln">
    text</span><span class="pun">-</span><span class="pln">align</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln">
    padding</span><span class="pun">:</span><span class="lit">2px</span><span class="pun">;</span><span class="pln">
    margin</span><span class="pun">-</span><span class="pln">top</span><span class="pun">:</span><span class="lit">2px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">/*Course Categories Section*/</span><span class="pln">

</span><span class="com">#course-categories{</span><span class="pln">
    background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> </span><span class="com">#eee;</span><span class="pln">
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="lit">10</span><span class="pun">%</span><span class="pln"> </span><span class="lit">8px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">#course-categories .row{</span><span class="pln">
    margin</span><span class="pun">-</span><span class="pln">bottom</span><span class="pun">:</span><span class="pln"> </span><span class="lit">72px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">category</span><span class="pun">-</span><span class="pln">card</span><span class="pun">{</span><span class="pln">
    margin</span><span class="pun">-</span><span class="pln">left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">24px</span><span class="pun">;</span><span class="pln">
    margin</span><span class="pun">-</span><span class="pln">right</span><span class="pun">:</span><span class="lit">24px</span><span class="pun">;</span><span class="pln">
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">48px</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">32px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">category</span><span class="pun">-</span><span class="pln">image</span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50</span><span class="pun">%;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">auto</span><span class="pun">;</span><span class="pln">
    margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="kwd">auto</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">category</span><span class="pun">-</span><span class="pln">text</span><span class="pun">{</span><span class="pln">
    text</span><span class="pun">-</span><span class="pln">align</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln">
    font</span><span class="pun">-</span><span class="pln">size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1.3rem</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">category</span><span class="pun">-</span><span class="pln">link</span><span class="pun">{</span><span class="pln">
    text</span><span class="pun">-</span><span class="pln">decoration</span><span class="pun">:</span><span class="pln"> none</span><span class="pun">;</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln">inherit</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">/*Footer Section*/</span><span class="pln">

footer</span><span class="pun">{</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">200px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">social</span><span class="pun">-</span><span class="pln">icon </span><span class="pun">{</span><span class="pln">
    margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">20px</span><span class="pln"> </span><span class="lit">10px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

</span><span class="com">#footer .container-fluid{</span><span class="pln">
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">7</span><span class="pun">%</span><span class="pln"> </span><span class="lit">15</span><span class="pun">%;</span><span class="pln">
    text</span><span class="pun">-</span><span class="pln">align</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">/*Shopping Cart*/</span><span class="pln">
</span><span class="pun">.</span><span class="pln">shopping</span><span class="pun">-</span><span class="pln">cart</span><span class="pun">-</span><span class="pln">title</span><span class="pun">{</span><span class="pln">
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3</span><span class="pun">%</span><span class="pln"> </span><span class="lit">5</span><span class="pun">%;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">shopping</span><span class="pun">-</span><span class="pln">cart</span><span class="pun">-</span><span class="pln">content</span><span class="pun">{</span><span class="pln">
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="lit">5</span><span class="pun">%;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">shopping</span><span class="pun">-</span><span class="pln">cart</span><span class="pun">-</span><span class="pln">total</span><span class="pun">{</span><span class="pln">
    padding</span><span class="pun">:</span><span class="lit">0</span><span class="pln"> </span><span class="lit">5</span><span class="pun">%</span><span class="pln"> </span><span class="lit">3</span><span class="pun">%;</span><span class="pln">
    font</span><span class="pun">-</span><span class="pln">weight</span><span class="pun">:</span><span class="pln"> bold</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">shopping</span><span class="pun">-</span><span class="pln">cart</span><span class="pun">-</span><span class="pln">item</span><span class="pun">{</span><span class="pln">
    padding</span><span class="pun">-</span><span class="pln">top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">8px</span><span class="pun">;</span><span class="pln">
    padding</span><span class="pun">-</span><span class="pln">bottom</span><span class="pun">:</span><span class="pln"> </span><span class="lit">8px</span><span class="pun">;</span><span class="pln">
    font</span><span class="pun">-</span><span class="pln">size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1.1rem</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	ستحصل على نافذة منبثقة شبيهة بما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="98748" href="https://academy.hsoub.com/uploads/monthly_2022_05/3.png.0dbe2fd56e8ddac95fac76a881801a26.png" rel=""><img alt="3.png" class="ipsImage ipsImage_thumbnailed" data-fileid="98748" data-unique="eokv8bfgz" src="https://academy.hsoub.com/uploads/monthly_2022_05/3.png.0dbe2fd56e8ddac95fac76a881801a26.png" style="width: 550px; height: auto;"></a>
</p>

<h3>
	إضافة الوحدة البرمجية main
</h3>

<p>
	إذا لم تكن قد أنشأت المجلّد js ضمن المجلّد الرئيسي للمشروع فافعل ذلك الآن، بعد ذلك أضف الملف main.js لهذا المجلّد. انسخ الشيفرة البرمجية التالية لهذا الملف:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_1992_29" style="">
<span class="kwd">export</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> saveItem</span><span class="pun">(</span><span class="pln">item</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    let key </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Object</span><span class="pun">.</span><span class="pln">keys</span><span class="pun">(</span><span class="pln">localStorage</span><span class="pun">)</span><span class="pln">
                </span><span class="pun">.</span><span class="pln">find</span><span class="pun">(</span><span class="pln">e </span><span class="pun">=&gt;</span><span class="pln"> e </span><span class="pun">===</span><span class="pln"> </span><span class="typ">String</span><span class="pun">(</span><span class="pln">item</span><span class="pun">.</span><span class="pln">id</span><span class="pun">));</span><span class="pln">

    </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">key</span><span class="pun">){</span><span class="pln">
        let tmp </span><span class="pun">=</span><span class="pln"> JSON</span><span class="pun">.</span><span class="pln">parse</span><span class="pun">(</span><span class="pln">localStorage</span><span class="pun">.</span><span class="pln">getItem</span><span class="pun">(</span><span class="pln">key</span><span class="pun">));</span><span class="pln">
        tmp</span><span class="pun">.</span><span class="pln">push</span><span class="pun">(</span><span class="pln">item</span><span class="pun">);</span><span class="pln">
        localStorage</span><span class="pun">.</span><span class="pln">setItem</span><span class="pun">(</span><span class="pln">item</span><span class="pun">.</span><span class="pln">id</span><span class="pun">,</span><span class="pln"> JSON</span><span class="pun">.</span><span class="pln">stringify</span><span class="pun">(</span><span class="pln">tmp</span><span class="pun">));</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    </span><span class="kwd">else</span><span class="pun">{</span><span class="pln">
        localStorage</span><span class="pun">.</span><span class="pln">setItem</span><span class="pun">(</span><span class="pln">item</span><span class="pun">.</span><span class="pln">id</span><span class="pun">,</span><span class="pln"> JSON</span><span class="pun">.</span><span class="pln">stringify</span><span class="pun">([</span><span class="pln">item</span><span class="pun">]));</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="kwd">export</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> getItem</span><span class="pun">(</span><span class="pln">id</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> window</span><span class="pun">.</span><span class="pln">localStorage</span><span class="pun">.</span><span class="pln">getItem</span><span class="pun">(</span><span class="pln">item</span><span class="pun">.</span><span class="pln">id</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="kwd">export</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> getAllItems</span><span class="pun">(){</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> keys </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Object</span><span class="pun">.</span><span class="pln">keys</span><span class="pun">(</span><span class="pln">window</span><span class="pun">.</span><span class="pln">localStorage</span><span class="pun">);</span><span class="pln">
    let entries </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[];</span><span class="pln">

    </span><span class="kwd">for</span><span class="pun">(</span><span class="pln">let key of keys</span><span class="pun">){</span><span class="pln">
        entries</span><span class="pun">.</span><span class="pln">push</span><span class="pun">(</span><span class="pln">JSON</span><span class="pun">.</span><span class="pln">parse</span><span class="pun">(</span><span class="pln">localStorage</span><span class="pun">.</span><span class="pln">getItem</span><span class="pun">(</span><span class="pln">key</span><span class="pun">)))</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    </span><span class="kwd">return</span><span class="pln"> entries</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="kwd">export</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> updateShoppingCartList</span><span class="pun">(){</span><span class="pln">
    let shoppingCartContent </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">getElementById</span><span class="pun">(</span><span class="str">'shoppingCartContent'</span><span class="pun">);</span><span class="pln">
    let counter </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
    let total_products </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    let amount_due </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">

    </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="pln">let group of getAllItems</span><span class="pun">())</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">const</span><span class="pln"> div </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">createElement</span><span class="pun">(</span><span class="str">'div'</span><span class="pun">);</span><span class="pln">

        div</span><span class="pun">.</span><span class="pln">className </span><span class="pun">=</span><span class="pln"> </span><span class="str">'row shopping-cart-item'</span><span class="pun">;</span><span class="pln">

        div</span><span class="pun">.</span><span class="pln">innerHTML </span><span class="pun">=</span><span class="pln"> </span><span class="pun">`</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">div </span><span class="kwd">class</span><span class="pun">=</span><span class="str">"col-1"</span><span class="pun">&gt;</span><span class="pln">
                </span><span class="pun">&lt;</span><span class="pln">span</span><span class="pun">&gt;</span><span class="pln">$</span><span class="pun">{</span><span class="pln">counter</span><span class="pun">}&lt;/</span><span class="pln">span</span><span class="pun">&gt;</span><span class="pln">
            </span><span class="pun">&lt;/</span><span class="pln">div</span><span class="pun">&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">div </span><span class="kwd">class</span><span class="pun">=</span><span class="str">"col-6"</span><span class="pun">&gt;</span><span class="pln">
                </span><span class="pun">&lt;</span><span class="pln">span</span><span class="pun">&gt;</span><span class="pln">$</span><span class="pun">{</span><span class="pln">group</span><span class="pun">[</span><span class="lit">0</span><span class="pun">].</span><span class="pln">course_name</span><span class="pun">}&lt;/</span><span class="pln">span</span><span class="pun">&gt;</span><span class="pln">
            </span><span class="pun">&lt;/</span><span class="pln">div</span><span class="pun">&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">div </span><span class="kwd">class</span><span class="pun">=</span><span class="str">"col-1"</span><span class="pun">&gt;</span><span class="pln">
                </span><span class="pun">&lt;</span><span class="pln">span</span><span class="pun">&gt;</span><span class="pln">$</span><span class="pun">{</span><span class="pln">group</span><span class="pun">.</span><span class="pln">length</span><span class="pun">}&lt;/</span><span class="pln">span</span><span class="pun">&gt;</span><span class="pln">
            </span><span class="pun">&lt;/</span><span class="pln">div</span><span class="pun">&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">div </span><span class="kwd">class</span><span class="pun">=</span><span class="str">"col-1"</span><span class="pun">&gt;</span><span class="pln">
                </span><span class="pun">&lt;</span><span class="pln">span</span><span class="pun">&gt;</span><span class="pln">$$</span><span class="pun">{</span><span class="pln">group</span><span class="pun">[</span><span class="lit">0</span><span class="pun">].</span><span class="pln">price</span><span class="pun">}&lt;/</span><span class="pln">span</span><span class="pun">&gt;</span><span class="pln">    
            </span><span class="pun">&lt;/</span><span class="pln">div</span><span class="pun">&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">div </span><span class="kwd">class</span><span class="pun">=</span><span class="str">"col-1"</span><span class="pun">&gt;</span><span class="pln">
                </span><span class="pun">&lt;</span><span class="pln">span</span><span class="pun">&gt;</span><span class="pln">$$</span><span class="pun">{</span><span class="pln">group</span><span class="pun">.</span><span class="pln">length </span><span class="pun">*</span><span class="pln"> group</span><span class="pun">[</span><span class="lit">0</span><span class="pun">].</span><span class="pln">price</span><span class="pun">}&lt;/</span><span class="pln">span</span><span class="pun">&gt;</span><span class="pln">    
            </span><span class="pun">&lt;/</span><span class="pln">div</span><span class="pun">&gt;</span><span class="pln">
            </span><span class="pun">`;</span><span class="pln">

        shoppingCartContent</span><span class="pun">.</span><span class="pln">appendChild</span><span class="pun">(</span><span class="pln">div</span><span class="pun">);</span><span class="pln">

        amount_due </span><span class="pun">+=</span><span class="pln"> group</span><span class="pun">.</span><span class="pln">length </span><span class="pun">*</span><span class="pln"> group</span><span class="pun">[</span><span class="lit">0</span><span class="pun">].</span><span class="pln">price</span><span class="pun">;</span><span class="pln">
        counter</span><span class="pun">++;</span><span class="pln">
        total_products </span><span class="pun">+=</span><span class="pln"> group</span><span class="pun">.</span><span class="pln">length</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    document</span><span class="pun">.</span><span class="pln">getElementById</span><span class="pun">(</span><span class="str">'amountDue'</span><span class="pun">).</span><span class="pln">innerHTML </span><span class="pun">=</span><span class="pln"> </span><span class="str">'$'</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> amount_due</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="kwd">export</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> updateCartLabel</span><span class="pun">(){</span><span class="pln">
    </span><span class="kwd">const</span><span class="pln"> counterElement </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">getElementsByClassName</span><span class="pun">(</span><span class="str">'counter'</span><span class="pun">)[</span><span class="lit">0</span><span class="pun">];</span><span class="pln">
    let count </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">

    count </span><span class="pun">=</span><span class="pln"> getAllItems</span><span class="pun">().</span><span class="pln">reduce</span><span class="pun">(</span><span class="pln"> </span><span class="pun">(</span><span class="pln">acc</span><span class="pun">,</span><span class="pln"> group</span><span class="pun">)</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> acc </span><span class="pun">+</span><span class="pln"> group</span><span class="pun">.</span><span class="pln">length</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0</span><span class="pun">)</span><span class="pln">

    </span><span class="kwd">if</span><span class="pun">(</span><span class="pln">count </span><span class="pun">&gt;</span><span class="pln"> </span><span class="lit">0</span><span class="pun">){</span><span class="pln">
        counterElement</span><span class="pun">.</span><span class="pln">innerHTML </span><span class="pun">=</span><span class="pln"> count</span><span class="pun">;</span><span class="pln">
        counterElement</span><span class="pun">.</span><span class="pln">classList</span><span class="pun">.</span><span class="pln">remove</span><span class="pun">(</span><span class="str">'zero'</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	يحتوي هذا الملف على خمسة توابع، وهي:
</p>

<ul>
<li>
		التابع <code>saveItem</code> ويقبل وسيطًا وحيدًا وهو العنصر "المنتج" الذي اختاره المستخدم، حيث يحفظه ضمن التخزين الداخلي للمتصفّح.
	</li>
	<li>
		التابع <code>getItem</code> ويقبل وسيطًا واحيدًا هو معرّف المنتج الذي نود الحصول على بياناته من التخزين الداخلي.
	</li>
	<li>
		التابع <code>getAllItems</code> وهو لا يحتاج إلى أية وسائط، ويُرجع مصفوفة تحتوي على جميع المنتجات المحفوظة ضمن التخزين الداخلي.
	</li>
	<li>
		التابع <code>updateShoppingCartList</code> ومهمّته تحديث الصفحة الخاصة بسلّة المشتريات، بالمنتجات الموجودة ضمن التخزين الداخلي، حيث يعرضها بطريقة جدولية بسيطة، موضّحا اسم المنتج وعدد النسخ المطلوب شرائها منه، وسعر النسخة، وإجمالي المبلغ الواجب دفعه لهذا المنتج تحديدًا. وفي نهاية الجدول سيعرض أيضًا المجموع النهائي الواجب دفعه من قبل المستخدم (سنرى توضيحًا لبنية هذا الجدول بعد قليل).
	</li>
	<li>
		التابع <code>updateCartLabel</code> ووظيفته تحديث أيقونة سلّة المشتريات الموجودة أعلى الصفحة بعدد نسخ المنتجات المطلوب شراؤها.
	</li>
</ul>
<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<div class="ipsQuote_contents ipsClearfix">
		<p>
			<strong>ملاحظة</strong>: ربما يبدو من غير المنطقي أن يشتري أحد المستخدمين أكثر من نسخة واحدة من نفس الدورة التدريبية "المنتج" وهذا صحيح بالطبع. في الحقيقة دعمت هذا التوجّه ضمن هذا المشروع بهدف إضافة مزية قد تفيدك في مشروع آخر.
		</p>
	</div>
</blockquote>

<h2>
	عرض محتويات سلة المشتريات
</h2>

<p>
	أضف الملف shopping-cart.html إلى المشروع، وانسخ إليه المحتويات التالية:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1992_31" style="">
<span class="dec">&lt;!DOCTYPE html&gt;</span><span class="pln">
</span><span class="tag">&lt;html</span><span class="pln"> </span><span class="atn">lang</span><span class="pun">=</span><span class="atv">"ar"</span><span class="pln"> </span><span class="atn">dir</span><span class="pun">=</span><span class="atv">"rtl"</span><span class="tag">&gt;</span><span class="pln">

</span><span class="tag">&lt;head&gt;</span><span class="pln">
    </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">charset</span><span class="pun">=</span><span class="atv">"UTF-8"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"viewport"</span><span class="pln"> </span><span class="atn">content</span><span class="pun">=</span><span class="atv">"width=device-width, initial-scale=1.0"</span><span class="tag">&gt;</span><span class="pln">

    </span><span class="com">&lt;!-- Bootstrap CSS --&gt;</span><span class="pln">
    </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.rtl.min.css"</span><span class="pln">
        </span><span class="atn">integrity</span><span class="pun">=</span><span class="atv">"sha384-gXt9imSW0VcJVHezoNQsP+TNrjYXoGcrqBZJpry9zJt8PCQjobwmhMGaDHTASo9N"</span><span class="pln"> </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"css/styles.css"</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">

    </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"preconnect"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://fonts.googleapis.com"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"preconnect"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://fonts.gstatic.com"</span><span class="pln"> </span><span class="atn">crossorigin</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;link</span><span class="pln">
        </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://fonts.googleapis.com/css2?family=Almarai:wght@300;400;700;800&amp;family=Tajawal:wght@200;300;400;500;700;800;900&amp;display=swap"</span><span class="pln">
        </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="tag">&gt;</span><span class="pln">

    </span><span class="com">&lt;!-- Boostrap 5 icons - web font --&gt;</span><span class="pln">
    </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.7.0/font/bootstrap-icons.css"</span><span class="tag">&gt;</span><span class="pln">

    </span><span class="tag">&lt;title&gt;</span><span class="pln">دورات نبيه | سلة المشتريات</span><span class="tag">&lt;/title&gt;</span><span class="pln">
</span><span class="tag">&lt;/head&gt;</span><span class="pln">

</span><span class="tag">&lt;body&gt;</span><span class="pln">

    </span><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"header"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="com">&lt;!-- Nav Bar --&gt;</span><span class="pln">
        </span><span class="tag">&lt;nav</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar navbar-expand-lg navbar-light"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container-fluid"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar-brand"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/nabih-logo.png"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">margin</span><span class="pun">-</span><span class="pln">left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">8px</span><span class="pun">;</span><span class="atv">"</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">""</span><span class="pln"> </span><span class="atn">height</span><span class="pun">=</span><span class="atv">"32"</span><span class="tag">&gt;</span><span class="pln">
                    نبيه
                </span><span class="tag">&lt;/a&gt;</span><span class="pln">
                </span><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar-toggler"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">data-bs-toggle</span><span class="pun">=</span><span class="atv">"collapse"</span><span class="pln">
                    </span><span class="atn">data-bs-target</span><span class="pun">=</span><span class="atv">"#navbarSupportedContent"</span><span class="pln"> </span><span class="atn">aria-controls</span><span class="pun">=</span><span class="atv">"navbarSupportedContent"</span><span class="pln">
                    </span><span class="atn">aria-expanded</span><span class="pun">=</span><span class="atv">"false"</span><span class="pln"> </span><span class="atn">aria-label</span><span class="pun">=</span><span class="atv">"Toggle navigation"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;span</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar-toggler-icon"</span><span class="tag">&gt;&lt;/span&gt;</span><span class="pln">
                </span><span class="tag">&lt;/button&gt;</span><span class="pln">
                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"collapse navbar-collapse"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"navbarSupportedContent"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;ul</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar-nav me-2 mb-2 mb-lg-0 ms-3"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;li</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-item"</span><span class="tag">&gt;&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-link"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">التصنيفات</span><span class="tag">&lt;/a&gt;&lt;/li&gt;</span><span class="pln">
                    </span><span class="tag">&lt;/ul&gt;</span><span class="pln">
                    </span><span class="tag">&lt;form</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"d-flex me-auto w-100"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-control"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"search"</span><span class="pln"> </span><span class="atn">placeholder</span><span class="pun">=</span><span class="atv">"ابحث عن أي موضوع"</span><span class="tag">&gt;</span><span class="pln">
                        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-link"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">position</span><span class="pun">:</span><span class="pln"> relative</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">
                            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"counter zero"</span><span class="tag">&gt;&lt;/div&gt;</span><span class="pln">

                            </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/icons8-shopping-cart-32.png"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
                        </span><span class="tag">&lt;/div&gt;</span><span class="pln">

                        </span><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-dark nabih-buttons"</span><span class="tag">&gt;</span><span class="pln">دخول</span><span class="tag">&lt;/button&gt;</span><span class="pln">
                        </span><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-outline-dark nabih-buttons"</span><span class="tag">&gt;</span><span class="pln">تسجيل جديد</span><span class="tag">&lt;/button&gt;</span><span class="pln">
                    </span><span class="tag">&lt;/form&gt;</span><span class="pln">
                </span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/nav&gt;</span><span class="pln">
    </span><span class="tag">&lt;/section&gt;</span><span class="pln">

    </span><span class="com">&lt;!--Main View--&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"shopping-cart-title"</span><span class="tag">&gt;&lt;h2&gt;</span><span class="pln">سلة المشتريات</span><span class="tag">&lt;/h2&gt;&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"shoppingCartContent"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"shopping-cart-content"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-1"</span><span class="tag">&gt;</span><span class="pln">

            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-6"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;h5&gt;</span><span class="pln">الدورة</span><span class="tag">&lt;/h5&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-1"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;h5&gt;</span><span class="pln">العدد</span><span class="tag">&lt;/h5&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-1"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;h5&gt;</span><span class="pln">السعر</span><span class="tag">&lt;/h5&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-1"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;h5&gt;</span><span class="pln">الإجمالي</span><span class="tag">&lt;/h5&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row shopping-cart-total"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"amountDue"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"offset-9 col-1"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">border</span><span class="pun">-</span><span class="pln">top</span><span class="pun">-</span><span class="pln">style</span><span class="pun">:</span><span class="pln"> solid</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-4 shopping-cart-content"</span><span class="tag">&gt;&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"checkout.html"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-primary"</span><span class="tag">&gt;</span><span class="pln">الشراء الآن</span><span class="tag">&lt;/a&gt;&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"footer"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;footer&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container-fluid"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;i</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"bi bi-facebook social-icon"</span><span class="tag">&gt;&lt;/i&gt;</span><span class="pln">
                </span><span class="tag">&lt;i</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"bi bi-twitter social-icon"</span><span class="tag">&gt;&lt;/i&gt;</span><span class="pln">
                </span><span class="tag">&lt;i</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"bi bi-instagram social-icon"</span><span class="tag">&gt;&lt;/i&gt;</span><span class="pln">
                </span><span class="tag">&lt;i</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"bi bi-envelope social-icon"</span><span class="tag">&gt;&lt;/i&gt;</span><span class="pln">
                </span><span class="tag">&lt;p&gt;</span><span class="pln">© دورات نبيه 2021</span><span class="tag">&lt;/p&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/footer&gt;</span><span class="pln">
    </span><span class="tag">&lt;/section&gt;</span><span class="pln">

    </span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"</span><span class="pln">
        </span><span class="atn">integrity</span><span class="pun">=</span><span class="atv">"sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"</span><span class="pln">
        </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">

    </span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"module"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="kwd">import</span><span class="pln"> </span><span class="pun">{</span><span class="pln">updateShoppingCartList</span><span class="pun">,</span><span class="pln"> updateCartLabel</span><span class="pun">}</span><span class="pln"> from </span><span class="str">'./js/main.js'</span><span class="pun">;</span><span class="pln">

        updateShoppingCartList</span><span class="pun">();</span><span class="pln">
        updateCartLabel</span><span class="pun">();</span><span class="pln">
    </span><span class="tag">&lt;/script&gt;</span><span class="pln">
</span><span class="tag">&lt;/body&gt;</span><span class="pln">
</span><span class="tag">&lt;/html&gt;</span></pre>

<p>
	القسم الأول من الشيفرة السابقة مألوف بالنسبة لك، فهو مسؤول عن تعريف شريط التنقّل كما في الصفحة الرئيسية بالضبط. القسم الثاني من الشيفرة بدءًا من "الموضع 1" يعرّف بنية بسيطة تشبه الجدول مهمتها عرض محتويات سلة المشتريات. الشيفرة البرمجية المسؤولة عن تعبئة هذه البنية موجودة ضمن "الموضع 2". تستورد هذه الشيفرة المكتوبة بلغة جافا سكريبت، تابعين من الملف main.js (أضفناه قبل قليل)، ثم تعمل على استدعائهما تباعًا.
</p>

<p>
	في حال وجود منتجات في السلة ستحصل على شكل شبيه بما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="98747" href="https://academy.hsoub.com/uploads/monthly_2022_05/2.png.9cf46da7132329c50f8cde6cf6143e38.png" rel=""><img alt="2.png" class="ipsImage ipsImage_thumbnailed" data-fileid="98747" data-unique="5lbm1xnm2" src="https://academy.hsoub.com/uploads/monthly_2022_05/2.thumb.png.a9e0374a8c4fa4ea295479f1005ae032.png" style="width: 550px; height: auto;"></a>
</p>

<p>
	يمكنك الوصول إلى الشيفرة الكاملة لهذا الدرس من الملف <a class="ipsAttachLink" data-fileid="98745" href="https://academy.hsoub.com/applications/core/interface/file/attachment.php?id=98745" rel="">bootstrap5-tutorial.zip</a>، كما ويمكنك الإطلاع على نسخة حيّة من هذه الصفحة <a href="https://husam79.github.io/bootstrap5-tutorial/chapter06/index.html" rel="external nofollow">من هنا</a>.
</p>

<h2>
	خاتمة
</h2>

<p>
	كان الدرس طويلًا بعض الشيء إلّا أنّنا أنجزنا الكثير! الميزة الجديدة التي تعرّفنا عليها في هذا الدرس هي مكوّن الرسائل المنبثقة Modal الذي يسمح بالتفاعل الفعّال مع المستخدم من خلال توفير وسيلة لعرض المعلومات للمستخدم، مع إمكانية توفير إمكانية التفاعل من خلال تلقي رد من المستخدم حول سؤال محّدد نرغب بالحصول على الإجابة عليه. سنتابع عملنا في الدرس القادم في توفير صفحة خاصّة للدفع، لشراء المنتجات التي اختارها المستخدم.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/programming/css/bootstrap/%D8%A8%D9%86%D8%A7%D8%A1-%D9%82%D8%A7%D8%A6%D9%85%D8%A9-%D8%B4%D8%AC%D8%B1%D9%8A%D8%A9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-r623/" rel="">بناء قائمة شجرية باستخدام البوتستراب</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/css/bootstrap/10-%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D8%B4%D8%A7%D8%A6%D8%B9%D8%A9-%D8%B9%D9%86%D8%AF-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-bootstrap-r190/" rel="">10 أخطاء شائعة عند استخدام إطار العمل Bootstrap</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1559</guid><pubDate>Sun, 15 May 2022 08:35:56 +0000</pubDate></item><item><title>&#x645;&#x643;&#x648;&#x646; &#x627;&#x644;&#x628;&#x637;&#x627;&#x642;&#x629; Card &#x648;&#x645;&#x643;&#x648;&#x646; &#x627;&#x644;&#x634;&#x631;&#x627;&#x626;&#x62D; &#x627;&#x644;&#x62F;&#x648;&#x627;&#x631;&#x629; Carousel &#x641;&#x64A; &#x628;&#x648;&#x62A;&#x633;&#x62A;&#x631;&#x627;&#x628;</title><link>https://academy.hsoub.com/programming/css/bootstrap/%D9%85%D9%83%D9%88%D9%86-%D8%A7%D9%84%D8%A8%D8%B7%D8%A7%D9%82%D8%A9-card-%D9%88%D9%85%D9%83%D9%88%D9%86-%D8%A7%D9%84%D8%B4%D8%B1%D8%A7%D8%A6%D8%AD-%D8%A7%D9%84%D8%AF%D9%88%D8%A7%D8%B1%D8%A9-carousel-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-r1458/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_01/61f818ab5cfef_--Card----Carousel---.png.065776580d701d32cb0f48dd16f297ea.png" /></p>

<p>
	سنتعرّف في هذا الدرس على مكوّنين جديدين من مكوّنات بوتستراب 5، وهما مكوّن البطاقة Card، ومكوّن الشرائح الدوّارة Carousel. ومن ثمّ سنطبّق ما سنتعلّمه هنا في متابعة عملنا في إكمال تصميم موقع "نبيه".
</p>

<p>
	سنعمل في هذا الدرس على:
</p>

<ul>
<li>
		التعرّف على مكوّن البطاقة Card في بوتستراب.
	</li>
	<li>
		التعرّف على مكوّن الشرائح الدوّارة Carousel في بوتستراب.
	</li>
	<li>
		إنجاز قسم الدورات الأكثر مبيعًا Best Selling.
	</li>
	<li>
		إنجاز القسم الخاص بأصناف الدورات Course Categories.
	</li>
	<li>
		أيقونات Bootstrap 5
	</li>
	<li>
		إنجاز قسم التذييل Footer.
	</li>
</ul>
<p>
	هذا الفصل جزء من سلسلة فصول عن بوتستراب 5، وإليك كامل فهرس السلسلة:
</p>

<ul>
<li>
		<a href="https://academy.hsoub.com/programming/html/bootstrap/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-5-r1315/" rel="">مدخل إلى إطار العمل بوتستراب 5</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/html/bootstrap/%D8%B4%D8%B1%D9%8A%D8%B7-%D8%A7%D9%84%D8%AA%D9%86%D9%82%D9%84-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-5-r1316/" rel="">شريط التنقل في بوتستراب 5</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/html/bootstrap/%D9%85%D8%AE%D8%B7%D8%B7-%D8%A7%D9%84%D8%B5%D9%81%D8%AD%D8%A9-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-5-r1317/" rel="">مخطط الصفحة في بوتستراب 5</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/html/bootstrap/%D8%AA%D8%B7%D8%A8%D9%8A%D9%82-%D9%85%D8%AE%D8%B7%D8%B7-%D8%A7%D9%84%D8%B5%D9%81%D8%AD%D8%A9-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-%D8%B9%D9%84%D9%89-%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-r1457/" rel="">تطبيق مخطط الصفحة في بوتستراب على صفحات الويب</a>
	</li>
	<li>
		مكون البطاقة Card ومكون الشرائح الدوارة Carousel في بوتستراب
	</li>
</ul>
<h2>
	التعرف على مكون البطاقة Card في بوتستراب
</h2>

<p>
	لمكوّن البطاقة Card في بوتستراب استخدامات متعدّدة. فغالبًا ما يُستخدم عندما نود توضيح أو وصف شيء محدّد، كوصف منتج ما مثلًا، أو وصف صنف كامل من من المنتجات.في درسنا هذا سنستخدم مكوّن البطاقة لوصف دورة محدّدة يقدّمها موقع نبيه، وأيضًا لتصنيف مجالات الدورات التي تُقدّم في الموقع. بُنيت البطاقة في بوتستراب باستعمال التخطيط المرن Flex Box وهي لا تحوي أية هوامش بشكل افتراضي.
</p>

<p>
	أي بطاقة في بوتستراب يجب أن يكون لها "حاوية". هذه الحاوية عبارة عن عنصر <code>div</code> له الصنف التنسيقي <code>‎.card</code>. بالنسبة لمحتويات الحاوية فلدينا العديد من الإمكانيات. يمكن بشكل أساسي، أن تحتوي البطاقة على نص عادي فحسب. أمّا بالنسبة للشكل النموذجي، فيمكن أن يكون لها التنسيق التالي:
</p>

<ul>
<li>
		صورة توضيحية في الأعلى.
	</li>
	<li>
		جسم البطاقة، والذي يحتوي على عنوان البطاقة ونص توضيحي.
	</li>
</ul>
<p>
	انظر إلى البطاقة النموذجية التالية:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_6675_8" style="">
<span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">18rem</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"..."</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-img-top"</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"image-description"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;h5</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-title"</span><span class="tag">&gt;</span><span class="pln">عنوان البطاقة</span><span class="tag">&lt;/h5&gt;</span><span class="pln">
      </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-text"</span><span class="tag">&gt;</span><span class="pln">نص بسيط لوصف المنتج أو أي شيء تود الحديث عنه</span><span class="tag">&lt;/p&gt;</span><span class="pln">
      </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-primary"</span><span class="tag">&gt;</span><span class="pln">زر عادي</span><span class="tag">&lt;/a&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	سيشكل العنصر <code>div</code> مع الصنف <code>‎ .card</code> الحاوية الخاصة بالبطاقة ككل. داخل هذا الحاوية، لاحظ وجود عنصر الصورة <code>img</code> مع الصنف <code>‎ .card-img-top</code>، ستلاحظ أيضًا وجود عنصر <code>div</code> آخر يمثّل جسم البطاقة له الصنف <code>‎ .card-body</code>. يتكوّن جسم البطاقة في مثالنا هذا من قسمين:
</p>

<ul>
<li>
		القسم الأول هو عنوان البطاقة باستخدام الصنف <code>‎.card-title</code>
	</li>
	<li>
		القسم الثاني هو نص البطاقة باستخدام الصنف <code>‎.card-text</code> . يمكن بشكل اختياري إضافة زر لهذا القسم كما فعلنا في مثالنا هذا.
	</li>
</ul>
<p>
	عند معاينة الشيفرة السابقة ستحصل على شكل شبيه بما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="91102" href="https://academy.hsoub.com/uploads/monthly_2022_01/1.png.099743a6ae78982542c5c75b9c15c853.png" rel=""><img alt="1.png" class="ipsImage ipsImage_thumbnailed" data-fileid="91102" data-unique="wpg3re1uk" src="https://academy.hsoub.com/uploads/monthly_2022_01/1.png.099743a6ae78982542c5c75b9c15c853.png" style="width: 300px; height: auto;"></a>
</p>

<p>
	كما أسلفت قبل قليل توجد الكثير من الإمكانيات التي توفرها البطاقة. يمكن مثلًا إضافة عنوان فرعي باستخدام الصنف <code>‎.card-subtitle</code> ويُوضع هذا العنوان الفرعي كما هو واضح أسفل العنوان الرئيسي في حال الرغبة. كما يمكن وضع روابط ضمن جسم البطاقة، بتنسيق متوافق معها باستخدام عنصر <code>a</code> مع الصنف <code>‎.card-link</code>
</p>

<p>
	يمكن أيضًا جعل البطاقة تعرض قائمة من مجموعة من العناصر . انظر إلى التعديل التالي الذي أجريته على الشيفرة السابقة:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_6675_11" style="">
<span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">18rem</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/tmp.png"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-img-top"</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"image-description"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;h5</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-title"</span><span class="tag">&gt;</span><span class="pln">عنوان البطاقة</span><span class="tag">&lt;/h5&gt;</span><span class="pln">
      </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-text"</span><span class="tag">&gt;</span><span class="pln">نص بسيط لوصف المنتج أو أي شيء تود الحديث عنه</span><span class="tag">&lt;/p&gt;</span><span class="pln">
      </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-primary"</span><span class="tag">&gt;</span><span class="pln">زر عادي</span><span class="tag">&lt;/a&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="com">&lt;!--بداية التعديل --&gt;</span><span class="pln">
    </span><span class="tag">&lt;ul</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"list-group list-group-flush"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;li</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"list-group-item"</span><span class="tag">&gt;</span><span class="pln">عنصر 1</span><span class="tag">&lt;/li&gt;</span><span class="pln">
      </span><span class="tag">&lt;li</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"list-group-item"</span><span class="tag">&gt;</span><span class="pln">عنصر 2</span><span class="tag">&lt;/li&gt;</span><span class="pln">
      </span><span class="tag">&lt;li</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"list-group-item"</span><span class="tag">&gt;</span><span class="pln">عنصر 3</span><span class="tag">&lt;/li&gt;</span><span class="pln">
    </span><span class="tag">&lt;/ul&gt;</span><span class="pln">
</span><span class="com">&lt;!--نهاية التعديل --&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	لاحظ الشيفرة الجديدة من المثال الأخير. وضعت عنصر قائمة غير مرتبة <code>ul</code> مع الصنف <code>‎.list-group</code> و الصنف <code>‎.list-group-flush</code>. الصنف الأخير وظيفته جمالية فقط، حاول إزالته وانظر الفرق.
</p>

<p>
	عند معاينة الشيفرة السابقة ستحصل على شكل شبيه بما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="91103" href="https://academy.hsoub.com/uploads/monthly_2022_01/2.png.0c34dbbdbae76798f0cf63d259d54c51.png" rel=""><img alt="2.png" class="ipsImage ipsImage_thumbnailed" data-fileid="91103" data-unique="whp4eq073" src="https://academy.hsoub.com/uploads/monthly_2022_01/2.thumb.png.3bbbb54a2f1fad3bde643c96ba55293e.png"></a>
</p>

<p>
	يمكن أيضًا الاستغناء عن الصورة التوضيحية في الأعلى واستخدام ترويسة بدلًا منها. كما ويمكن أيضًا وضع تذييل للبطاقة. انظر إلى الشيفرة التالية:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_6675_13" style="">
<span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">18rem</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-header"</span><span class="tag">&gt;</span><span class="pln">ترويسة مناسبة</span><span class="tag">&lt;/div&gt;</span><span class="pln">

    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-text"</span><span class="tag">&gt;</span><span class="pln">نص بسيط لوصف المنتج أو أي شيء تود الحديث عنه</span><span class="tag">&lt;/p&gt;</span><span class="pln">
      </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-primary"</span><span class="tag">&gt;</span><span class="pln">زر عادي</span><span class="tag">&lt;/a&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">

    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-footer text-muted"</span><span class="tag">&gt;</span><span class="pln">تذييل مناسب</span><span class="tag">&lt;/div&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	لاحظ اولًا أن كلًا من الترويسة والتذييل موجودان خارج جسم البطاقة ضمن عنصر ي<code>div</code> منفصلين. لعنصر <code>div</code> الذي يحوي الترويسة الصنف <code>‎.card-header</code> أما لعنصر <code>div</code> الذي يحوي التذييل الصنف <code>‎.card-footer</code>. لاحظ أيضًا كيف استخدمت الصنف <code>‎.text-muted</code> لجعل نص التذييل باهتًا بعض الشيء. يمكنك بالطبع إزالة هذا التنسيق إن أحببت. ستحصل على الشكل التالي عند معاينة الشيفرة السابقة:
</p>

<p style="text-align: center;">
	<img alt="3.png" class="ipsImage ipsImage_thumbnailed" data-fileid="91104" data-unique="i9iycjgmh" src="https://academy.hsoub.com/uploads/monthly_2022_01/3.png.5cd52d86e0529d8ab71d39ac3f937a5d.png" style="width: 300px; height: auto;"></p>

<p>
	يمكنك الإطلاع على المزيد من الخيارات المتاحة بزيارة <a href="https://wiki.hsoub.com/Bootstrap" rel="external">صفحة التوثيق الرسمية</a> لمكوّن البطاقة Card.
</p>

<h2>
	التعرّف على مكون الشرائح الدوارة Carousel في بوتستراب
</h2>

<p>
	هو من المكوّنات المفيدة ضمن صفحات الويب. فمن خلاله يمكن عرض شرائح للمستخدمين ذات محتوى متنوّع وقابل للدوران بشكل تلقائي، أو بالنقر على أزرار تنقّل أو بمزيج بينهما. يمكن أن يكون هذا المحتوى عبارة عن صورة مع نص وصفي، أو يمكن حتى أن يكون محتوى مخصّص للغاية كما سنفعل في مشروعنا "نبيه". ولا يمكن في بوتستراب أن تكون مكوّنات Carousel متداخلة nested فيما بينها.
</p>

<p>
	يمكن استخدام هذا المكوّن من خلال عنصر <code>div</code> مع التنسيقين <code>‎.carousel</code> و <code>‎.slide</code>. يحتوي كل مكّون Carousel على عنصر <code>div</code> آخر له التنسيق <code>‎.carousel-inner</code> يحتوي بدوره على الشرائح الفعلية التي ستظهر للمستخدم. كل شريحة من هذه الشرائح عبارة عن عنصر <code>div</code> له التنسيق <code>‎.carousel-item</code>. يجب أن يكون لإحدى هذه الشرائح تنسيق آخر هو <code>‎.active</code> للدلالة إلى الشريحة الحالية (الفعّالة) التي سُتعرض أولًا للمستخدم.
</p>

<p>
	انظر إلى مكوّن Carousel نموذجي ضمن الشيفرة التالية:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_6675_15" style="">
<span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"carouselComponent"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"carousel slide"</span><span class="pln"> </span><span class="atn">data-bs-ride</span><span class="pun">=</span><span class="atv">"carousel"</span><span class="tag">&gt;</span><span class="pln">
  </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"carousel-inner"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"carousel-item active"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"..."</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"d-block w-100"</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"..."</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"carousel-item"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"..."</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"d-block w-100"</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"..."</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"carousel-item"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"..."</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"d-block w-100"</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"..."</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	ستظهر الشريحة التي تحمل التنسيق <code>active</code> أولًا أمام المستخدم. ثم ستدور الشرائح بالتناوب أمام المستخدم بشكل تلقائي ضمن فترات زمنية محّددة. يمكنك وضع صور مناسبة ضمن السمة <code>src</code> لكل صورة لكي ترى النتيجة بشكل فعلي.
</p>

<p>
	يمكن وكخيار إضافي، استخدام التنسيق <code>‎.carousel-dark</code> (يُوضع بجوار التنسيقين <code>‎.carousel</code> و <code>‎.slide</code> لعنصر <code>div</code> الذي يمثّل الحاوية الرئيسية لمكوّن Carousel)، وذلك لإكساب مكوّن <code>carousel</code> تنسيقًا داكنًا بعض الشيء.
</p>

<p>
	كما وسبق أن رأينا في عنصر البطاقة ، يحتوي عنصر Carousel على تشكيلة متنوّعة من الخيارات في العرض. يمكن مثلًا إضافة أزرار انتقال تسمح للمستخدم بالتنقّل اليدوي عوضًا عن التنقّل التلقائي. أضف إلى الشيفرة السابقة، الشيفرة التالية (ضعها قبل آخر وسم إغلاق <code>&lt;‎/div&gt;</code>):
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_6675_17" style="">
<span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"carousel-control-prev"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">data-bs-target</span><span class="pun">=</span><span class="atv">"#carouselComponent"</span><span class="pln"> </span><span class="atn">data-bs-slide</span><span class="pun">=</span><span class="atv">"prev"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;span</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"carousel-control-prev-icon"</span><span class="pln"> </span><span class="atn">aria-hidden</span><span class="pun">=</span><span class="atv">"true"</span><span class="tag">&gt;&lt;/span&gt;</span><span class="pln">
    </span><span class="tag">&lt;span</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"visually-hidden"</span><span class="tag">&gt;</span><span class="pln">Previous</span><span class="tag">&lt;/span&gt;</span><span class="pln">
  </span><span class="tag">&lt;/button&gt;</span><span class="pln">
  </span><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"carousel-control-next"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">data-bs-target</span><span class="pun">=</span><span class="atv">"#carouselComponent"</span><span class="pln"> </span><span class="atn">data-bs-slide</span><span class="pun">=</span><span class="atv">"next"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;span</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"carousel-control-next-icon"</span><span class="pln"> </span><span class="atn">aria-hidden</span><span class="pun">=</span><span class="atv">"true"</span><span class="tag">&gt;&lt;/span&gt;</span><span class="pln">
    </span><span class="tag">&lt;span</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"visually-hidden"</span><span class="tag">&gt;</span><span class="pln">Next</span><span class="tag">&lt;/span&gt;</span><span class="pln">
  </span><span class="tag">&lt;/button&gt;</span></pre>

<p>
	يمكن أيضًا وضع مؤشّر يظهر أسفل مكوّن Carousel للدلالة على عدد الشرائح الموجودة بالإضافة إلى موقعك الحالي ضمن هذه الشرائح. يمكن وضع هذا المؤشّر من خلال عنصر <code>div</code> له التنسيق <code>‎.carousel-indicators</code>. انظر إلى الشيفرة التالية (ضعها قبل عنصر <code>div</code> ذي التنسيق <code>‎.carousel-inner</code> مباشرةً):
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_6675_19" style="">
<span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"carousel-indicators"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">data-bs-target</span><span class="pun">=</span><span class="atv">"#carouselComponent"</span><span class="pln"> </span><span class="atn">data-bs-slide-to</span><span class="pun">=</span><span class="atv">"0"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"active"</span><span class="pln"> </span><span class="atn">aria-current</span><span class="pun">=</span><span class="atv">"true"</span><span class="pln"> </span><span class="atn">aria-label</span><span class="pun">=</span><span class="atv">"Slide 1"</span><span class="tag">&gt;&lt;/button&gt;</span><span class="pln">
    </span><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">data-bs-target</span><span class="pun">=</span><span class="atv">"#carouselComponent"</span><span class="pln"> </span><span class="atn">data-bs-slide-to</span><span class="pun">=</span><span class="atv">"1"</span><span class="pln"> </span><span class="atn">aria-label</span><span class="pun">=</span><span class="atv">"Slide 2"</span><span class="tag">&gt;&lt;/button&gt;</span><span class="pln">
    </span><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">data-bs-target</span><span class="pun">=</span><span class="atv">"#carouselComponent"</span><span class="pln"> </span><span class="atn">data-bs-slide-to</span><span class="pun">=</span><span class="atv">"2"</span><span class="pln"> </span><span class="atn">aria-label</span><span class="pun">=</span><span class="atv">"Slide 3"</span><span class="tag">&gt;&lt;/button&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	يمكنك الإطلاع على المزيد من الخيارات المتاحة بزيارة <a href="https://getbootstrap.com/docs/5.1/components/carousel/" rel="external nofollow">صفحة التوثيق الرسمية</a> لمكوّن Carousel.
</p>

<h2>
	إنجاز قسم الدورات الأكثر مبيعًا
</h2>

<p>
	سنطبّق ما تعلّمناه في الفقرتين السابقتين في إنجاز قسم الدورات الأكثر مبيعًا Best Selling ضمن موقع نبيه. أدرج الشيفرة التالية ضمن القسم <code>best-selling</code> في الملف index.html:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_6675_21" style="">
<span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"section-title"</span><span class="tag">&gt;</span><span class="pln">الدورات الأكثر مبيعًا</span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"bestSellingCourses"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"carousel carousel-dark slide"</span><span class="pln"> </span><span class="atn">data-bs-ride</span><span class="pun">=</span><span class="atv">"carousel"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"carousel-inner"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"carousel-item active"</span><span class="tag">&gt;</span><span class="pln"> </span><span class="com">&lt;!-- الموضع 1--&gt;</span><span class="pln">

          </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row"</span><span class="tag">&gt;</span><span class="pln">

            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-3"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card"</span><span class="tag">&gt;</span><span class="pln"> </span><span class="com">&lt;!-- الموضع 2--&gt;</span><span class="pln">
                </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/python-product.jpg"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-img-top product-image"</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"python-course"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
                  </span><span class="tag">&lt;h5</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-title card-title"</span><span class="tag">&gt;</span><span class="pln">دورة أساسيات البرمجة باستخدام بايثون</span><span class="tag">&lt;/h5&gt;</span><span class="pln">
                  </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-text card-text"</span><span class="tag">&gt;</span><span class="pln">في هذه الدورة سنتعلّم مبادئ البرمجة في لغة بايثون</span><span class="tag">&lt;/p&gt;</span><span class="pln">
                  </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-primary"</span><span class="tag">&gt;</span><span class="pln">أضف إلى السلة</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                </span><span class="tag">&lt;/div&gt;</span><span class="pln">
              </span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">

            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-3"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card"</span><span class="tag">&gt;</span><span class="pln"> </span><span class="com">&lt;!-- الموضع 3--&gt;</span><span class="pln">
                </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/github-product.jpg"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-img-top product-image"</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"github-course"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
                  </span><span class="tag">&lt;h5</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-title card-title"</span><span class="tag">&gt;</span><span class="pln">دورة التعامل مع GitHub</span><span class="tag">&lt;/h5&gt;</span><span class="pln">
                  </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-text card-text"</span><span class="tag">&gt;</span><span class="pln">تعلّم كيف تدير مشاريعك البرمجية من حيث إدارة الإصدار والمساهة في مشاريع برمجية أخرى.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
                  </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-primary"</span><span class="tag">&gt;</span><span class="pln">أضف إلى السلة</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                </span><span class="tag">&lt;/div&gt;</span><span class="pln">
              </span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">

            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-3"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card"</span><span class="tag">&gt;</span><span class="pln"> </span><span class="com">&lt;!-- الموضع 4--&gt;</span><span class="pln">
                </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/python-django-product.jpg"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-img-top product-image"</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"django-course"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
                  </span><span class="tag">&lt;h5</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-title card-title"</span><span class="tag">&gt;</span><span class="pln">دورة تطوير تطبيقات ويب باستخدام بايثون مع Django</span><span class="tag">&lt;/h5&gt;</span><span class="pln">
                  </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-text card-text"</span><span class="tag">&gt;</span><span class="pln">تعلّم كيف تبني تطبيقات ويب باستخدام لغة بايثون مع Django </span><span class="tag">&lt;/p&gt;</span><span class="pln">
                  </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-primary"</span><span class="tag">&gt;</span><span class="pln">أضف إلى السلة</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                </span><span class="tag">&lt;/div&gt;</span><span class="pln">
              </span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">

            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-3"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card"</span><span class="tag">&gt;</span><span class="pln"> </span><span class="com">&lt;!-- الموضع 5--&gt;</span><span class="pln">
                </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/javascript-product.jpg"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-img-top product-image"</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"javascript-course"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
                  </span><span class="tag">&lt;h5</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-title card-title"</span><span class="tag">&gt;</span><span class="pln">دورة أساسيات البرمجة باستخدام جافاسكريبت</span><span class="tag">&lt;/h5&gt;</span><span class="pln">
                  </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-text card-text"</span><span class="tag">&gt;</span><span class="pln"> سنتعلّم في هذه الدورة كيفية تطوير تطبيقات الواجهة الأمامية باستخدام جافاسكريبت</span><span class="tag">&lt;/p&gt;</span><span class="pln">
                  </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-primary"</span><span class="tag">&gt;</span><span class="pln">أضف إلى السلة</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                </span><span class="tag">&lt;/div&gt;</span><span class="pln">
              </span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
          </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">

        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"carousel-item"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-3"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card"</span><span class="tag">&gt;</span><span class="pln">  </span><span class="com">&lt;!-- الموضع 6--&gt;</span><span class="pln">
                </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/php-product.jpg"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-img-top product-image"</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"php-course"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
                  </span><span class="tag">&lt;h5</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-title card-title"</span><span class="tag">&gt;</span><span class="pln">دورة أساسيات البرمجة باستخدام PHP</span><span class="tag">&lt;/h5&gt;</span><span class="pln">
                  </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-text card-text"</span><span class="tag">&gt;</span><span class="pln">في هذه الدورة سنتعلّم مبادئ البرمجة في لغة PHP</span><span class="tag">&lt;/p&gt;</span><span class="pln">
                  </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-primary"</span><span class="tag">&gt;</span><span class="pln">أضف إلى السلة</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                </span><span class="tag">&lt;/div&gt;</span><span class="pln">
              </span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">

            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-3"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card"</span><span class="tag">&gt;</span><span class="pln">  </span><span class="com">&lt;!-- الموضع 7--&gt;</span><span class="pln">
                </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/arduino-product.jpg"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-img-top product-image"</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"arduino-course"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
                  </span><span class="tag">&lt;h5</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-title card-title"</span><span class="tag">&gt;</span><span class="pln">دورة التعامل مع أساسيات Arduino</span><span class="tag">&lt;/h5&gt;</span><span class="pln">
                  </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"product-text card-text"</span><span class="tag">&gt;</span><span class="pln">تعلّم كيف تبني أنظمة مضمنة تتضمّن مشاريع بسيطة باستخدام Arduino</span><span class="tag">&lt;/p&gt;</span><span class="pln">
                  </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-primary"</span><span class="tag">&gt;</span><span class="pln">أضف إلى السلة</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                </span><span class="tag">&lt;/div&gt;</span><span class="pln">
              </span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
          </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">
 </span><span class="com">&lt;!-- الموضع 8--&gt;</span><span class="pln">
      </span><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"carousel-control-prev"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">data-bs-target</span><span class="pun">=</span><span class="atv">"#bestSellingCourses"</span><span class="pln">
        </span><span class="atn">data-bs-slide</span><span class="pun">=</span><span class="atv">"prev"</span><span class="tag">&gt;</span><span class="pln">        
          </span><span class="tag">&lt;span</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"carousel-control-prev-icon"</span><span class="pln"> </span><span class="atn">aria-hidden</span><span class="pun">=</span><span class="atv">"true"</span><span class="tag">&gt;&lt;/span&gt;</span><span class="pln">      
      </span><span class="tag">&lt;/button&gt;</span><span class="pln">
      </span><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"carousel-control-next"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">data-bs-target</span><span class="pun">=</span><span class="atv">"#bestSellingCourses"</span><span class="pln">
        </span><span class="atn">data-bs-slide</span><span class="pun">=</span><span class="atv">"next"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;span</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"carousel-control-next-icon"</span><span class="pln"> </span><span class="atn">aria-hidden</span><span class="pun">=</span><span class="atv">"true"</span><span class="tag">&gt;&lt;/span&gt;</span><span class="pln">
      </span><span class="tag">&lt;/button&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	انتقل الآن الى الملف styles.css وأضف إليه التنسيق التالي قبل تنسيقات قسم الترويسة Header Section:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_6675_23" style="">
<span class="pln">.section-title{
    text-align: center;
    font-size: xx-large;
    padding: 3rem 0;
}</span></pre>

<p>
	الهدف من ذلك هو فقط تنظيم الملف styles.css. ثم بعد ذلك أضف التنسيقات التالية إلى آخر محتويات الملف:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_7141_7" style="">
<span class="com">/*Best Selling Section*/</span><span class="pln">

</span><span class="pun">.</span><span class="pln">carousel</span><span class="pun">-</span><span class="pln">inner</span><span class="pun">{</span><span class="pln">
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="lit">5</span><span class="pun">%;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">carousel</span><span class="pun">-</span><span class="pln">control</span><span class="pun">-</span><span class="pln">prev </span><span class="pun">{</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> linear</span><span class="pun">-</span><span class="pln">gradient</span><span class="pun">(</span><span class="pln">to right</span><span class="pun">,</span><span class="pln"> rgba</span><span class="pun">(</span><span class="lit">200</span><span class="pun">,</span><span class="lit">200</span><span class="pun">,</span><span class="lit">200</span><span class="pun">,</span><span class="lit">0</span><span class="pun">),</span><span class="pln"> rgba</span><span class="pun">(</span><span class="lit">200</span><span class="pun">,</span><span class="lit">200</span><span class="pun">,</span><span class="lit">200</span><span class="pun">,</span><span class="lit">1</span><span class="pun">));</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">carousel</span><span class="pun">-</span><span class="pln">control</span><span class="pun">-</span><span class="kwd">next</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> linear</span><span class="pun">-</span><span class="pln">gradient</span><span class="pun">(</span><span class="pln">to left</span><span class="pun">,</span><span class="pln"> rgba</span><span class="pun">(</span><span class="lit">200</span><span class="pun">,</span><span class="lit">200</span><span class="pun">,</span><span class="lit">200</span><span class="pun">,</span><span class="lit">0</span><span class="pun">),</span><span class="pln"> rgba</span><span class="pun">(</span><span class="lit">200</span><span class="pun">,</span><span class="lit">200</span><span class="pun">,</span><span class="lit">200</span><span class="pun">,</span><span class="lit">1</span><span class="pun">));</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">product</span><span class="pun">-</span><span class="pln">image</span><span class="pun">{</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">12rem</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">product</span><span class="pun">-</span><span class="pln">title</span><span class="pun">{</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">4rem</span><span class="pun">;</span><span class="pln">    
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">product</span><span class="pun">-</span><span class="pln">text</span><span class="pun">{</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">6rem</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	بالنسبة لشيفرة <a href="https://wiki.hsoub.com/HTML" rel="external">HTML</a>، نبدأ قسم المنتجات الأكثر مبيعًا بنص توضيحي يُشير إلى بداية هذا القسم له التنسيق <code>‎.section-title</code> ثم يبدأ بعد ذلك مكوّن Carousel بتنسيق داكن <code>‎.carousel-dark</code> وبمعرّف <code>bestSellingCourses</code>. يبدأ بعد ذلك مباشرةً الجسم الداخلي له <code>‎.carousel-inner</code>.
</p>

<p>
	في الواقع سيكون مكوّن Carousel هنا بسيطًا للغاية. سيحتوي هذا المكوّن على عنصري <code>‎.carousel-item</code> وبعبارة أخرى سيحتوي على شريحتين. ستحمل الشريحة الأول الصنف <code>‎.active</code> كما هو واضح (الموضع 1). يوجد ضمن الشريحة الأولى أربعة منتجات وُضعت ضمن سطر <code>‎.row</code> ووُزّعت على أربعة أعمدة <code>‎.col-lg-3</code>. وُضِع كل منتج ضمن بطاقة <code>card</code> منفصلة (انظر إلى المواضع 2 و 3 و 4 و 5). أمّا الشريحة الثانية فتحتوي على منتجين فقط (انظر إلى الموضعين 6 و 7).
</p>

<p>
	بالنسبة إلى زري التنقّل لمكوّن الشرائح الدوّارة فيمكنك أن تجدهما اعتبارًا من الموضع 8. لاحظ أنني قد أجريت بعض التعديل على الصنفين <code>‎ .carousel-control-prev</code> و <code>‎ .carousel-control-next</code> ضمن الملف styles.css حيث أنّني قد أضفت تدرّجًا لونيًا لهذين الزرّين كي يسهل للمستخدم تمييزهما فورًا.
</p>

<p>
	بمعاينة الشيفرة السابقة ضمن المتصفّح ستحصل على شكل شبيه بما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="91105" href="https://academy.hsoub.com/uploads/monthly_2022_01/4.png.19d2882d9802633af9da35b0b11de6ae.png" rel=""><img alt="4.png" class="ipsImage ipsImage_thumbnailed" data-fileid="91105" data-unique="i9cj0oo4w" src="https://academy.hsoub.com/uploads/monthly_2022_01/4.thumb.png.afacf38914fb7d3a6f9d8349509973a3.png"></a>
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="91106" href="https://academy.hsoub.com/uploads/monthly_2022_01/5.png.a81dfeaf542d3e0c60585c99faedfcf1.png" rel=""><img alt="5.png" class="ipsImage ipsImage_thumbnailed" data-fileid="91106" data-unique="btt1pee81" src="https://academy.hsoub.com/uploads/monthly_2022_01/5.thumb.png.23d7e4ebccee458356a487d06ca4bb91.png"></a>
</p>

<h2>
	إنجاز القسم الخاص بأصناف الدورات
</h2>

<p>
	لنبدأ الآن بتجهيز القسم الخاص بأصناف الدورات، والذي سيتكوّن في مشروعنا هذا من ستة أقسام وهي:
</p>

<ul>
<li>
		<a href="https://academy.hsoub.com/programming/" rel="">البرمجة</a>.
	</li>
	<li>
		<a href="https://academy.hsoub.com/marketing/" rel="">التسويق</a>.
	</li>
	<li>
		<a href="https://academy.hsoub.com/freelance/" rel="">العمل الحر</a>.
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/" rel="">التطبيقات السحابية</a>.
	</li>
	<li>
		<a href="https://academy.hsoub.com/certificates/" rel="">الشهادات العالمية</a>.
	</li>
	<li>
		<a href="https://academy.hsoub.com/apps/" rel="">البرامج والتطبيقات</a>.
	</li>
</ul>
<p>
	سنستخدم من أجل كل قسم مكوّن البطاقة من بوتستراب، وسنوزّع هذه البطاقات على سطرين مستقلين كما في الشكل التالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="91107" href="https://academy.hsoub.com/uploads/monthly_2022_01/6.png.5f3f362b440b82b0e80169f9adeb9e29.png" rel=""><img alt="6.png" class="ipsImage ipsImage_thumbnailed" data-fileid="91107" data-unique="cerbcmqxw" src="https://academy.hsoub.com/uploads/monthly_2022_01/6.thumb.png.670066646431a48fec2309523c4af76e.png" style="width: 750px; height: auto;"></a>
</p>

<p>
	أضف الآن شيفرة HTML التالية إلى القسم <code>course-categories</code>:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_6675_38" style="">
<span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"section-title"</span><span class="tag">&gt;</span><span class="pln">الأقسام المتاحة</span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-4"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"category-link"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card category-card"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/programming-category.png"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-img-top category-image"</span><span class="pln">
              </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"certifications-category"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-text category-text"</span><span class="tag">&gt;</span><span class="pln">البرمجة</span><span class="tag">&lt;/p&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
          </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/a&gt;</span><span class="pln">
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">

      </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-4"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"category-link"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card category-card"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/marketing-category.png"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-img-top category-image"</span><span class="pln">
              </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"certifications-category"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-text category-text"</span><span class="tag">&gt;</span><span class="pln">التسويق</span><span class="tag">&lt;/p&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
          </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/a&gt;</span><span class="pln">
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">

      </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-4"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"category-link"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card category-card"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/freelance-category.png"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-img-top category-image"</span><span class="pln">
              </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"certifications-category"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-text category-text"</span><span class="tag">&gt;</span><span class="pln">العمل الحر</span><span class="tag">&lt;/p&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
          </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/a&gt;</span><span class="pln">
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">

    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-4"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"category-link"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card category-card"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/cloud-computing-category.png"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-img-top category-image"</span><span class="pln">
              </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"certifications-category"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-text category-text"</span><span class="tag">&gt;</span><span class="pln">التطبيقات السحابية</span><span class="tag">&lt;/p&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
          </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/a&gt;</span><span class="pln">
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">

      </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-4"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"category-link"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card category-card"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/certificates-category.png"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-img-top category-image"</span><span class="pln">
              </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"certifications-category"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-text category-text"</span><span class="tag">&gt;</span><span class="pln">الشهادات العالمية</span><span class="tag">&lt;/p&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
          </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/a&gt;</span><span class="pln">
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">

      </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-4"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"category-link"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card category-card"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/apps-category.png"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-img-top category-image"</span><span class="pln">
              </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"certifications-category"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-body"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"card-text category-text"</span><span class="tag">&gt;</span><span class="pln">البرامج والتطبيقات</span><span class="tag">&lt;/p&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
          </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/a&gt;</span><span class="pln">
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	تتألف كل بطاقة من صورة توضيحية، بالإضافة إلى نص وصفي تحت الصورة. ستحتاج أيضًا إلى إضافة التنسيقات التالية إلى الملف styles.css أسفل التنسيقات السابقة:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_7141_9" style="">
<span class="com">#course-categories{</span><span class="pln">
    background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> </span><span class="com">#eee;</span><span class="pln">
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="lit">10</span><span class="pun">%</span><span class="pln"> </span><span class="lit">8px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">#course-categories .row{</span><span class="pln">
    margin</span><span class="pun">-</span><span class="pln">bottom</span><span class="pun">:</span><span class="pln"> </span><span class="lit">72px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">course</span><span class="pun">-</span><span class="pln">categories</span><span class="pun">-</span><span class="pln">title</span><span class="pun">{</span><span class="pln">
    text</span><span class="pun">-</span><span class="pln">align</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln">
    font</span><span class="pun">-</span><span class="pln">size</span><span class="pun">:</span><span class="pln"> xx</span><span class="pun">-</span><span class="pln">large</span><span class="pun">;</span><span class="pln">
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3rem</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">category</span><span class="pun">-</span><span class="pln">card</span><span class="pun">{</span><span class="pln">
    margin</span><span class="pun">-</span><span class="pln">left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">24px</span><span class="pun">;</span><span class="pln">
    margin</span><span class="pun">-</span><span class="pln">right</span><span class="pun">:</span><span class="lit">24px</span><span class="pun">;</span><span class="pln">
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">48px</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">32px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">category</span><span class="pun">-</span><span class="pln">image</span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50</span><span class="pun">%;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">auto</span><span class="pun">;</span><span class="pln">
    margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="kwd">auto</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">category</span><span class="pun">-</span><span class="pln">text</span><span class="pun">{</span><span class="pln">
    text</span><span class="pun">-</span><span class="pln">align</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln">
    font</span><span class="pun">-</span><span class="pln">size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1.3rem</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">category</span><span class="pun">-</span><span class="pln">link</span><span class="pun">{</span><span class="pln">
    text</span><span class="pun">-</span><span class="pln">decoration</span><span class="pun">:</span><span class="pln"> none</span><span class="pun">;</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln">inherit</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	أعتقد أنّه لا جديد في التنسيقات السابقة أو حتى في شيفرة HTML الخاصّة في هذا القسم.
</p>

<h2>
	أيقونات Bootstrap 5
</h2>

<p>
	يأتي مع بوتستراب 5 مجموعة غنية من الأيقونات الجميلة والمتنوّعة التي يمكنك استخدامها في التطبيقات التي تُنشئها سواءً باستخدام بوتستراب 5 أو حتى بغيره.
</p>

<p>
	لأيقونات بوتستراب 5 نوعان:
</p>

<ul>
<li>
		أيقونات على شكل خطوط ويب Web Fonts.
	</li>
	<li>
		أيقونات بتنسيق SVG.
	</li>
</ul>
<p>
	سنستخدم هنا النوع الأوّل: أيقونات Web Fonts.
</p>

<p>
	تكون هذه الأيقونات منفصلة عن بوتستراب، وقبل استخدامها، ينبغي إضافة مرجع إلى الصفحة الرئيسية الخاصة بنا. أضف الشيفرة التالية إلى قسم <code>head</code> ضمن الملف index.html:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_6675_42" style="">
<span class="com">&lt;!-- Boostrap 5 icons - web font --&gt;</span><span class="pln">
  </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.7.0/font/bootstrap-icons.css"</span><span class="tag">&gt;</span></pre>

<p>
	يمكن استخدام هذه الأيقونات بشكل مستقل كما سنفعل في الفقرة التالية. كما يمكن استخدامها مع الأزرار العادية وغيرها من العناصر.
</p>

<h2>
	إنجاز قسم التذييل Footer
</h2>

<p>
	وصلنا إلى الجزء الأخير في موقع "نبيه" وهو قسم التذييل. سيكون هذا القسم بسيطًا وجميلًا إذ أنّنا سنضيف إليه الأيقونات المعبّرة عن قنوات التواصل الإجتماعي بالإضافة إلى أيقونة إرسال رسالة بريد إلكتروني، ولن تكون هذه الأيقونات تُشير إلى صفحات حقيقية بطبيعة الحال.
</p>

<p>
	كما سندرج تحت الأيقونات السابقة، نصًا بسيطًا يُشير إلى موقع نبيه كعلامة مسجلة. أضف الشيفرة البرمجية التالية ضمن القسم <code>footer</code> ضمن الملف index.html:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_6675_44" style="">
<span class="tag">&lt;footer&gt;</span><span class="pln">
      </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container-fluid"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;i</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"bi bi-facebook social-icon"</span><span class="tag">&gt;&lt;/i&gt;</span><span class="pln">
        </span><span class="tag">&lt;i</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"bi bi-twitter social-icon"</span><span class="tag">&gt;&lt;/i&gt;</span><span class="pln">
        </span><span class="tag">&lt;i</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"bi bi-instagram social-icon"</span><span class="tag">&gt;&lt;/i&gt;</span><span class="pln">
        </span><span class="tag">&lt;i</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"bi bi-envelope social-icon"</span><span class="tag">&gt;&lt;/i&gt;</span><span class="pln">
        </span><span class="tag">&lt;p&gt;</span><span class="pln">© دورات نبيه 2021</span><span class="tag">&lt;/p&gt;</span><span class="pln">
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/footer&gt;</span></pre>

<p>
	التنسيقات مثل <code>bi bi-facebook</code> وغيرها ضرورية لاستخدام الأيقونة المطلوبة مع عنصر <code>i</code> ما.
</p>

<p>
	أضف أيضًا التنسيقات التالية إلى الملف styles.css:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_7141_11" style="">
<span class="pln">footer</span><span class="pun">{</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">200px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">social</span><span class="pun">-</span><span class="pln">icon </span><span class="pun">{</span><span class="pln">
    margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">20px</span><span class="pln"> </span><span class="lit">10px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

</span><span class="com">#footer .container-fluid{</span><span class="pln">
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">7</span><span class="pun">%</span><span class="pln"> </span><span class="lit">15</span><span class="pun">%;</span><span class="pln">
    text</span><span class="pun">-</span><span class="pln">align</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	عند المعاينة، ستحصل على شكل شبيه بما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="91108" href="https://academy.hsoub.com/uploads/monthly_2022_01/7.png.471dfac0652b2a2ce64e3b4f4a1bf473.png" rel=""><img alt="7.png" class="ipsImage ipsImage_thumbnailed" data-fileid="91108" data-unique="b4i8a873a" src="https://academy.hsoub.com/uploads/monthly_2022_01/7.thumb.png.b21a105936d3d06018cfe622b7cc1e57.png" style="width: 750px; height: auto;"></a>
</p>

<p>
	أعتقد أنّ التنسيقات السابقة واضحة ومباشرة ولا تحتاج إلى أي تعليق إضافي. وبذلك نكون قد وصلنا إلى نهاية هذا الدرس، وبالتالي إلى نهاية تصميم الصفحة الرئيسية لموقع "نبيه". يمكنك الوصول إلى الشيفرة كاملة عن طريق زيارة <a href="https://github.com/husam79/bootstrap5-tutorial" rel="external nofollow">هذا المستودع</a>، ضمن المجلّد chapter05 أو من الملف المرفق في نهاية المقال، وكما ويمكنك الإطلاع على نسخة حيّة من هذه الصفحة من <a href="https://husam79.github.io/bootstrap5-tutorial/chapter05/index.html" rel="external nofollow">github.io</a>.
</p>

<h2>
	خاتمة
</h2>

<p>
	تعرّفنا في هذا الدرس على مكوّنين مهمّين وهما البطاقة Card والشرائح الدوّارة Carousel، وتعرّفنا على أهم الخصائص المتاحة لهما. كما تعرّفنا على مكتبة أيقونات Font Awesome التي تضم تشكيلة رائعة من الأيقونات المميزة، والتي يمكنك استخدامها بشكل مجاني في تطبيقاتك المختلفة. كما عملنا على تطبيق ما تعلّمناه في تصميم وإنجاز باقي أقسام الصفحة الرئيسية لموقع نبيه (قسم الدورات الأكثر مبيعًا والقسم الخاص بأصناف الدورات و قسم التذييل).
</p>

<p>
	<a class="ipsAttachLink" data-fileid="91101" href="https://academy.hsoub.com/applications/core/interface/file/attachment.php?id=91101" rel="">bootstrap5-tutorial-master.zip</a>
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		المقال السابق: <a href="https://academy.hsoub.com/programming/html/bootstrap/%D8%AA%D8%B7%D8%A8%D9%8A%D9%82-%D9%85%D8%AE%D8%B7%D8%B7-%D8%A7%D9%84%D8%B5%D9%81%D8%AD%D8%A9-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-%D8%B9%D9%84%D9%89-%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-r1457/" rel="">تطبيق مخطط الصفحة في بوتستراب على صفحات الويب</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/html/bootstrap/%D8%A8%D9%86%D8%A7%D8%A1-%D9%82%D8%A7%D8%A6%D9%85%D8%A9-%D8%B4%D8%AC%D8%B1%D9%8A%D8%A9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-r623/" rel="">بناء قائمة شجرية باستخدام البوتستراب</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/html/bootstrap/10-%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D8%B4%D8%A7%D8%A6%D8%B9%D8%A9-%D8%B9%D9%86%D8%AF-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-bootstrap-r190/" rel="">10 أخطاء شائعة عند استخدام إطار العمل Bootstrap</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1458</guid><pubDate>Mon, 07 Feb 2022 16:06:00 +0000</pubDate></item><item><title>&#x62A;&#x637;&#x628;&#x64A;&#x642; &#x645;&#x62E;&#x637;&#x637; &#x627;&#x644;&#x635;&#x641;&#x62D;&#x629; &#x641;&#x64A; &#x628;&#x648;&#x62A;&#x633;&#x62A;&#x631;&#x627;&#x628; &#x639;&#x644;&#x649; &#x635;&#x641;&#x62D;&#x627;&#x62A; &#x627;&#x644;&#x648;&#x64A;&#x628;</title><link>https://academy.hsoub.com/programming/css/bootstrap/%D8%AA%D8%B7%D8%A8%D9%8A%D9%82-%D9%85%D8%AE%D8%B7%D8%B7-%D8%A7%D9%84%D8%B5%D9%81%D8%AD%D8%A9-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-%D8%B9%D9%84%D9%89-%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-r1457/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_01/61f7beee5a9f5_--------.png.96f774fcba940a92191ff04d3d60d7c9.png" /></p>

<p>
	سنتعلّم كيفية تطبيق مخطّط الصفحة في بوتستراب على صفحات الويب من خلال تحديث موقع "نبيه" بآخر ما تعلّمناه في الفصول الثلاثة السابقة، فصل <a href="https://academy.hsoub.com/programming/html/bootstrap/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-5-r1315/" rel="">مدخل إلى إطار العمل بوتستراب 5</a> وفصل <a href="https://academy.hsoub.com/programming/html/bootstrap/%D8%B4%D8%B1%D9%8A%D8%B7-%D8%A7%D9%84%D8%AA%D9%86%D9%82%D9%84-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-5-r1316/" rel="">شريط التنقل في بوتستراب 5</a>، وبالأخص الفصل الأخير "<a href="https://academy.hsoub.com/programming/html/bootstrap/%D9%85%D8%AE%D8%B7%D8%B7-%D8%A7%D9%84%D8%B5%D9%81%D8%AD%D8%A9-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-5-r1317/" rel="">مخطط الصفحة في بوتستراب 5</a>" من سلسلة <a href="https://academy.hsoub.com/tags/bootstrap%205/" rel="">bootstrap 5</a>، فمن الضروري جدًا أن تكون قد اطلعت على الدروس السابقة قبل الإكمال في هذا الدرس لأنّه مرتبط بها بشكل وثيق.
</p>

<p>
	سنبدأ بتحديد الأقسام الأساسية في الصفحة الرئيسية، ومن ثمّ سنعمل على تنسيقها بحيث تكون الصفحة متجاوبة مع قياسات الشاشة المختلفة.
</p>

<p>
	سيكون هذا الموضوع موزعًا على هذا الدرس بالإضافة إلى الدروس اللاحقة. سنهتم في هذا الدرس بتعريف الأقسام الرئيسية، وتحضير أصول الموقع، بالإضافة إلى تصميم القسم الأول (الترويسة). بينما سنعمل في الدروس اللاحقة على إكمال تصميم وتنفيذ باقي أقسام الصفحة.
</p>

<p>
	سنعمل في هذا الدرس على:
</p>

<ul>
<li>
		تعريف الأقسام الأساسية للصفحة الرئيسية في موقع "نبيه".
	</li>
	<li>
		تحضير أصول الموقع من خطوط وصور وألوان.
	</li>
	<li>
		تصميم قسم الترويسة.
	</li>
</ul>
<p>
	هذا الفصل جزء من سلسلة فصول عن بوتستراب 5، وإليك كامل فهرس السلسلة:
</p>

<ul>
<li>
		<a href="https://academy.hsoub.com/programming/html/bootstrap/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-5-r1315/" rel="">مدخل إلى إطار العمل بوتستراب 5</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/html/bootstrap/%D8%B4%D8%B1%D9%8A%D8%B7-%D8%A7%D9%84%D8%AA%D9%86%D9%82%D9%84-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-5-r1316/" rel="">شريط التنقل في بوتستراب 5</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/html/bootstrap/%D9%85%D8%AE%D8%B7%D8%B7-%D8%A7%D9%84%D8%B5%D9%81%D8%AD%D8%A9-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-5-r1317/" rel="">مخطط الصفحة في بوتستراب 5</a>
	</li>
	<li>
		تطبيق مخطط الصفحة في بوتستراب على صفحات الويب
	</li>
	<li>
		<a href="%D8%B1%D8%A7%D8%A8%D8%B7" rel="">مكون البطاقة Card ومكون الشرائح الدوارة Carousel في بوتستراب</a>
	</li>
</ul>
<h2>
	تعريف الأقسام الأساسية للصفحة الرئيسية في موقع "نبيه"
</h2>

<p>
	سنجعل للصفحة الرئيسية في موقع "نبيه" أربعة أقسام أساسية هي:
</p>

<ul>
<li>
		الترويسة Header.
	</li>
	<li>
		قسم الدورات الأكثر مبيعًا Best Selling.
	</li>
	<li>
		القسم الخاص بأصناف الدورات Course Categories.
	</li>
	<li>
		قسم التذييل Footer.
	</li>
</ul>
<p>
	سأعمل على وضع كل قسم من الأقسام الأربعة السابقة ضمن عنصر <code>&lt;section&gt;</code> مع تسمية مناسبة، ليسهل فيما بعد استهداف كل قسم على حدة باستخدام <a href="https://wiki.hsoub.com/CSS" rel="external">CSS</a>.
</p>

<p>
	بالعودة إلى الملف index.html ضمن مجلّد مشروع "نبيه" ضمن Visual Studio Code، سنعمل على إضافة الأقسام الأربعة الرئيسية. سيكون القالب الذي سننطلق منه على النحو التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_44_6" style="">
<span class="dec">&lt;!doctype html&gt;</span><span class="pln">
</span><span class="tag">&lt;html</span><span class="pln"> </span><span class="atn">lang</span><span class="pun">=</span><span class="atv">"ar"</span><span class="pln"> </span><span class="atn">dir</span><span class="pun">=</span><span class="atv">"rtl"</span><span class="tag">&gt;</span><span class="pln">

</span><span class="tag">&lt;head&gt;</span><span class="pln">
    </span><span class="com">&lt;!-- Required meta tags --&gt;</span><span class="pln">
    </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">charset</span><span class="pun">=</span><span class="atv">"utf-8"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"viewport"</span><span class="pln"> </span><span class="atn">content</span><span class="pun">=</span><span class="atv">"width=device-width, initial-scale=1"</span><span class="tag">&gt;</span><span class="pln">

    </span><span class="com">&lt;!-- Bootstrap CSS --&gt;</span><span class="pln">
    </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.rtl.min.css"</span><span class="pln"> </span><span class="atn">integrity</span><span class="pun">=</span><span class="atv">"sha384-gXt9imSW0VcJVHezoNQsP+TNrjYXoGcrqBZJpry9zJt8PCQjobwmhMGaDHTASo9N"</span><span class="pln"> </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="tag">&gt;</span><span class="pln">

    </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"/css/styles.css"</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">

    </span><span class="tag">&lt;title&gt;</span><span class="pln">دورات نبيه</span><span class="tag">&lt;/title&gt;</span><span class="pln">
</span><span class="tag">&lt;/head&gt;</span><span class="pln">

</span><span class="tag">&lt;body&gt;</span><span class="pln">

    </span><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"header"</span><span class="tag">&gt;</span><span class="pln">

    </span><span class="tag">&lt;/section&gt;</span><span class="pln">

    </span><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"best-selling"</span><span class="tag">&gt;</span><span class="pln">

    </span><span class="tag">&lt;/section&gt;</span><span class="pln">

    </span><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"course-categories"</span><span class="tag">&gt;</span><span class="pln">

    </span><span class="tag">&lt;/section&gt;</span><span class="pln">

    </span><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"footer"</span><span class="tag">&gt;</span><span class="pln">

    </span><span class="tag">&lt;/section&gt;</span><span class="pln">


    </span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"</span><span class="pln">
        </span><span class="atn">integrity</span><span class="pun">=</span><span class="atv">"sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"</span><span class="pln">
        </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">
</span><span class="tag">&lt;/body&gt;</span><span class="pln">

</span><span class="tag">&lt;/html&gt;</span></pre>

<p>
	استخدمنا نسخة بوتستراب الخاصة بدعم اللغة العربية، وغيّرنا اتجاه اللغة للصفحة كاملةً لتكون من اليمين إلى اليسار (انظر إلى السمتين <code>dir</code> و <code>lang</code> ضمن الوسم <code>&lt;html&gt;</code>) - عد إلى درس <a href="https://academy.hsoub.com/programming/html/bootstrap/%D8%B4%D8%B1%D9%8A%D8%B7-%D8%A7%D9%84%D8%AA%D9%86%D9%82%D9%84-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-5-r1316/" rel="">شريط التنقل في بوتستراب 5</a>.
</p>

<p>
	لاحظ أيضًا كيف وضعنا أربعة عناصر <code>&lt;section&gt;</code> ضمن القسم <code>&lt;body&gt;</code> وذلك للتعبير عن الأقسام الأربعة الأساسية في الصفحة الرئيسية. سنبدأ في الفقرة التالية التحدث عن أصول الموقع.
</p>

<h2>
	تحضير أصول الموقع من خطوط وصور وألوان
</h2>

<p>
	تُعتبر أصول الموقع من خطوط وصور وألوان بمثابة الروح لجسد الموقع! فمن خلالها يتم إكساب الموقع تلك الجاذبية التي تحفّز الزوار على التفاعل مع صفحاته. في موقعنا "نبيه" سنعمل على بناء تصميم بسيط ولكنّه جذّاب باستخدام أقل الأصول الممكنة، لأنّ الهدف من وراء هذه السلسلة هو التركيز على الاستخدام العملي لبوتستراب 5.
</p>

<h3>
	الخطوط
</h3>

<p>
	بالنسبة للخطوط يمكنك زيارة <a href="https://fonts.google.com/" rel="external nofollow">موقع خطوط غوغل</a> والبحث عن الخطين التاليين: Almarai و Tajawal. سأستخدم الخط Tajawal كخط أساسي لمحتوى الموقع، أمّا الخط Almarai فسأستخدمه فقط من أجل اسم الموقع الرئيسي (اسم العلامة التجارية في قسم العنوان).
</p>

<p>
	بعد البحث عن خط Tajawal ضمن موقع خطوط غوغل وإيجاد هذا الخط، انقر عليه لفتح الصفحة الرئيسية له. لاحظ توفر أنماط مختلفة لهذا الخط. اختر الأنماط: 200 و 300 و 400 و 500 و 700 و 800 و 900 (انظر الوصف الخاص بكل نمط في الطرف الأيسر) وذلك بالنقر على الزر Select this style الموجود في الطرف الأيمن.
</p>

<p>
	ستلاحظ أنّه بمجرّد اختيارك للنمط الأوّل سيبدأ الموقع بتجهيز الرابط اللازم لتضمين هذا الخط في موقعك، كما في الشكل التالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="91079" href="https://academy.hsoub.com/uploads/monthly_2022_01/1.png.e93acc7b38c06b4d37dda1b8b1bdc2af.png" rel=""><img alt="1.png" class="ipsImage ipsImage_thumbnailed" data-fileid="91079" data-unique="6lho474vt" src="https://academy.hsoub.com/uploads/monthly_2022_01/1.thumb.png.a3e880e4709279713cf6cac2572ce1d8.png"></a>
</p>

<p>
	عُد إلى الصفحة الرئيسية للموقع، وابحث الآن مرة أخرى عن الخط Almarai. اختر الأنماط 300 و 400 و 700 و 800 بنفس الطريقة السابقة. يمكنك في أي وقت استعراض الخطوط والأنماط التي اخترتها بالنقر على زر استعراض عائلات الخطوط المختارة الموجود كأيقونة في الطرف الأيمن العلوي من الصفحة بجوار زر Download family.
</p>

<p>
	عند هذه النقطة انسخ الرابط الخاص بعائلات الخطوط التي اخترتها. ستحصل على رابط شبيه بما يلي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_44_8" style="">
<span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"preconnect"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://fonts.googleapis.com"</span><span class="tag">&gt;</span><span class="pln">
</span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"preconnect"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://fonts.gstatic.com"</span><span class="pln"> </span><span class="atn">crossorigin</span><span class="tag">&gt;</span><span class="pln">
</span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://fonts.googleapis.com/css2?family=Almarai:wght@300;400;700;800&amp;family=Tajawal:wght@200;300;400;500;700;800;900&amp;display=swap"</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="tag">&gt;</span></pre>

<p>
	سنضع هذه الروابط ضمن القسم <code>&lt;head&gt;</code> من الصفحة، قبل وسم الإغلاق <code>&lt;/head&gt;</code> مباشرة.
</p>

<h3>
	الألوان والصور
</h3>

<p>
	تتيح لنا العديد من مواقع الإنترنت استخدام تشكيلة منسجمة من الألوان لاستخدامها في تصميماتنا، وذلك لتوفير الوقت والجهد على المطوّر أو المصمّم في <a href="https://academy.hsoub.com/design/graphic/%D9%83%D9%84-%D9%85%D8%A7-%D9%8A%D8%AC%D8%A8-%D8%B9%D9%84%D9%8A%D9%83-%D9%85%D8%B9%D8%B1%D9%81%D8%AA%D9%87-%D8%B9%D9%86-%D9%86%D8%B8%D8%B1%D9%8A%D8%A9-%D8%A7%D9%84%D8%A3%D9%84%D9%88%D8%A7%D9%86-%D9%84%D8%BA%D9%8A%D8%B1-%D8%A7%D9%84%D9%85%D8%B5%D9%85%D9%85%D9%8A%D9%86-r565/" rel="">الموائمة بين الألوان واختيار المتجانس منها</a> في تصميماته. بالنسبة لي، استخدمت هذا الموقع لاختيار تشكيلة ألوان موقع "نبيه". حيث عملت على استخدام ألوان بسيطة للغاية ضمنه وهي على الشكل التالي: ‎ #‎eee<code>‎</code> و <code>‎#fff</code> و <code>‎#393e46</code> و <code>‎#233e8b</code>. من الأفضل دومًا اختيار أربعة ألوان على الأكثر. انظر إلى موقع <a href="https://colorhunt.co/" rel="external nofollow">ColorHunt</a>.
</p>

<p>
	أمّا بالنسبة للصور، فهناك العديد من المواقع الأخرى التي توفّر صور جيدة سواءً كانت مجانية أو بمقابل مادي لاستخدامها في تصميماتك المختلفة. في حالتنا هذه، استخدمنا صور مجّانيّة بالطبع. يمكنك الحصول على مثل هذه الصور من موقع <a href="https://unsplash.com/" rel="external nofollow">unsplash</a> مثلًا.
</p>

<p>
	على أية حال يمكنك الحصول على تشكيلة الصور التي اخترتها من ملف الصور المرفق في نهاية المقال. اعمل على تنزيل الملف، ثم فك ضغطه، وبعد ذلك انقل الصور الموجودة ضمن المجلّد الناتج إلى المجلّد images الذي أنشأناه مسبقًا ضمن مجلّد مشروع "نبيه".
</p>

<h2>
	تصميم قسم الترويسة
</h2>

<p>
	سيحتوي قسم الترويسة بحد ذاته على شريط للتنقل بالإضافة إلى مساحة خاصة سنسميها Main View لإبراز الهدف من الموقع كما في الشكل التالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="91080" href="https://academy.hsoub.com/uploads/monthly_2022_01/2.png.827c4ac69ca70a3bd67c67f7fe3aa7f6.png" rel=""><img alt="2.png" class="ipsImage ipsImage_thumbnailed" data-fileid="91080" data-unique="xx5vprkj3" src="https://academy.hsoub.com/uploads/monthly_2022_01/2.thumb.png.a66b27b0052157a234e6cd7108b5be44.png"></a>
</p>

<h3>
	تصميم شريط التنقل
</h3>

<p>
	انتقل إلى الملف index.html، ثم أضف ضمن قسم الترويسة <code>header</code> ضمن جسم المستند <code>&lt;body&gt;</code> الشيفرة التالية:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_44_10" style="">
<span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"header"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="com">&lt;!-- Nav Bar --&gt;</span><span class="pln">
        </span><span class="tag">&lt;nav</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar navbar-expand-lg navbar-light"</span><span class="tag">&gt;</span><span class="pln"> </span><span class="com">&lt;!-- الموضع 1 --&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container-fluid"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar-brand"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"/images/nabih-logo.png"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">margin</span><span class="pun">-</span><span class="pln">left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">8px</span><span class="pun">;</span><span class="atv">"</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">""</span><span class="pln"> </span><span class="atn">height</span><span class="pun">=</span><span class="atv">"32"</span><span class="tag">&gt;</span><span class="pln">
                    نبيه
                </span><span class="tag">&lt;/a&gt;</span><span class="pln">
              </span><span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar-toggler"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">data-bs-toggle</span><span class="pun">=</span><span class="atv">"collapse"</span><span class="pln"> </span><span class="atn">data-bs-target</span><span class="pun">=</span><span class="atv">"#navbarSupportedContent"</span><span class="pln"> </span><span class="atn">aria-controls</span><span class="pun">=</span><span class="atv">"navbarSupportedContent"</span><span class="pln"> </span><span class="atn">aria-expanded</span><span class="pun">=</span><span class="atv">"false"</span><span class="pln"> </span><span class="atn">aria-label</span><span class="pun">=</span><span class="atv">"Toggle navigation"</span><span class="tag">&gt;</span><span class="pln"> </span><span class="com">&lt;!-- الموضع 2 --&gt;</span><span class="pln">
                </span><span class="tag">&lt;span</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar-toggler-icon"</span><span class="tag">&gt;&lt;/span&gt;</span><span class="pln">
              </span><span class="tag">&lt;/button&gt;</span><span class="pln">
              </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"collapse navbar-collapse"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"navbarSupportedContent"</span><span class="tag">&gt;</span><span class="pln">  </span><span class="com">&lt;!-- الموضع 3 --&gt;</span><span class="pln">
                </span><span class="tag">&lt;ul</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar-nav me-2 mb-2 mb-lg-0 ms-3"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;li</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-item"</span><span class="tag">&gt;&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-link"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">التصنيفات</span><span class="tag">&lt;/a&gt;&lt;/li&gt;</span><span class="pln">
                </span><span class="tag">&lt;/ul&gt;</span><span class="pln">
                </span><span class="tag">&lt;form</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"d-flex me-auto w-100"</span><span class="tag">&gt;</span><span class="pln"> </span><span class="com">&lt;!-- الموضع 4 --&gt;</span><span class="pln">
                    </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"form-control"</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"search"</span><span class="pln"> </span><span class="atn">placeholder</span><span class="pun">=</span><span class="atv">"ابحث عن أي موضوع"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-link"</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"images/icons8-shopping-cart-32.png"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
                    </span><span class="tag">&lt;button</span><span class="pln">  </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-dark nabih-buttons"</span><span class="tag">&gt;</span><span class="pln">دخول</span><span class="tag">&lt;/button&gt;</span><span class="pln">
                    </span><span class="tag">&lt;button</span><span class="pln">  </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"button"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-outline-dark nabih-buttons"</span><span class="tag">&gt;</span><span class="pln">تسجيل جديد</span><span class="tag">&lt;/button&gt;</span><span class="pln">
                </span><span class="tag">&lt;/form&gt;</span><span class="pln">
              </span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
          </span><span class="tag">&lt;/nav&gt;</span><span class="pln">
    </span><span class="tag">&lt;/section&gt;</span></pre>

<p>
	أود التحدث عن بعض النقاط الواردة في الشيفرة السابقة:
</p>

<p>
	أولًا، استخدمت في "الموضع 1" الصنف <code>‎.navbar-expand-lg</code> مع العنصر <code>nav</code>، إذ يسمح هذا الصنف بنشر عناصر شريط التنقّل، أو لنقل يجعلها مرئية عندما يكون عرض الشاشة كبيرًا أو فوق الكبير. أمَا في حال كان الأمر خلاف ذلك، فستُطوى "تختفي" عناصر شريط التنقل ويظهر مكانها زر قابل للنقر. انظر الشكل التالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="91081" href="https://academy.hsoub.com/uploads/monthly_2022_01/3.png.43ed474235e75dd25911022a824f25b1.png" rel=""><img alt="3.png" class="ipsImage ipsImage_thumbnailed" data-fileid="91081" data-unique="2hsw87wee" src="https://academy.hsoub.com/uploads/monthly_2022_01/3.png.43ed474235e75dd25911022a824f25b1.png" style="width: 600px; height: auto;"></a>
</p>

<p>
	يسمح ذلك بإنشاء صفحات ويب متجاوبة مع الأجهزة ذات الشاشات الصغيرة. إذا نقرت الزر الذي يظهر في يسار الشكل السابق، ستظهر العناصر الخاصة بشريط التنقل.
</p>

<p>
	ثانيًا، يمكن إنجاز هذه الميزة بوضع زر <code>&lt;button&gt;</code> "الموضع 2" ومنحه الصنف <code>‎.navbar-toggler</code>. سيحتاج هذا الزر أيضًا إلى أن نمنحه السمة <code>data-bs-target</code> والتي تحدّد معرّف العنصر المراد طيّه. وضعت القيمة <code>‎#navbarSupportedContent</code> لهذه السمة. وهي معرّف العنصر <code>&lt;div&gt;</code> الموجود في ثالثًا، "الموضع 3" والذي يحتوي بطبيعة الحال على العناصر المراد طيها في حال كان عرض الشاشة أقل من الحجم "كبير" في مثالنا هذا، فستجد في "الموضع 3" عنصر <code>&lt;div&gt;</code> الذي تحدثنا عنه توًا. لاحظ كيف أسندنا له الصنفان <code>collapse navbar-collapse</code> لمنحه قابلية الطي (أو الاختفاء إن صح التعبير في حال كان عرض الشاشة أقل من كبير). على أية حال، عند نقر الزر الصغير، سيظهر هذا العنصر بمحتوياته (عناصر شريط التنقل) مرّة أخرى.
</p>

<p>
	رابعًا، يوجد في "الموضع 4" عنصر <code>&lt;form&gt;</code>، وضعت ضمنه مربع البحث بالإضافة إلى سلة التسوّق وزرين لتسجيل الدخول ولتسجيل جديد. في الحقيقة يحتوي هذا العنصر على معظم عناصر شريط التنقّل، وسنتحدث عن المزيد حول عناصر الإدخال من المستخدم لاحقًا في درس قادم.
</p>

<p>
	انتقل الآن إلى الملف styles.css الذي أنشأناه في الدرس الثاني، وضع فيه التنسيقات التالية:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_6_10" style="">
<span class="pln">body</span><span class="pun">{</span><span class="pln">
    font</span><span class="pun">-</span><span class="pln">family</span><span class="pun">:</span><span class="pln"> </span><span class="str">'Tajawal'</span><span class="pun">,</span><span class="pln"> sans</span><span class="pun">-</span><span class="pln">serif</span><span class="pun">;</span><span class="pln">
    font</span><span class="pun">-</span><span class="pln">size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1em</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">nabih</span><span class="pun">-</span><span class="pln">buttons</span><span class="pun">{</span><span class="pln">
    margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="lit">4px</span><span class="pun">;</span><span class="pln"> 
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">6px</span><span class="pln"> </span><span class="lit">8px</span><span class="pun">;</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">7rem</span><span class="pun">;</span><span class="pln">
    white</span><span class="pun">-</span><span class="pln">space</span><span class="pun">:</span><span class="pln"> nowrap</span><span class="pun">;</span><span class="pln"> 
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">container</span><span class="pun">-</span><span class="pln">fluid</span><span class="pun">{</span><span class="pln">
    padding</span><span class="pun">:</span><span class="lit">0</span><span class="pln"> </span><span class="lit">5</span><span class="pun">%;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">/*Header Section*/</span><span class="pln">

</span><span class="com">#header{</span><span class="pln">
    background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> </span><span class="com">#eee;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">navbar</span><span class="pun">-</span><span class="pln">brand</span><span class="pun">{</span><span class="pln">
    font</span><span class="pun">-</span><span class="pln">family</span><span class="pun">:</span><span class="pln"> </span><span class="str">'Almarai'</span><span class="pun">;</span><span class="pln">
    color</span><span class="pun">:#</span><span class="lit">393e46</span><span class="pun">;</span><span class="pln">
    font</span><span class="pun">-</span><span class="pln">size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2.5rem</span><span class="pun">;</span><span class="pln">
    font</span><span class="pun">-</span><span class="pln">weight</span><span class="pun">:</span><span class="lit">900</span><span class="pun">;</span><span class="pln">
    margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	التنسيقات الثلاثة الأولى هي تنسيقات عامة يمكن استخدامها في كامل الصفحة.
</p>

<ul>
<li>
		التنسيق الأول <code>body</code> مسؤول عن ضبط نوع الخط لكامل الصفحة إستنادًا للخط الذي حصلنا عليه من موقع خطوط غوغل كما مرّ معنا قبل قليل.
	</li>
	<li>
		التنسيق الثاني <code>‎.nabih-buttons</code> فمسؤول عن ضبط الشكل العام لأي زر سنستخدمه ضمن الصفحة.
	</li>
	<li>
		أمّا التنسيق الثالث <code>‎.container-fluid</code> فهو تنسيق محجوز لبوتستراب، لكننا سنجري تعديلا بسيطا على الحشوة padding الخاصة به لكي تمنحه مساحة من اليمين ومن اليسار بمقدار 5% كما هو واضح. بالنسبة لما يخص قسم الترويسة Header Section، فقد وضعت حاليًا تنسيقين متعلّقان بشريط التنقل، على الشكل التالي:
	</li>
	<li>
		استهدفت القسم header بتنسيق بسيط، حيث عملت على تغيير لون الخلفية له.
	</li>
	<li>
		التنسيق <code>‎.navbar-brand</code> هو أيضًا تنسيق محجوز لبوتستراب، ولكن أردت هنا إضافة بعض التعديلات عليه لكي يتناسب مع احتياجاتنا، وخصوصًا فيما يتعلّق بنوع خط العلامة التجارية والذي حصلنا عليه أيضًا من موقع خطوط غوغل.
	</li>
</ul>
<p>
	نكون بذلك قد انتهينا من تهيئة شريط التنقّل، ولكننا مازلنا ضمن قسم الترويسة. سننتقل الآن إلى تهيئة قسم العرض الرئيسي Main View في الموقع.
</p>

<h3>
	تصميم قسم العرض الرئيسي Main View
</h3>

<p>
	أضف الشيفرة التالية ضمن الملف index.html مباشرةً بعد الشيفرة الخاصة بشريط التنقّل، وقبل وسم الإغلاق <code>&lt;‎ /section&gt;</code> :
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_44_15" style="">
<span class="com">&lt;!--Main View--&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"mainview"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-6"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;h1</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"mainview-heading"</span><span class="tag">&gt;</span><span class="pln">دورات غنية بجودة عالية</span><span class="tag">&lt;/h1&gt;</span><span class="pln">
                    </span><span class="tag">&lt;h3</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"mainview-subheading"</span><span class="tag">&gt;</span><span class="pln"> طور نفسك لتنافس في سوق العمل</span><span class="tag">&lt;/h3&gt;</span><span class="pln">
                </span><span class="tag">&lt;/div&gt;</span><span class="pln">
                </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-lg-6"</span><span class="tag">&gt;</span><span class="pln">

                    </span><span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"mainview-image"</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"/images/show-case.jpg"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
                </span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	قسم العرض الرئيسي بسيط وواضح. استخدمت هنا مخطط الشبكة، وذلك بإضافة سطر عن طريق وضع الصنف التنسيقي <code>row</code> ضمن عنصر <code>&lt;div&gt;</code> كما هو واضح. ثم عملت على تقسيم هذا السطر إلى قسمين متساويين (لاحظ التنسيقين <code>‎.col-lg-6</code> ). وضعت في القسم الأول نصّين وصفيين، أمّا في القسم الثاني فقد وضعت صورة تعبيرية.
</p>

<p>
	لكي يظهر قسم العرض الرئيسي بشكل صحيح، أضف التنسيقات التالية إلى آخر محتويات الملف styles.css:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_6_8" style="">
<span class="pun">.</span><span class="pln">mainview</span><span class="pun">-</span><span class="pln">heading </span><span class="pun">{</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> white</span><span class="pun">;</span><span class="pln">
    font</span><span class="pun">-</span><span class="pln">size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">4em</span><span class="pun">;</span><span class="pln">
    text</span><span class="pun">-</span><span class="pln">align</span><span class="pun">:</span><span class="pln"> right</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">mainview</span><span class="pun">-</span><span class="pln">subheading</span><span class="pun">{</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> white</span><span class="pun">;</span><span class="pln">
    margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">64px</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    text</span><span class="pun">-</span><span class="pln">align</span><span class="pun">:</span><span class="pln"> right</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">mainview</span><span class="pun">{</span><span class="pln">
    background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> </span><span class="com">#233e8b;</span><span class="pln">
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3</span><span class="pun">%</span><span class="pln"> </span><span class="lit">5</span><span class="pun">%;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">mainview</span><span class="pun">-</span><span class="pln">image</span><span class="pun">{</span><span class="pln">
    border</span><span class="pun">-</span><span class="pln">radius</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2</span><span class="pun">%;</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">500px</span><span class="pun">;</span><span class="pln">
    </span><span class="kwd">float</span><span class="pun">:</span><span class="pln"> left</span><span class="pun">;</span><span class="pln">    
</span><span class="pun">}</span></pre>

<p>
	أعتقد أنّ هذه التنسيقات بسيطة وواضحة:
</p>

<ul>
<li>
		نعمل في البداية على تنسيق النصوص التي ستظهر في الجانب الأيمن (الصنفان <code>‎.mainview-heading</code> و <code>‎.mainview-subheading</code>)، ستعمل التنسيقات على تحديد لون الخط وحجمه ومحاذاة النص نحو اليمين.
	</li>
	<li>
		نعمل أيضًا على تنسيق عنصر الصورة الذي سيظهر في الجانب الأيسر، حيث نحدّد عرض الصورة ونكسب حوافها الأربعة انحناءً جميلًا، كما نجعلها أيضًا تظهر (تطوف) في أقصى اليسار (<code>float: left</code>).
	</li>
	<li>
		ننسّق أيضًا قسم العرض الرئيسي بكامله (الصنف <code>‎.mainview</code>) بإكسابه لون خلفية محدّد وإضافة بعض الحشوة المناسبة إلى أطرافه الأربعة.
	</li>
</ul>
<p>
	بعد حفظ الملفين index.html و styles.css يمكنك معاينة الصفحة الآن. ستحصل على شكل شبيه بما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="91082" href="https://academy.hsoub.com/uploads/monthly_2022_01/4.png.06cfc41c32da9d51fb68d67f91bea282.png" rel=""><img alt="4.png" class="ipsImage ipsImage_thumbnailed" data-fileid="91082" data-unique="upmnrxpro" src="https://academy.hsoub.com/uploads/monthly_2022_01/4.thumb.png.90db7bee463e10e0b9afd1d95d7b42b6.png"></a>
</p>

<p>
	نكون الآن قد انتهينا من قسم الترويسة. سنكمل باقي الأقسام الخاصة بالصفحة في الدروس التالية.
</p>

<h2>
	خاتمة
</h2>

<p>
	أنجزنا في هذا الدرس الكثير من العمل! حيث خططنا الصفحة الرئيسية وقسمناها إلى أربعة أقسام رئيسية أنجزنا منها القسم الأول (قسم الترويسة). سنتابع عملنا في الدروس التالية في التعرّف على مكوّنات جديدة في بوتستراب 5، بالإضافة إلى إكمال ما تبقى من أقسام رئيسية ضمن موقع "نبيه".
</p>

<p>
	<a href="https://academy.hsoub.com/applications/core/interface/file/attachment.php?id=91087" data-fileid="91087" rel="">ملف ch04-images-resource</a>
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		المقال التالي: <a href="https://academy.hsoub.com/programming/html/%D9%85%D9%83%D9%88%D9%86-%D8%A7%D9%84%D8%A8%D8%B7%D8%A7%D9%82%D8%A9-card-%D9%88%D9%85%D9%83%D9%88%D9%86-%D8%A7%D9%84%D8%B4%D8%B1%D8%A7%D8%A6%D8%AD-%D8%A7%D9%84%D8%AF%D9%88%D8%A7%D8%B1%D8%A9-carousel-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-r1458/" rel="">مكون البطاقة Card ومكون الشرائح الدوارة Carousel في بوتستراب</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/html/bootstrap/%D8%A8%D9%86%D8%A7%D8%A1-%D9%82%D8%A7%D8%A6%D9%85%D8%A9-%D8%B4%D8%AC%D8%B1%D9%8A%D8%A9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-r623/" rel="">بن</a><a href="https://academy.hsoub.com/programming/html/bootstrap/%D8%A8%D9%86%D8%A7%D8%A1-%D9%82%D8%A7%D8%A6%D9%85%D8%A9-%D8%B4%D8%AC%D8%B1%D9%8A%D8%A9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-r623/" rel="">اء قائمة شجرية باستخدام البوتستراب</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/html/bootstrap/10-%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D8%B4%D8%A7%D8%A6%D8%B9%D8%A9-%D8%B9%D9%86%D8%AF-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-bootstrap-r190/" rel="">10 أخطاء شائعة عند استخدام إطار العمل Bootstrap</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1457</guid><pubDate>Tue, 01 Feb 2022 16:06:00 +0000</pubDate></item><item><title>&#x645;&#x62E;&#x637;&#x637; &#x627;&#x644;&#x635;&#x641;&#x62D;&#x629; &#x641;&#x64A; &#x628;&#x648;&#x62A;&#x633;&#x62A;&#x631;&#x627;&#x628; 5</title><link>https://academy.hsoub.com/programming/css/bootstrap/%D9%85%D8%AE%D8%B7%D8%B7-%D8%A7%D9%84%D8%B5%D9%81%D8%AD%D8%A9-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-5-r1317/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2021_09/61406064f355c_5(1).png.1db4e2d0ea77e10653cd6d43e301b881.png" /></p>

<p>
	مرحبًا بك في الدرس الثالث من سلسلة تعليم بوتستراب 5. سنتعرّف في هذا الدرس على مخطط الشبكة Grid Layout وهو المخطط المعتمد في بوتستراب. سنمر على النقاط التالية في هذا الدرس:
</p>

<ul>
<li>
		الحاوية Container.
	</li>
	<li>
		مخطط الشبكة Grid.
	</li>
	<li>
		استخدام الأعمدة بطريقة متجاوبة.
	</li>
</ul>
<p>
	هذا الدرس مهم وأساسي في التعرّف على بوتستراب وكيف يعمل.
</p>

<h2>
	الحاوية Container
</h2>

<p>
	تُعَد الحاوية حجرة البناء الأساسية في بوتستراب، وهي عبارة عن عنصر <code>div</code> يحمل التنسيق <code>container</code> أو أخواته، وذلك لكي يكسب هذا العنصر بعض التنسيقات المسبقة والمفيدة مما يسمح باحتواء بقية العناصر ضمن الشاشة المطلوبة بيسر وسهولة. يُعتبر استخدام الحاوية ضروريًا مع مخطط الشبكة ضمن بوتستراب كما سنرى بعد قليل.
</p>

<p>
	يوجد ثلاثة أنواع من الحاويات في بوتستراب وهي:
</p>

<ul>
<li>
		الحاوية العادية: عبارة عن عنصر <code>div</code> يحمل صنف التنسيق <code>container</code>.
	</li>
	<li>
		الحاوية الإنسيابية: وهي عنصر <code>div</code> يحمل الصنف التنسيقي <code>container-fluid</code> ويكون عرض هذه الحاوية هو العرض الكامل للشاشة أي ‎ 100%
	</li>
	<li>
		الحاويات ذات العرض المخصص: وهي عبارة عن خمس حاويات: <code>container-sm</code> و <code>container-md</code> و <code>container-lg</code> و <code>container-xl</code> و <code>container-xxl</code> ومعناها على الترتيب: الحاوية ذات العرض الصغير، وذات العرض المتوسط، وذات العرض الكبير، وذات العرض الأكبر، وذات العرض الكبير جدًا.
	</li>
</ul>
<p>
	الأمر المميز في حاويات العرض المخصّص هو أنّ الصفة المرتبطة معها (صفة العرض) لا تُفعّل إلّا إذا وصل عرض الحاوية إلى عرض أصغري يمكنك أن تدعوه عتبة الاستجابة Break Point. لكي نفهم الموضوع على أكمل وجه، أنشئ ملفًا جديدًا ضمن مجلّد العمل nabih سمّ الملف test-container.html وانسخ الكود التالي إليه مع ملاحظة أنّ التنسيقات التي تحتوي على <code>background-color</code> وضعتها فقط لتمييز الحاويات عن بعضها وليس لها أي دور آخر:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_7671_6" style="">
<span class="dec">&lt;!DOCTYPE html&gt;</span><span class="pln">
</span><span class="tag">&lt;html&gt;</span><span class="pln">
    </span><span class="tag">&lt;head&gt;</span><span class="pln">
        </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">charset</span><span class="pun">=</span><span class="atv">"utf-8"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">http-equiv</span><span class="pun">=</span><span class="atv">"X-UA-Compatible"</span><span class="pln"> </span><span class="atn">content</span><span class="pun">=</span><span class="atv">"IE=edge"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;title&gt;</span><span class="pln">اختبار الحاويات</span><span class="tag">&lt;/title&gt;</span><span class="pln">
        </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"description"</span><span class="pln"> </span><span class="atn">content</span><span class="pun">=</span><span class="atv">""</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"viewport"</span><span class="pln"> </span><span class="atn">content</span><span class="pun">=</span><span class="atv">"width=device-width, initial-scale=1"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln">
        </span><span class="atn">integrity</span><span class="pun">=</span><span class="atv">"sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC"</span><span class="pln"> </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="tag">&gt;</span><span class="pln">

    </span><span class="tag">&lt;/head&gt;</span><span class="pln">
    </span><span class="tag">&lt;body&gt;</span><span class="pln">
         </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> royalblue</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">حاوية عادية</span><span class="tag">&lt;/div&gt;</span><span class="pln">
          </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container-sm"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln">sandybrown</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">عرض مئة بالمئة حتى عتبة العرض الصغير</span><span class="tag">&lt;/div&gt;</span><span class="pln">
          </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container-md"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> salmon</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">عرض مئة بالمئة حتى عتبة العرض المتوسط</span><span class="tag">&lt;/div&gt;</span><span class="pln">
          </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container-lg"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> lightpink</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">عرض مئة بالمئة حتى عتبة العرض الكبير</span><span class="tag">&lt;/div&gt;</span><span class="pln">
          </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container-xl"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> lightgreen</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">عرض مئة بالمئة حتى عتبة العرض الأكبر</span><span class="tag">&lt;/div&gt;</span><span class="pln">
          </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container-xxl"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> lightsteelblue</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">عرض مئة بالمئة حتى عتبة العرض الكبير جدًا</span><span class="tag">&lt;/div&gt;</span><span class="pln">
          </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container-fluid"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> lightpink</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">حاوية انسيابية</span><span class="tag">&lt;/div&gt;</span><span class="pln">

          </span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"</span><span class="pln">
          </span><span class="atn">integrity</span><span class="pun">=</span><span class="atv">"sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"</span><span class="pln">
          </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">
    </span><span class="tag">&lt;/body&gt;</span><span class="pln">
</span><span class="tag">&lt;/html&gt;</span></pre>

<p>
	احفظ التغييرات ثم انقر بزر الفأرة الأيمن على هذا الملف، واختر تشغيله عن طريق الإضافة Live Server. ستظهر محتويات الملف ضمن المتصفح. جرّب الآن تصغير عرض نافذة المتصفّح إلى أصغر حد ممكن، ستلاحظ أنّ جميع الحاويات قد شغلت العرض الأعظمي الممكن ‎ 100%كما في الشكل التالي وذلك بسبب أنّ العرض الحالي هو صغير جدًا ولم يصل بعد إلى عتبة الإستجابة الأولى "صغير" :
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="76953" href="https://academy.hsoub.com/uploads/monthly_2021_09/1.png.6f6a1595dcc11409e47d9637772096ee.png" rel=""><img alt="1.png" class="ipsImage ipsImage_thumbnailed" data-fileid="76953" data-unique="tlx11ixqh" src="https://academy.hsoub.com/uploads/monthly_2021_09/1.png.6f6a1595dcc11409e47d9637772096ee.png"></a>
</p>

<p>
	ابدأ الآن بالسحب وتوسيع عرض النافذة تدريجيًا. ستلاحظ أنّ الحاويتان العادية وذات العرض الصغير قد أخذتا منحًا مغايرًا عن باقي الحاويات الأخرى. كما في الشكل التالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="76954" href="https://academy.hsoub.com/uploads/monthly_2021_09/2.png.df669819a06315621399e78463cbd616.png" rel=""><img alt="2.png" class="ipsImage ipsImage_thumbnailed" data-fileid="76954" data-unique="mcpgc5r20" src="https://academy.hsoub.com/uploads/monthly_2021_09/2.png.df669819a06315621399e78463cbd616.png"></a>
</p>

<p>
	وسبب ذلك أنّ الحاوية العادية يكون عرضها دومًا مساويًا لقيمة الثابت <code>max-width</code> والذي تتغيّر قيمته وفقًا لاستعلامات Media Queries. أمّا الحاوية ذات العرض الصغير فقد بلغت عتبة الاستجابة الخاصة بها عندما بدأت بتوسيع عرض النافذة، وبالتالي سيصبح عرضها مساويًا أيضًا لقيمة الثابت <code>max-width</code>. إذا تابعت توسيع عرض النافذة بنفس الأسلوب، ستلاحظ أنّه عندما تبلغ كل عتبة ستنضم إحدى الحاويات إلى رفيقاتها السابقة في اكتساب العرض <code>max-width</code> حتى إذا ما وصل عرض النافذة لأقصى حد ممكن (على اعتبار أنّك تستخدم شاشة حاسوب عادية) ستحصل على شكل شبيه بما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="76955" href="https://academy.hsoub.com/uploads/monthly_2021_09/3.png.55b463a0cab4b42e59ba043c026a5ae5.png" rel=""><img alt="3.png" class="ipsImage ipsImage_thumbnailed" data-fileid="76955" data-unique="trk0g5bm2" src="https://academy.hsoub.com/uploads/monthly_2021_09/3.thumb.png.dc976cf60311446fc947e00c01bf3279.png"></a>
</p>

<p>
	لاحظ أنّ الحاوية الإنسيابية <code>container-fluid</code> بقي عرضها ثابتًا بحيث يأخذ عرض الشاشة كاملًا ‎ 100%. يلخص الجدول التالي عتبات الإستجابة (قيم <code>max-width</code>) لكل من الحاويات السابقة:
</p>
<style type="text/css">
table {
    width: 100%;
}

thead {
    vertical-align: middle;
    text-align: center;
} 

td, th {
    border: 1px solid #dddddd;
    text-align: right;
    padding: 8px;
    text-align: inherit;

}
tr:nth-child(even) {
    background-color: #dddddd;
}</style>
<table>
<thead><tr>
<th>
				 
			</th>
			<th>
				صغير جدا - أصغر من 576 بيكسل
			</th>
			<th>
				صغير - أكبر من أو يساوي 576 بيكسل
			</th>
			<th>
				متوسط - أكبر من أو يساوي 768 بيكسل
			</th>
			<th>
				كبير- أكبر من أو يساوي 992 بيكسل
			</th>
			<th>
				الأكبر - أكبر من أو يساوي 1200 بيكسل
			</th>
			<th>
				كبير جدًا - أكبر من أو يساوي 1400 بيكسل
			</th>
		</tr></thead>
<tbody>
<tr>
<td>
				.container
			</td>
			<td>
				100%
			</td>
			<td>
				540px
			</td>
			<td>
				720px
			</td>
			<td>
				960px
			</td>
			<td>
				1140px
			</td>
			<td>
				1320px
			</td>
		</tr>
<tr>
<td>
				.container-sm
			</td>
			<td>
				100%
			</td>
			<td>
				540px
			</td>
			<td>
				720px
			</td>
			<td>
				960px
			</td>
			<td>
				1140px
			</td>
			<td>
				1320px
			</td>
		</tr>
<tr>
<td>
				.container-md
			</td>
			<td>
				100%
			</td>
			<td>
				100%
			</td>
			<td>
				720px
			</td>
			<td>
				960px
			</td>
			<td>
				1140px
			</td>
			<td>
				1320px
			</td>
		</tr>
<tr>
<td>
				.container-lg
			</td>
			<td>
				100%
			</td>
			<td>
				100%
			</td>
			<td>
				100%
			</td>
			<td>
				960px
			</td>
			<td>
				1140px
			</td>
			<td>
				1320px
			</td>
		</tr>
<tr>
<td>
				.container-xl
			</td>
			<td>
				100%
			</td>
			<td>
				100%
			</td>
			<td>
				100%
			</td>
			<td>
				100%
			</td>
			<td>
				1140px
			</td>
			<td>
				1320px
			</td>
		</tr>
<tr>
<td>
				.container-xxl
			</td>
			<td>
				100%
			</td>
			<td>
				100%
			</td>
			<td>
				100%
			</td>
			<td>
				100%
			</td>
			<td>
				100%
			</td>
			<td>
				1320px
			</td>
		</tr>
<tr>
<td>
				.container-fluid
			</td>
			<td>
				100%
			</td>
			<td>
				100%
			</td>
			<td>
				100%
			</td>
			<td>
				100%
			</td>
			<td>
				100%
			</td>
			<td>
				100%
			</td>
		</tr>
</tbody>
</table>
<p>
	يمكنك الآن التخلص من الملف test-container.html من مجلّد المشروع إن أحببت.
</p>

<h2>
	مخطط الشبكة Grid
</h2>

<p>
	يمكنك أن تبني باستخدام مخطط الشبكة في بوتستراب واجهات بمختلف الأشكال والأحجام. يعتمد مخطط الشبكة على مفهوم صندوق التخطيط المرن Flex Box في بناء الواجهات، وهو يستخدم، كما سنرى بعد قليل، مزيج من الحاويات والأسطر والأعمدة لتحقيق هذا الهدف.
</p>

<p>
	يدعم مخطط الشبكة ست عتبات استجابة بنفس مبدأ عتبات الإستجابة التي مرّت معنا في فقرة الحاويات، وهي: <code>sm</code> و <code>md</code> و <code>lg</code> و <code>xl</code> و <code>xxl</code>، أمّا السادس فهو للقياس: "صغير جدًا" (أقل من 576 بيكسل) وفعليًا ليس له اختصار محدّد.
</p>

<p>
	يتكوّن مخطّط الشبكة من 12 عمود. تكون الأعمدة محدّدة ضمن أسطر وذلك للتحكم بعدد الأعمدة الموجودة بكل سطر على حدة. في أي سطر، يتوزّع العرض المُتاح بالتساوي على الأعمدة المتماثلة الموجودة ضمنه.
</p>

<p>
	انظر إلى المثال الأساسي التالي الذي يوضّح بنية بسيطة جدًا لاستخدام مخطط الشبكة:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_7671_8" style="">
<span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> lightgreen</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">
                Row 1 - Col 1
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> lightpink</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">
                Row 1 - Col 2
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> lightsalmon</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">
                Row 1 - Col 1
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> lightblue</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">
                Row 2 - Col 2
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> lightseagreen</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">
                Row 3 - Col 3
            </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	لاحظ في البداية وجود حاوية وهي ضرورية لكي يعمل مخطط الشبكة. بعد ذلك نبدأ بتعريف الأسطر باستخدام عنصر <code>div</code> مع الصنف التنسيقي <code>row</code>. في الكود السابق عرّفنا سطرين. يحتوي السطر الأوّل على عمودين. نعرّف أي عمود باستخدام العنصر <code>div</code> مع الصنف التنسيقي <code>col</code> (أو أخواته كما سنرى بعد قليل) أمّا السطر الثاني فيحتوي على ثلاثة أعمدة كما هو واضح.
</p>

<p>
	النصوص التي تراها في الكود السابق مثل: "Row 1 - Col 1" هي نصوص توضيحية، أيضًا هنا، جميع تنسيقات <code>background-color</code> هي فقط لتوضيح البنية الناتجة وليس لها أي دور في مخطّط الشبكة.
</p>

<p>
	لاختبار الكود السابق بسرعة يمكن تجريبه مباشرة على موقع مثل <a href="https://www.codeply.com/" rel="external nofollow">codeply.com</a>. يمكنك فيه تجريب الكود بلا تسجيل مسبق. اختر Bootstrap 5 من القائمة الجانبية اليسرى ليظهر مختبر جاهز لتجريب الكود. احذف جميع الكود التلقائي الموجود مسبقًا في قسم HTML الموجود في الناحية اليسرى، وانسخ الكود السابق إليه ضمن هذه المنطقة. بعد ذلك ستلاحظ وجود أيقونة صغيرة أعلى الصفحة تحمل ما يشبه زر تشغيل، انقرها لترى النتائج في الأسفل. ستحصل على شكل شبيه بما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="76957" href="https://academy.hsoub.com/uploads/monthly_2021_09/4.png.52b8ba9ae1c90e8b75a1f1189e8cdc93.png" rel=""><img alt="4.png" class="ipsImage ipsImage_thumbnailed" data-fileid="76957" data-unique="fep6n8w3t" src="https://academy.hsoub.com/uploads/monthly_2021_09/4.thumb.png.93d4aa361d83b57d8f6dda7d07d9360d.png"></a>
</p>

<p>
	يمكنك استخدام هذا الموقع دومًا في حال أردت تجريب ميزة جديدة بسرعة.
</p>

<p>
	كما أوضحنا توًا لدينا 12 عمود ضمن مخطّط الشبكة لكل منها العرض نفسه. ولكن في بعض الأحيان قد نحتاج إلى أن يكون أحد الأعمدة أعرض من باقي الأعمدة الأخرى، أو أن تحتاج أن يكون للأعمدة ضمن سطر ما عرض مختلف لكل منها. في الحقيقة يدعم مخطّط الشبكة هذا الأمر بصورة جميلة. لكي نفهم هذا الأمر تمامًا، تخيّل أنّ العرض المتاح ضمن الحاوية مقسّم إلى 12 حصّة متساوية فيما بينها. عندها يسمح بوتستراب بتخصيص أي عدد من هذه الحصص لأي عمود.
</p>

<p>
	لنفرض مثًلا أنّه يوجد لدينا ثلاثة أعمدة ضمن أحد الأسطر. يمكننا مثلًا تخصيص حصتين للعمود الأول وأربع حصص للعمود الثاني ونترك العمود الثالث في الحالة الافتراضية، أي بدون تعيين أي حصة له. أي كما في الكود التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_7671_10" style="">
<span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-2"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> lightgreen</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">
            Row 1 - Col 1
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-4"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> lightpink</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">
            Row 1 - Col 2
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col"</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> lightblue</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">
            Row 1 - Col 3
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	لاحظ كيف عيّنت الحصص من خلال الأرقام الموجودة بجوار الصنف التنسيقي <code>col</code>، فالعمود الأول أصبح له الصنف التنسيقي <code>col-2</code> أمّا العمود الثاني فأصبح له الصنف التنسيقي <code>col-4</code> أمّا العمود الثالث فله الصنف التنسيقي <code>col</code> فقط بدون أي تخصيص للحصص.
</p>

<p>
	جرّب الكود السابق في codeply لتحصل على شكل شبيه بما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="76958" href="https://academy.hsoub.com/uploads/monthly_2021_09/5.png.b3b26548447bdf48814a0ac22056a3a3.png" rel=""><img alt="5.png" class="ipsImage ipsImage_thumbnailed" data-fileid="76958" data-unique="vgj1q54d2" src="https://academy.hsoub.com/uploads/monthly_2021_09/5.thumb.png.f88c77b5195392c19494c6f3558f6859.png"></a>
</p>

<p>
	لاحظ كيف أنّ عرض العمود الثاني هو ضعف العمود الأوّل وهذا أمر منطقي بالطبع، ولاحظ أيضًا أنّ العمود الثالث الذي لم نخصص له أي حصة قد شغل باقي الحصص المتاحة وهي في حالتنا هذه 6 حصص (تذكر حصة العمود الأول + حصة العمود الثاني = 6). إذًا، عندما لا نحدّد أي حصة للعمود فإنّه يشغل دومًا باقي الحصص المتاحة. ولو فرضنا وجود عمود رابع لم نحدد له أيضًا أي حصة (مثل العمود الثالث) فإنّه سيتقاسم باقي الحصص المتاحة الباقية مع العمود الثالث (سيأخذ كل واحد منها 3 حصص) وهكذا. ولا يهم بالطبع فيما إذا كان مثل هذين العمودين (أو أكثر) متجاورين أم متفرقين ضمن بقية الأعمدة الأخرى في حال وجودها.
</p>

<p>
	من الواضح بحسب السيناريو السابق أنّ عدد الأعمدة التي يمكننا إنشاؤها ضمن مخطّط الشبكة هي 12 عمود على الأكثر. وإذا نظرنا إلى هذا الأمر من زاوية أخرى، فيجب أن يكون مجموعة الحصص دومًا يساوي 12 حصة.
</p>

<h2>
	استخدام الأعمدة بطريقة متجاوبة
</h2>

<p>
	كما رأينا في الفقرة السابقة يمكننا إنشاء حتى 12 عمود ضمن مخطط الشبكة، ولكن المشكلة أنّ هذه الأعمدة ستسلك نفس السلوك عبر جميع الشاشات الممكنة. بمعنى آخر لا يمكننا بحسب المعلومات التي حصلنا عليها في الفقرة السابقة أن نغيّر مثلًا عرض أي عمود إذا تغيرت الشاشة الحالية من شاشة جوال إلى شاشة حاسوب كبيرة وهذا أمر مرغوب جدًا. ففي الحالة العامة يمكن لأي موقع أن يُعرض على شاشة حاسوب عادي، أو على شاشة جوال، ومن المفترض أن يتغير شكل الموقع بشكل يتناسب مع حجم الشاشة التي يُعرض ضمنها لكي يُعتبر هذا الموقع متجاوبًا.
</p>

<p>
	في الحقيقة يوجد حل أنيق يوفره لنا بوتستراب يتمثّل في إضافة بسيطة بجوار رقم الحصة التي ننوي تخصيصها للعمود وذلك على الشكل التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_7671_12" style="">
<span class="pln">col-{sm|md|lg|xl|xxl}-n</span></pre>

<p>
	فمثًلا يمكننا أن نخبر أحد الأعمدة أننا نرغب بأن يأخذ 6 حصص في حال كانت الشاشة متوسطة العرض أو أكثر عندها نكتب <code>col-md-6</code>. في هذه الحالة سيأخذ العمود نصف العرض المتاح للشاشة إذا كان قياسها متوسط أو أعلى. أمّا إذا كان قياس الشاشة أقل من متوسط فإنّه سيأخذ العرض الكامل المتاح للشاشة (إذا كان العمود موجود لوحده ضمن السطر) لأننا لم نخبر العمود كيف يتصرف في حال كانت الشاشة أصغر من القياس المتوسط.
</p>

<p>
	يمكننا أيضًا الدمج بين أكثر من صنف تنسيقي لكي نُكسب العمود سلوكًا مختلفًا من أجل قياسات مختلفة للشاشة. انظر مثلًا إلى العمود التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_7671_14" style="">
<span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-6 col-md-4"</span><span class="tag">&gt;&lt;/div&gt;</span></pre>

<p>
	سيأخذ العمود السابق نصف العرض المتاح لأي شاشة يكون قياسها أقل من المتوسط بسبب وجود الصنف التنسيقي <code>col-6</code>. أمّا عندما يبلغ قياس الشاشة متوسط أو أكثر فعندها سيأخذ العمود أربع حصص فقط من عرض الشاشة بسبب وجود الصنف التنسيقي <code>col-md-4</code>. يمكن إضافة أي عدد من الأصناف التنسيقية التي تضبط عرض العمود من أجل كل قياس من القياسات الخمسة الرئيسية التي تعرفنا عليها في هذا الدرس.
</p>

<p>
	لنأخذ الآن مثال أكبر قليلًا يحتوي على عدة أسطر وأعمدة لكي نتأكّد من أنّنا قد استوعبنا الفكرة جيّدًا. انظر إلى الكود التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_7671_16" style="">
<span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="com">&lt;!-- الموضع 1 --&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-md-8"</span><span class="tag">&gt;</span><span class="pln">.col-md-8</span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-6 col-md-4"</span><span class="tag">&gt;</span><span class="pln">.col-6 .col-md-4</span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">

        </span><span class="com">&lt;!-- الموضع 2--&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-6 col-md-4"</span><span class="tag">&gt;</span><span class="pln">.col-6 .col-md-4</span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-6 col-md-4"</span><span class="tag">&gt;</span><span class="pln">.col-6 .col-md-4</span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-6 col-md-4"</span><span class="tag">&gt;</span><span class="pln">.col-6 .col-md-4</span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">

        </span><span class="com">&lt;!-- ستأخذ الأعمدة في هذا السطر 50% من العرض الكلي المتاح بصرف النظر عن نوع الشاشة --&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-6"</span><span class="tag">&gt;</span><span class="pln">.col-6</span><span class="tag">&lt;/div&gt;</span><span class="pln">
            </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-6"</span><span class="tag">&gt;</span><span class="pln">.col-6</span><span class="tag">&lt;/div&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	انظر إلى الموضع 1 ضمن الكود السابق. في الشاشات الصغيرة ستتكدّس الأعمدة في هذا السطر فوق بعضها بحيث يحتل العمود الأول العرض الكلي والعمود الثاني نصف العرض الكلي. أمّا في الكود الذي يلي الموضع 2، فيشير إلى أنّه في الشاشات الصغيرة سيحتل كل عمود 50% من العرض الكلي.
</p>

<p>
	أمّا في الشاشات المتوسطة فأكبر، سيأخذ كل عمود ثلث العرض الكلي المتاح. بادر فورًا إلى تجربته ضمن Visual Studio Code (وليس ضمن codeply.com لكي تحصل على تجربة أدق). صغّر نافذة المتصفّح وكبّرها ولاحظ ماذا يحدث للأعمدة. يمكنك بالطبع إضافة تنسيقات لونية باستخدام <code>background-color</code> لكي تلاحظ التغييرات. ستحصل في حالة الشاشة الكبيرة على شكل شبيه بما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="76959" href="https://academy.hsoub.com/uploads/monthly_2021_09/6.png.0ec67e493c0413369b13a6d67ab45fd2.png" rel=""><img alt="6.png" class="ipsImage ipsImage_thumbnailed" data-fileid="76959" data-unique="kpqjahequ" src="https://academy.hsoub.com/uploads/monthly_2021_09/6.thumb.png.d085738cf0dd4f0e2585b673ac18171a.png"></a>
</p>

<p>
	يمكنك أيضًا استخدام أدوات المطوّر التي توفّر تجربة جيدة للمطورين في تجربة واختبار تطبيقات الويب الخاصة بهم. يمكنك قراءة المزيد حول هذا الموضوع <a href="https://academy.hsoub.com/programming/javascript/%D8%A3%D8%AF%D9%88%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B7%D9%88%D8%B1-r665/" rel="">من هنا</a>.
</p>

<h2>
	خاتمة
</h2>

<p>
	نكون بهذا قد وصلنا إلى نهاية هذا الفصل المهم الذي سنبقى نستقي من المعلومات الواردة فيه حتى نهاية هذه السلسلة. سنعمل في الدرس التالي على تطبيق المفاهيم الواردة في هذا الدرس ضمن موقعنا الذي نبنيه تدريجيًا "نبيه"، وسنعمل في الدرس القادم على تحديث مشروعنا "نبيه" بالمعلومات الواردة في هذا الدرس بالإضافة إلى المعلومات التي سنحصل عليها في الدرس القادم.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/programming/html/bootstrap/%D8%B4%D8%B1%D9%8A%D8%B7-%D8%A7%D9%84%D8%AA%D9%86%D9%82%D9%84-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-5-r1316/" rel="">شريط التنقل في بوتستراب 5</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/html/bootstrap/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-5-r1315/" rel="">مدخل إلى إطار العمل بوتستراب 5</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/html/bootstrap/10-%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D8%B4%D8%A7%D8%A6%D8%B9%D8%A9-%D8%B9%D9%86%D8%AF-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-bootstrap-r190/" rel="">10 أخطاء شائعة عند استخدام إطار العمل Bootstrap</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1317</guid><pubDate>Tue, 21 Sep 2021 15:01:01 +0000</pubDate></item><item><title>&#x634;&#x631;&#x64A;&#x637; &#x627;&#x644;&#x62A;&#x646;&#x642;&#x644; &#x641;&#x64A; &#x628;&#x648;&#x62A;&#x633;&#x62A;&#x631;&#x627;&#x628; 5</title><link>https://academy.hsoub.com/programming/css/bootstrap/%D8%B4%D8%B1%D9%8A%D8%B7-%D8%A7%D9%84%D8%AA%D9%86%D9%82%D9%84-%D9%81%D9%8A-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-5-r1316/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2021_09/61405c402cc6e_5-aftereit.png.4724cc0e4889d8fe9e500441ac023c91.png" /></p>

<p>
	أهلًا بكم في الدرس الثاني من سلسلة تعليم بوتستراب 5، سنتعلم في هذا الدرس كيف ننشئ شريط تنقّل باستخدام بوتستراب من خلال موقع بسيط جدًا وظيفته توضيح هذه الفكرة، ومن ثمّ سنعمل على دعم اللغة العربية من خلال جعل جهة الموقع من اليمين إلى اليسار. سنركّز على النقاط التالية في هذا الدرس:
</p>

<ul>
<li>
		تجهيز البنية التحتية للمشروع
	</li>
	<li>
		معاينة الموقع ضمن خادوم تجريبي
	</li>
	<li>
		لبُّ الموضوع: شريط التنقّل في بوتستراب
	</li>
	<li>
		تعديل الموقع ليدعم الاتجاه من اليمين إلى اليسار
	</li>
</ul>
<h2>
	تجهيز البنية التحتية للمشروع
</h2>

<p>
	لنعمل على تجهيز البنية التحتية لمشروعنا الخاص ببيع الدورات التعليمية "نبيه". أنشئ مجلّدًا جديدًا في المكان الذي ترغبه وسمّه nabih. انتقل بعد ذلك إلى Visual Studio Code واختر من القائمة File الأمر Open Folder ثم انتقل إلى المجلّد الذي أنشأته توًّا ثم اختر Select Folder لفتحه.
</p>

<p>
	أصبحت الآن جاهزًا للبدء بإضافة ملفات المشروع. ستلاحظ في الجهة اليسرى من نافذة Visual Studio ظهور المجلّد الذي اخترناه قبل قليل مع توفّر إمكانية إضافة ملفات أو مجلّدات أخرى إليه كما في الشكل التالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="76948" href="https://academy.hsoub.com/uploads/monthly_2021_09/1.png.f6eeae3a1ee1e8983a74b00fbed5c363.png" rel=""><img alt="1.png" class="ipsImage ipsImage_thumbnailed" data-fileid="76948" data-unique="ktpnk16v0" src="https://academy.hsoub.com/uploads/monthly_2021_09/1.png.f6eeae3a1ee1e8983a74b00fbed5c363.png"></a>
</p>

<p>
	أضف الملف index.html الذي سيمثّل ملف الواجهة الرئيسية في موقعنا. أضف أيضًا المجلدين التاليين: css الخاص بملفات التنسيق و images المجلّد الذي سنضع فيه الصور المستخدمة بالموقع (سنحتاج إليه في دروس لاحقة). أضف أيضًا الملف styles.css ضمن المجلّد css. سيكون هذا الملف في درسنا هذا فارغًا، ولكن سنعمل على استخدامه في دروس لاحقة. ستحصل في النهاية على شكل شبيه بالتالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="76949" href="https://academy.hsoub.com/uploads/monthly_2021_09/2.png.440d15b057f721960d67267293f8a182.png" rel=""><img alt="2.png" class="ipsImage ipsImage_thumbnailed" data-fileid="76949" data-unique="lui1i6gg2" src="https://academy.hsoub.com/uploads/monthly_2021_09/2.thumb.png.4629285cc9c95be6c29ec229d292b890.png"></a>
</p>

<p>
	افتح الملف index.html بالنقر المزدوج عليه ثم انسخ الكود التالي إليه:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3972_8" style="">
<span class="dec">&lt;!doctype html&gt;</span><span class="pln">
</span><span class="tag">&lt;html</span><span class="pln"> </span><span class="atn">lang</span><span class="pun">=</span><span class="atv">"en"</span><span class="tag">&gt;</span><span class="pln">
  </span><span class="tag">&lt;head&gt;</span><span class="pln">
    </span><span class="com">&lt;!-- Required meta tags --&gt;</span><span class="pln">
    </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">charset</span><span class="pun">=</span><span class="atv">"utf-8"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"viewport"</span><span class="pln"> </span><span class="atn">content</span><span class="pun">=</span><span class="atv">"width=device-width, initial-scale=1"</span><span class="tag">&gt;</span><span class="pln">

    </span><span class="com">&lt;!-- Bootstrap CSS --&gt;</span><span class="pln">
    </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="atn">integrity</span><span class="pun">=</span><span class="atv">"sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC"</span><span class="pln"> </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="tag">&gt;</span><span class="pln">

    </span><span class="tag">&lt;title&gt;</span><span class="pln">السلام على الجميع!</span><span class="tag">&lt;/title&gt;</span><span class="pln">
  </span><span class="tag">&lt;/head&gt;</span><span class="pln">
  </span><span class="tag">&lt;body&gt;</span><span class="pln">
    </span><span class="tag">&lt;h1&gt;</span><span class="pln">Hello, world!</span><span class="tag">&lt;/h1&gt;</span><span class="pln">

    </span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"</span><span class="pln"> </span><span class="atn">integrity</span><span class="pun">=</span><span class="atv">"sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"</span><span class="pln"> </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">
  </span><span class="tag">&lt;/body&gt;</span><span class="pln">
</span><span class="tag">&lt;/html&gt;</span></pre>

<p>
	احفظ التغييرات الأخيرة. وبهذا يصبح الملف index.html جاهزًا للمعاينة.
</p>

<h2>
	معاينة الموقع ضمن خادوم تجريبي
</h2>

<p>
	إذا كنت تذكر في <a href="https://academy.hsoub.com/programming/html/bootstrap/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-5-r1315/" rel="">المقال الأول</a> من هذه السلسلة، فقد أضفنا الإضافة Live Server إلى Visual Studio Code. سنستخدم هذه الإضافة الآن لمعاينة الصفحة index.html ضمن المتصفّح الإفتراضي.
</p>

<p>
	انقر بزر الفأرة الأيمن على الملف index.html ثم اختر الأمر Open with Live Server. سيؤدي ذلك إلى فتح نافذة أو لسان من المتصفّح الافتراضي على حاسوبك، وسترى الآن الصفحة index.html وقد ظهرت محتوياتها ضمن نافذة المتصفّح. ستحصل على شكل شبيه بما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="76950" href="https://academy.hsoub.com/uploads/monthly_2021_09/3.png.31aa230da0d8d4411851820b8d0e43b1.png" rel=""><img alt="3.png" class="ipsImage ipsImage_thumbnailed" data-fileid="76950" data-unique="bkz9zfegx" src="https://academy.hsoub.com/uploads/monthly_2021_09/3.thumb.png.a9651ffeb94bfc9a370a1088dc15f800.png"></a>
</p>

<p>
	يعد هذا مؤشرًا على أنّ الأمور تجري على ما يرام. لاحظ العنوان الظاهر في شريط العنوان في نافذة المتصفّح من الشكل السابق: 127.0.0.1:5501
</p>

<p>
	العنوان 127.0.0.1 هو عنوان IP للجهاز المحلّي. أمّا المنفذ 5501 فهو المنفذ الذي تُصغي فيه الإضافة Live Server للطلبات الواردة من المتصفح، يمكن بطبيعة الحال أن يختلف هذا الرقم على حاسوبك.
</p>

<h2>
	شريط التنقل في بوتستراب
</h2>

<p>
	تمتلك معظم المواقع على الإنترنت شريطًا رئيسيًا يتموضع عادةً في الجزء العلوي من الصفحة. يحتوي هذا الشريط على روابط تساعد في التنقّل السريع بين أجزاء الموقع. من الممكن أن تكون بعض هذه الروابط على شكل أزرار. يمكن أن يؤدي النقر على بعض هذه الأزرار إلى ظهور قائمة منسدلة مثلًا تحتوي على أوامر أخرى. كما ويمكن أن يحتوي هذا الشريط على مربع نص يسمح للمستخدمين بالبحث ضمن الموقع، وغيرها من المتطلّبات الأخرى.
</p>

<p>
	يدعم بوتستراب شريط القائمة هذا بصورة ممتازة. فعند ضبط بعض أصناف التنسيق القليلة ستحصل على شريط تنقّل عصري يلبّي احتياجاتك المتنوّعة.
</p>

<h3>
	شريط تنقل بسيط
</h3>

<p>
	لنبدأ بتشكيل شريط تنقّل بسيط. الكود التالي هو نسخة معدّلة عن <a href="https://getbootstrap.com/docs/5.1/components/navbar/#nav" rel="external nofollow">الكود الموجود في صفحة التوثيق الخاصة الخاصة بشريط التنقّل في بوتستراب</a>. انسخ الكود التالي إلى الملف index.html وضعه مكان العنصر <code>&lt;h1&gt;</code> الذي يحتوي على رسالة الترحيب التي رأيناها في الفقرة السابقة:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3972_10" style="">
<span class="tag">&lt;nav</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar navbar-expand-lg navbar-light bg-light"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container-fluid"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar-brand"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">نبيه</span><span class="tag">&lt;/a&gt;</span><span class="pln">

            </span><span class="tag">&lt;ul</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar-nav me-auto"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;li</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-item"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-link active"</span><span class="pln"> </span><span class="atn">aria-current</span><span class="pun">=</span><span class="atv">"page"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">رابط فعال</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                </span><span class="tag">&lt;/li&gt;</span><span class="pln">
                </span><span class="tag">&lt;li</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-item"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-link"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">عادي1</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                </span><span class="tag">&lt;/li&gt;</span><span class="pln">
                </span><span class="tag">&lt;li</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-item"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-link"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">عادي2</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                </span><span class="tag">&lt;/li&gt;</span><span class="pln">
                </span><span class="tag">&lt;li</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-item"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-link disabled"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="pln"> </span><span class="atn">tabindex</span><span class="pun">=</span><span class="atv">"-1"</span><span class="pln"> </span><span class="atn">aria-disabled</span><span class="pun">=</span><span class="atv">"true"</span><span class="tag">&gt;</span><span class="pln">غير فعال</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                </span><span class="tag">&lt;/li&gt;</span><span class="pln">
            </span><span class="tag">&lt;/ul&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/nav&gt;</span></pre>

<p>
	غيّر أيضًا عنوان الصفحة (ضمن الوسم <code>title</code>) ليصبح "دورات نبيه".
</p>

<p>
	بعد حفظ التغييرات ستحصل على الشكل التالي في المتصفح (إذا لم تظهر التغييرات فورًا، يمكنك تحديث الصفحة ضمن المتصفّح):
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="76951" href="https://academy.hsoub.com/uploads/monthly_2021_09/4.png.3c36c4214544ba6907bdd1aad45126db.png" rel=""><img alt="4.png" class="ipsImage ipsImage_thumbnailed" data-fileid="76951" data-unique="swqtw23jc" src="https://academy.hsoub.com/uploads/monthly_2021_09/4.thumb.png.6e9e75a86e8765c7760317f6ee9f2f83.png"></a>
</p>

<h3>
	شرح الكود السابق
</h3>

<p>
	سنتحدّث بشيء من الإسهاب عن الكود السابق كونه أساسي في بناء أشرطة التنقّل في بوتستراب. إذا نظرت إلى الكود السابق سترى أنّ العنصر الأساسي المستخدم هنا هو <code>nav</code> وهو عنصر HTML يُستخدم عادةً عندما نريد بناء شريط تنقل في صفحات الويب. يمكن أيضًا استخدام عنصر <code>div</code> عادي بدلًا من العنصر <code>nav</code>، ولكن عندها سنحتاج إلى بعض التعديلات الطفيفة. لذلك سنبقي على العنصر <code>nav</code>.
</p>

<p>
	لاحظ أيضًا أصناف التنسيق المستخدمة مع العنصر <code>nav</code> التي تأتي مع بوتستراب:
</p>

<pre class="ipsCode">
navbar 
navbar-expand-lg 
navbar-light 
bg-light
</pre>

<p>
	سنتحدّث هنا قليلًا عن هذه الأصناف الأربعة:
</p>

<ul>
<li>
		الصنف <code>navbar</code> فهو يمنح العنصر <code>nav</code> هيئة شريط التنقّل مباشرةً. حيث يصبح متجاوبًا مع قياسات الشاشات المختلفة، ويقبل احتواء العناصر المفيدة الأخرى مثل العلامة التجارية branding الخاصة بالموقع، وروابط التنقّل، وإمكانية ضم الأزرار ضمن قائمة مطوية واحدة تفتح بزر collapsing للحد من عرض الشريط في حال الشاشات الصغيرة كما سنرى ذلك فيما بعد.
	</li>
	<li>
		يحتاج الصنف <code>navbar</code> كي يعمل بطريقة صحيحة إلى الصنف <code>navbar-expand-lg</code> وأخواته <code>navbar-expand-{-sm|-md|-lg|-xl|-xxl} ‎</code>. ووظيفة هذه الأصناف هي السماح بنشر محتويات شريط التنقّل بشكل أفقي. جرب أن تزيل هذا الصنف، لتجد أنّ محتويات شريط التنقّل قد أصبحت مكدّسة عموديًا.
	</li>
	<li>
		بالنسبة للصنف <code>navbar-light</code> فهو يتحكم بالنمط theme يوجد ثلاثة أنماط رئيسية في بوتستراب هي: النمط الفاتح <code>navbar-light</code> والنمط الغامق <code>navbar-dark</code> والنمط الرئيسي <code>navbar-primary</code>. تتحكم هذه الأصناف بلون الخط للعناصر الموجودة ضمن شريط التنقّل <code>nav</code>. تعمل الأصناف الثلاثة السابقة مع الصنف الذي يتحكم بلون الخلفية لشريط التنقّل وهو عبارة عن مجموعة من الأصناف مثل: <code>bg-light</code> و <code>bg-dark</code> و <code>bg-primary</code> و <code>bg-success</code> و <code>bg-warning</code>.
	</li>
	<li>
		لكي تحصل على أفضل النتائج استخدم الصنف <code>bg-light</code> مع الصنف <code>navbar-light</code> والصنف <code>bg-dark</code> مع الصنف <code>navbar-dark</code>. الحرفان <code>bg</code> من الصنف <code>bg-light</code> أو الصنف <code>bg-dark</code> أو غيرهما، يعبّران عن الكلمة <code>background</code> أي الخلفية. يجعل الصنف <code>bg-light</code> خلفية شريط التنقّل ذا لون فاتح. كما أنّ الصنف <code>bg-dark</code> يجعل الخلفية تبدو غامقة، وهكذا.
	</li>
	<li>
		بالنسبة للأصناف الباقية، جرّب استخدام مزيج من ‎أصناف التنسيق مع أصناف الخلفية لكي تختار منها ما يناسبك. جرب مثلًا النمط الغامق <code>navbar-dark</code> مع <code>bg-success</code> وهكذا.
	</li>
</ul>
<p>
	يدعم شريط التنقّل في بوتستراب (ومحتوياته أيضًا) الشكل المرن أو المتدفق Fluid في التصميم. بمعنى أنّ شريط التنقّل ينتشر أفقيًا ليحاول تعبئة عرض الشاشة المتاح. يمكن استخدام أي حاوية Container تراها مناسبة للتحكّم في مدى الانتشار الأفقي. هذا ما يبرّر استخدامنا لعنصر <code>div</code> مع الصنف<code>container-fluid</code> الموجود ضمن العنصر <code>nav</code> مباشرةً (انظر الكود السابق). في هذه الحالة استخدمنا هذه الحاوية لضبط الانتشار الأفقي لمحتويات شريط التنقّل. على العموم يمكننا استخدام نفس التقنية تمامًا مع العنصر <code>nav</code> نفسه. سنتحدث عن الحاويات لاحقًا في هذه السلسلة. ولكن إذا أردت معرفة فائدة وجود هذه الحاوية. أزل صنف التنسيق <code>container-fluid</code> من عنصر <code>div</code> الذي يأتي ضمن العنصر <code>nav</code> مباشرةً لترى كيف يؤثّر وجودها على محتويات شريط التنقّل.
</p>

<p>
	سنضع ضمن عنصر <code>div</code> (الذي يحوي الصنف <code>container-fluid</code>) محتويات شريط التنقّل. والتي تنحصر في مثالنا هذا على اسم الموقع، بالإضافة إلى أربعة عناصر توضّح أنواع الروابط التي يمكن وضعها ضمن شريط التنقّل. قطعة الكود التالية موجودة ضمن عنصر <code>div‎</code> ذا الصنف <code>‎container-fluid‎</code> من الكود السابق:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3972_12" style="">
<span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar-brand"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">نبيه</span><span class="tag">&lt;/a&gt;</span><span class="pln">

            </span><span class="tag">&lt;ul</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar-nav me-auto"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;li</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-item"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-link active"</span><span class="pln"> </span><span class="atn">aria-current</span><span class="pun">=</span><span class="atv">"page"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">رابط فعال</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                </span><span class="tag">&lt;/li&gt;</span><span class="pln">
                </span><span class="tag">&lt;li</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-item"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-link"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">عادي1</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                </span><span class="tag">&lt;/li&gt;</span><span class="pln">
                </span><span class="tag">&lt;li</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-item"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-link"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">عادي2</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                </span><span class="tag">&lt;/li&gt;</span><span class="pln">
                </span><span class="tag">&lt;li</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-item"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-link disabled"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="pln"> </span><span class="atn">tabindex</span><span class="pun">=</span><span class="atv">"-1"</span><span class="pln"> </span><span class="atn">aria-disabled</span><span class="pun">=</span><span class="atv">"true"</span><span class="tag">&gt;</span><span class="pln">غير فعال</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                </span><span class="tag">&lt;/li&gt;</span><span class="pln">
            </span><span class="tag">&lt;/ul&gt;</span></pre>

<p>
	نضع عادةً اسم الموقع ضمن عنصر الارتباط التشعبي <code>a</code>. سيكون لهذا العنصر التنسيق <code>navbar-brand</code> ليُنسّق على شكل علامة تجارية أو أيقونة واضحة للموقع. يمكن بالطبع إضافة صورة لاسم الموقع بإضافة عنصر صورة كما سنرى فيما بعد.
</p>

<p>
	بعد عنصر الارتباط التشعبي وضعنا عنصر القائمة غير المرتبة <code>ul</code> وهي التي ستحوي الروابط الرئيسية على شريط التنقّل. لاحظ كيف وضعنا الصنف <code>navbar-nav</code> لهذه القائمة كي تنسجم مع شريط التنقل الموضوعة ضمنه. ولاحظ أيضًا وجود صنف آخر هو <code>me-auto</code>. أول حرفين من اسم هذا الصنف يشيران إلى الكلمتين margin end، وتعنيان الهامش من النهاية. مع الكلمة <code>‎-auto</code> يعني ذلك أنّنا سنجعل الهامش من الطرف النهائي تلقائي أي أنّه سيأخد أكبر هامش ممكن من الطرف النهائي، وهذا ما سيجعل عنصر القائمة يُزاح كاملًا نحو اليسار (نحو البداية) بجوار اسم الموقع (جرب إزالة هذا الصنف وانظر ماذا سيحدث).
</p>

<p>
	قد تتسائل عن سبب استخدام تعبير "الهامش من النهاية" في حين أنّه كان من الممكن استخدام التعبير "الهامش من اليمين" فحسب! الجواب على ذلك بسيط. باستخدام هذا التعبير الرائع نستطيع إكساب موقعنا قابلية الاتجاه من اليمين إلى اليسار بكل بساطة. فعندما يكون اتجاه موقعنا من اليسار إلى اليمين تكون البداية من اليسار والنهاية من اليمين أمًا عندما يكون اتجاه موقعنا من اليمين إلى اليسار يحدث العكس! بمعنى آخر أنّه يمكن تعديل اتجاه موقعنا البسيط كاملًا ليصبح من اليمين إلى اليسار (بدلًا من الوضع الحالي) وذلك بتعديل بسيط جدًا في الموقع كما سنرى ذلك بعد قليل.
</p>

<p>
	قبل الإصدار 5 من بوتستراب، كان من الممكن الوصول إلى نفس النتيجة من خلال استخدام الصنف <code>mr-auto</code> وهو اختصار للكلمات: margin right auto، وتعني أنّ الهامش من الطرف الأيمن سيكون تلقائي. من الواضح أنّ هذا الصنف مفيد عندما عندما يكون اتجاه الصفحة من اليسار إلى اليمين. ولكن عندما يكون اتجاه الصفحة من اليمين إلى اليسار، سيكون استخدام هذا الصنف غير مناسب كما هو واضح.
</p>

<p>
	هذا ما كان يجبر المطورين على إنشاء قالبين منفصلين لصفحات الموقع في حال كان هناك حاجة لدعم لغتين باتجاهين مختلفين (مثل اللغة العربية، واللغة الانجليزية).
</p>

<p>
	وصلنا الآن إلى عناصر القائمة <code>li</code>. في الحقيقة هي عناصر بسيطة يحمل كل منها الصنف <code>nav-item</code>، ويحوي كل منها عنصر ارتباط تشعبي <code>a</code>. ولكل عنصر ارتباط تشعبي منها الصنف <code>nav-link</code>. العنصر الأوّل الذي يحوي النص "رابط فعال" سيكون له بالإضافة للصنف <code>nav-link</code> الصنف <code>active</code> للإشارة إلى أنّ الرابط الحالي يُشير إلى الصفحة الحالية التي تُعرض أمام المستخدم. وهذا أمر مفيد كما هو واضح. أمّا العنصران الثاني والثالث اللذان يحملان النص "عادي1" و "عادي2" على الترتيب فهما عنصران عاديان افتراضيان على شريط التنقّل. أمّا العنصر الأخير: "غير فعّال" فقد نحتاج أحيانًا إلى جعل أحد الارتباطات على شريط التنقّل غير فعّالة، وهذا يمكن الحصول عليه بتطبيق الصنف <code>disabled</code> كما هو واضح.
</p>

<p>
	هذا كل شيء! في الفقرة التالية سنحوّل الموقع السابق إلى الاتجاه الذي يناسب اللغة العربية.
</p>

<h2>
	تعديل الموقع ليدعم الاتجاه من اليمين إلى اليسار
</h2>

<p>
	بقي علينا إضافة بعض اللمسات الأخيرة لكي نُكسب الموقع الاتجاه المناسب لدعم اللغة العربية. في البداية أود أن أشير إلى أنّ ميزة الاتجاه من اليمين إلى اليسار RTL هي ميزة تجريبية في بوتستراب حتى وقت كتابة هذا المقال. ولكن ذلك لا يمنع بالطبع من استخدامها لأنّه من المتوقّع في الفترة القريبة القادمة أن تصبح نهائية بعد التأكّد من استقرارها.
</p>

<p>
	نحتاج لاستخدام الاتجاه من اليمين إلى اليسار RTL إلى إجراء ثلاثة تعديلات بسيطة ضمن الملف index.html:
</p>

<p>
	1- استبدال القيمة <code>ar</code> بالقيمة <code>en</code> للسمة <code>lang</code> ضمن الوسم <code>html</code>. 2- إضافة سمة جديدة للوسم <code>html</code> وهي السمة <code>dir</code> وهي مسؤولة عن تحديد اتجاه الصفحة. سنسند القيمة <code>rtl</code> لها. 3- استبدال العنصر التالي بالعنصر <code>link</code> المسؤول عن استيراد مكتبة التنسيق الخاصة ببوتستراب:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3972_14" style="">
<span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.rtl.min.css"</span><span class="pln"> </span><span class="atn">integrity</span><span class="pun">=</span><span class="atv">"sha384-gXt9imSW0VcJVHezoNQsP+TNrjYXoGcrqBZJpry9zJt8PCQjobwmhMGaDHTASo9N"</span><span class="pln"> </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="tag">&gt;</span></pre>

<p>
	هذه نسخة من مكتبة بوتستراب التي تدعم ‎ (لاحظ اسمها bootstrap.rtl.min.css). يجب أن يكون الكود النهائي الموجود ضمن الملف index.html مماثلًا لما يلي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3972_16" style="">
<span class="dec">&lt;!doctype html&gt;</span><span class="pln">
</span><span class="tag">&lt;html</span><span class="pln"> </span><span class="atn">lang</span><span class="pun">=</span><span class="atv">"ar"</span><span class="pln"> </span><span class="atn">dir</span><span class="pun">=</span><span class="atv">"rtl"</span><span class="tag">&gt;</span><span class="pln">

</span><span class="tag">&lt;head&gt;</span><span class="pln">
    </span><span class="com">&lt;!-- Required meta tags --&gt;</span><span class="pln">
    </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">charset</span><span class="pun">=</span><span class="atv">"utf-8"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"viewport"</span><span class="pln"> </span><span class="atn">content</span><span class="pun">=</span><span class="atv">"width=device-width, initial-scale=1"</span><span class="tag">&gt;</span><span class="pln">

    </span><span class="com">&lt;!-- Bootstrap CSS --&gt;</span><span class="pln">
    </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.rtl.min.css"</span><span class="pln"> </span><span class="atn">integrity</span><span class="pun">=</span><span class="atv">"sha384-gXt9imSW0VcJVHezoNQsP+TNrjYXoGcrqBZJpry9zJt8PCQjobwmhMGaDHTASo9N"</span><span class="pln"> </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="tag">&gt;</span><span class="pln">

    </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"/css/styles.css"</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">

    </span><span class="tag">&lt;title&gt;</span><span class="pln">دورات نبيه</span><span class="tag">&lt;/title&gt;</span><span class="pln">
</span><span class="tag">&lt;/head&gt;</span><span class="pln">

</span><span class="tag">&lt;body&gt;</span><span class="pln">
    </span><span class="tag">&lt;nav</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar navbar-expand-lg navbar-light bg-light"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"container-fluid"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar-brand"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">نبيه</span><span class="tag">&lt;/a&gt;</span><span class="pln">

            </span><span class="tag">&lt;ul</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"navbar-nav me-auto"</span><span class="tag">&gt;</span><span class="pln">
                </span><span class="tag">&lt;li</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-item"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-link active"</span><span class="pln"> </span><span class="atn">aria-current</span><span class="pun">=</span><span class="atv">"page"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">رابط فعال</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                </span><span class="tag">&lt;/li&gt;</span><span class="pln">
                </span><span class="tag">&lt;li</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-item"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-link"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">عادي1</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                </span><span class="tag">&lt;/li&gt;</span><span class="pln">
                </span><span class="tag">&lt;li</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-item"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-link"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="tag">&gt;</span><span class="pln">عادي2</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                </span><span class="tag">&lt;/li&gt;</span><span class="pln">
                </span><span class="tag">&lt;li</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-item"</span><span class="tag">&gt;</span><span class="pln">
                    </span><span class="tag">&lt;a</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"nav-link disabled"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"#"</span><span class="pln"> </span><span class="atn">tabindex</span><span class="pun">=</span><span class="atv">"-1"</span><span class="pln"> </span><span class="atn">aria-disabled</span><span class="pun">=</span><span class="atv">"true"</span><span class="tag">&gt;</span><span class="pln">غير فعال</span><span class="tag">&lt;/a&gt;</span><span class="pln">
                </span><span class="tag">&lt;/li&gt;</span><span class="pln">
            </span><span class="tag">&lt;/ul&gt;</span><span class="pln">
        </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;/nav&gt;</span><span class="pln">


    </span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"</span><span class="pln">
        </span><span class="atn">integrity</span><span class="pun">=</span><span class="atv">"sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"</span><span class="pln">
        </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">
</span><span class="tag">&lt;/body&gt;</span><span class="pln">

</span><span class="tag">&lt;/html&gt;</span></pre>

<p>
	عاين الملف index.html باستخدام الإضافة Live Server لتحصل على شكل شبيه بما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="76952" href="https://academy.hsoub.com/uploads/monthly_2021_09/5.png.95a2c2e086426304ad57314e0356db2e.png" rel=""><img alt="5.png" class="ipsImage ipsImage_thumbnailed" data-fileid="76952" data-unique="pbfaaf2p1" src="https://academy.hsoub.com/uploads/monthly_2021_09/5.thumb.png.5a7abbabe05a579bb3829360ec6ddbe0.png"></a>
</p>

<p>
	لاحظ أنّنا لم نمس كود HTML مطلقًا. وذلك بسبب استخدمنا لأصناف تنسيقية تصلح للاستخدام في طريقتي العرض يمين إلى يسار RTL أو يسار إلى يمين LTR. ففي حالتنا هذه استخدمنا الصنف <code>me-auto</code> المسؤول عن سلوك الهامش من النهاية، والذي أصبح في هذه الحالة من جهة اليسار بدلًا من جهة اليمين كما في الفقرة السابقة.
</p>

<p>
	يمكنك تنزيل شيفرة المقال من الملف <a class="ipsAttachLink" href="https://academy.hsoub.com/applications/core/interface/file/attachment.php?id=96184" data-fileid="96184" rel="">hsoub-bootstrap5-ch02.zip</a>.
</p>

<h2>
	خاتمة
</h2>

<p>
	أرجو أن تكون قد استمتعت بهذا الدرس! لقد تعلّمنا الكثير في هذا الدرس حول شريط التنقّل في بوتستراب. حيث بنينا شريط تنقّل بسيط، وأسهبنا في الشرح حول أجزاء هذا الشريط، وكيفية الإستفادة من التقنيات الجديدة في بوتستراب 5 لتحويل اتجاه الصفحة لتصبح من اليمين إلى اليسار. وفي الدرس التالي سنتحدّث عن بنية صفحة الويب باستخدام بوتستراب.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/programming/html/bootstrap/10-%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D8%B4%D8%A7%D8%A6%D8%B9%D8%A9-%D8%B9%D9%86%D8%AF-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-bootstrap-r190/" rel="">10 أخطاء شائعة عند استخدام إطار العمل Bootstrap</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/html/bootstrap/%D8%A8%D9%86%D8%A7%D8%A1-%D9%82%D8%A7%D8%A6%D9%85%D8%A9-%D8%B4%D8%AC%D8%B1%D9%8A%D8%A9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-r623/" rel="">بناء قائمة شجرية باستخدام البوتستراب</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/html/bootstrap/%D8%AA%D8%B5%D9%85%D9%8A%D9%85-%D8%B5%D9%81%D8%AD%D8%A9-%D9%85%D9%88%D9%82%D8%B9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-3-bootstrap-%D8%A7%D9%84%D8%AC%D8%B2%D8%A1-%D8%A7%D9%84%D8%A3%D9%88%D9%84-r90/" rel="">تصميم صفحة موقع باستخدام 3 Bootstrap - الجزء الأول</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1316</guid><pubDate>Fri, 17 Sep 2021 15:00:00 +0000</pubDate></item><item><title>&#x645;&#x62F;&#x62E;&#x644; &#x625;&#x644;&#x649; &#x625;&#x637;&#x627;&#x631; &#x627;&#x644;&#x639;&#x645;&#x644; &#x628;&#x648;&#x62A;&#x633;&#x62A;&#x631;&#x627;&#x628; 5</title><link>https://academy.hsoub.com/programming/css/bootstrap/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-5-r1315/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2021_09/614057378b15d_Bootstrap5Thefirststeps-edit1.png.6fbe8853fc33ffc781ac7ee195a8bf72.png" /></p>

<p>
	مرحبًا بك في هذه السلسلة التي سنتحدث من خلالها عن إطار العمل Bootstrap 5 ذلك الإطار الذي يهيمن على معظم عمليات التطوير التي تحدث في الواجهة الأمامية Front-End Development في مواقع الإنترنت عمومًا.
</p>

<p>
	لا تفترض هذه السلسلة أن يكون لديك أي فكرة مسبقة عن بوتستراب Bootstrap (ولو أنّ بعض المعرفة القليلة مرحّب بها)، في حين أنّ الإلمام بـ HTML و أساسيات CSS هو أمر ضروري للمتابعة في هذه السلسلة. رغم أنّ بوتستراب يستخدم جافاسكريبت في بعض المكوّنات إلى أنّه ليس من الضروري أن يكون لديك معرفة بها لكي تتعلّم بوتستراب، ولو أنّ الإلمام بجافاسكريبت يُعدّ بديهيًا لمطوري الواجهة الأمامية عمومًا.
</p>

<p>
	هذا هو المقال الأوّل في هذه السلسلة، وهو مقال تمهيدي بطبيعة الحال، وفيه سنتحدّث عن النقاط التالية:
</p>

<ul>
<li>
		ماهو بوتستراب؟
	</li>
	<li>
		مالجديد في بوتستراب 5؟
	</li>
	<li>
		إعداد بوتستراب للعمل.
	</li>
	<li>
		استخدام محرر برمجي مناسب
	</li>
	<li>
		ما الذي سنبنيه في هذه السلسلة؟
	</li>
</ul>
<h2>
	ماهو بوستراب؟
</h2>

<p>
	بوتستراب ببساطة هو إطار عمل Framework متكامل مبني على CSS و جافاسكريبت JavaScript يُستخدم لتنسيق صفحات الويب وإكسابها نواح جمالية بدون الحاجة إلى استخدام تنسيقات معقدة من CSS. يدعم بوتستراب مبدأ تنسيق الأجهزة المحمولة أولًا Mobile First Style وهذا يعني توافقية عالية مع الأجهزة المحمولة ذات الشاشات الصغيرة.
</p>

<p>
	عندما يُذكر بوتستراب فأول ما يتبادر إلى الذهن هو السرعة والأناقة والسهولة والتصميم المتجاوب Responsive Design مع مختلف أنواع الشاشات.
</p>

<p>
	كان أول من طور بوتستراب شركة تويتر الشهيرة، وبعد عام تقريبًا، جعلته مفتوح المصدر ومتاحًا بالكامل من خلال <a href="https://github.com/twbs" rel="external nofollow">GitHub</a>.
</p>

<p>
	يستند بوتستراب كما أشرنا مسبقًا إلى CSS فهو يوفّر كمّا كبيرًا من الجهد لتنسيق المكوّنات في صفحة الويب. يهدف بوتستراب كما هو واضح إلى تبسيط عمليات التصميم التي تحدث في الواجهة الأمامية Front-End وجعلها معيارية. يسهّل هذا الأمر إلى حدّ بعيد من حياة المصممين والمطورين على حدّ سواء، ويجعل عملية انضمام مصمّم جديد إلى فريق العمل في شركة تعتمد بوتستراب أمرًا يسيرًا نسبيًا.
</p>

<p>
	استخدام بوتستراب سهل جدًا. فيمكن من خلال إضافة صنف Class أو أكثر إلى عنصر HTML أن تحصل على أثر فوري يحوّل هذا العنصر إلى شكل جميل وعصري. انظر مثلًا إلى شيفرة HTML التالية:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_4746_7" style="">
<span class="tag">&lt;button&gt;</span><span class="pln">مرحبًا</span><span class="tag">&lt;/button&gt;</span></pre>

<p>
	سيولّد الكود السابق الزر البسيط التالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="76944" href="https://academy.hsoub.com/uploads/monthly_2021_09/1.png.fcb66615902adbf3b1f3266ec0ae8eaf.png" rel=""><img alt="1.png" class="ipsImage ipsImage_thumbnailed" data-fileid="76944" data-unique="pj0oxx0ov" src="https://academy.hsoub.com/uploads/monthly_2021_09/1.png.fcb66615902adbf3b1f3266ec0ae8eaf.png"></a>
</p>

<p>
	سأضيف الآن صنفان بسيطان من بوتستراب إلى الكود السابق:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_4746_9" style="">
<span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"btn btn-primary"</span><span class="tag">&gt;</span><span class="pln">مرحبًا</span><span class="tag">&lt;/button&gt;</span></pre>

<p>
	ستحصل على الشكل الجميل التالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="76945" href="https://academy.hsoub.com/uploads/monthly_2021_09/2.png.9e73e760ecd0c19dde34a4dd7cbe704a.png" rel=""><img alt="2.png" class="ipsImage ipsImage_thumbnailed" data-fileid="76945" data-unique="md92w35n9" src="https://academy.hsoub.com/uploads/monthly_2021_09/2.png.9e73e760ecd0c19dde34a4dd7cbe704a.png"></a>
</p>

<p>
	لاحظ كيف اكتسب هذا الزر الألوان المناسبة بالإضافة إلى حاشية Padding مناسبة أيضًا وبتلقائية حول النص الموجود ضمن الزر. وأيضًا كيف أصبحت حواف الزر منحنية. توجد العديد من التشكيلات الأخرى التي يمكن اكسابها للأزرار كما سنرى فيما بعد.
</p>

<h2>
	مالجديد في بوتستراب 5؟
</h2>

<p>
	يُعَد الإصدار 5 إصدارًا رئيسيًا وهو الأحدث من بوتستراب حاليًا (وقت كتابة هذا المقال)، وكما جرت العادة، فهناك العديد من التغييرات التي طرأت على الإصدار الذي يسبقه (الإصدار 4) فمثًلا فقد أزيل المكوّن Jumbotron بالإضافة إلى إزالة الدعم عن المتصفحين IE 10 و IE 11، وأيضًا أزيل عدد من أصناف التنسيق التي كانت موجودة في الإصدار 4.
</p>

<p>
	هناك تغييرات أخرى قد حدثت ضمن مخطط الصفحة حيث أضيف قياس آخر جديد لم يكن موجودًا في الإصدار السابق وهو القياس xxl. و توجد تحسينات أخرى في نظام الألوان.
</p>

<p>
	كما أضيف دعم أيقونات SVG جميلة ومتنوّعة ومفتوحة المصدر أيضًا. يمكنك مع مكتبة الأيقونات هذه الاستغناء عن مكتبات أيقونات إضافية مثل Font Awesome.
</p>

<p>
	في الإصدار 5 أيضًا لم يعد هناك حاجة لاستخدام المكتبة jQuery بعد الآن (بعض المزايا الموجودة في بوتستراب تحتاج إلى جافاسكريبت)، فقد انتقل مطوّرو بوتستراب إلى استخدام جافاسكريبت فقط، مع إمكانية الإبقاء على استخدام jQuery في حال الرغبة.
</p>

<p>
	أود أن أركّز هنا على ميزة مهمة أضيفت إلى بوتستراب 5، طالما انتظرها المصممين والمطورين العرب! وهي دعم الاتجاه من اليمين إلى اليسار ‏ RTL مما يسهّل حياتهم إلى حدّ كبير.
</p>

<h2>
	إعداد بوتستراب للعمل
</h2>

<p>
	يمكن تضمين بوتستراب في صفحة الويب التي نعمل بها بإدراجه عن طريق العنصر <code>link</code> ضمن العنصر <code>head</code> في ترويسة الصفحة، ويمكن اختيار تضمين بوتستراب من مزوّد محتوى على الإنترنت CDN وهو الخيار الأفضل. ومن الممكن كذلك تنزيل نسخة من بوتستراب محليًا ومن ثمّ تضمينها ضمن صفحة الويب التي تعمل بها. سنعمل في هذه السلسلة على الخيار الأول، أي أنّنا سنستخدم مزوّد محتوى CDN.
</p>

<p>
	سنعتمد القالب الأساسي التالي أثناء عملنا على بوتستراب:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_4746_11" style="">
<span class="dec">&lt;!doctype html&gt;</span><span class="pln">
</span><span class="tag">&lt;html</span><span class="pln"> </span><span class="atn">lang</span><span class="pun">=</span><span class="atv">"en"</span><span class="tag">&gt;</span><span class="pln">
  </span><span class="tag">&lt;head&gt;</span><span class="pln">
    </span><span class="com">&lt;!-- Required meta tags --&gt;</span><span class="pln">
    </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">charset</span><span class="pun">=</span><span class="atv">"utf-8"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"viewport"</span><span class="pln"> </span><span class="atn">content</span><span class="pun">=</span><span class="atv">"width=device-width, initial-scale=1"</span><span class="tag">&gt;</span><span class="pln">

    </span><span class="com">&lt;!-- Bootstrap CSS --&gt;</span><span class="pln">
    </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="atn">integrity</span><span class="pun">=</span><span class="atv">"sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC"</span><span class="pln"> </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="tag">&gt;</span><span class="pln">

    </span><span class="tag">&lt;title&gt;</span><span class="pln">Hello, world!</span><span class="tag">&lt;/title&gt;</span><span class="pln">
  </span><span class="tag">&lt;/head&gt;</span><span class="pln">
  </span><span class="tag">&lt;body&gt;</span><span class="pln">
    </span><span class="tag">&lt;h1&gt;</span><span class="pln">السلام على الجميع</span><span class="tag">&lt;/h1&gt;</span><span class="pln">

    </span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"</span><span class="pln"> </span><span class="atn">integrity</span><span class="pun">=</span><span class="atv">"sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"</span><span class="pln"> </span><span class="atn">crossorigin</span><span class="pun">=</span><span class="atv">"anonymous"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">
  </span><span class="tag">&lt;/body&gt;</span><span class="pln">
</span><span class="tag">&lt;/html&gt;</span></pre>

<p>
	لاحظ أنّه وقبل نهاية وسم الإغلاق <code>‎&lt;/body&gt;‎</code> وضعنا الوسم <code>&lt;script&gt;</code> الذي يسمح بتحميل كود جافاسكريبت الذي تحتاجه بعض مكوّنات بوتستراب لكي تعمل عملًا صحيحًا.
</p>

<h2>
	استخدام محرر برمجي مناسب
</h2>

<p>
	توجد العديد من الخيارات المتاحة لاستخدام محرّر برمجي مناسب في سياق عملك كمطوّر واجهة أمامية، ومن المحرّرات الشهيرة Visual Studio Code و Sublime و Atom. بالنسبة لي أفضل استخدام Visual Studio Code من مايكروسوفت لما يتمتع به من مرونة ودعم كبيرين.
</p>

<p>
	لتثبيت محرر vs code انتقل إلى <a href="https://code.visualstudio.com/" rel="external nofollow">الموقع الخاص به لتنزيله</a>. سيظهر زر التحميل في الصفحة الرئيسية. عندما تنتهي من تنزيله وتثبيته، افتحه وانتقل إلى قسم الإضافات Extensions ضمنه في الشريط الموجود على الناحية اليسرى كما في الشكل التالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="76946" href="https://academy.hsoub.com/uploads/monthly_2021_09/3.png.09e9079620a55388f95d0551b0a9c89d.png" rel=""><img alt="3.png" class="ipsImage ipsImage_thumbnailed" data-fileid="76946" data-unique="osub7on7x" src="https://academy.hsoub.com/uploads/monthly_2021_09/3.thumb.png.4e2c705595c87a7b8496687bb2543d10.png"></a>
</p>

<p>
	بعد ذلك وفي خانة البحث في الأعلى اكتب Live Server للبحث عن هذه الإضافة التي ستسمح لك بتشغيل خادوم مبسّط على حاسوبك الشخصي مما يسمح لنا بتجريب الشيفرة التي نكتبها مباشرةً على المتصفح الافتراضي الموجود على حاسوبنا. بعد اختيار الإضافة انقر الزر Install في الناحية الخاصة بشرح الإضافة (في الطرف الأيمن) لتثبيتها.
</p>

<p>
	بنفس الأسلوب السابق تمامًا ننصحك بتثبيت إضافة Auto Rename Tag، حيث تساعد هذه الإضافة على التعديل التلقائي لوسم ما عند تعديل الوسم المرافق له.
</p>

<h2>
	ما الذي سنبنيه في هذه السلسلة؟
</h2>

<p>
	سنبني في هذه السلسلة موقع ويب بسيط عبارة عن صفحة واحدة يمكن أن يُعتبر كقالب يشرح مزايا بوتستراب 5 التي سنتناولها تباعًا أثناء تقدمنا في هذه السلسلة. هذا الموقع عبارة عن موقع يبيع دورات تعليمية على الإنترنت.
</p>

<p>
	يوفر الموقع إمكانية التسجيل الجديد للمستخدمين بالإضافة إلى تسجيل دخول للمستخدمين السابقين. كما سيعرض آخر الدورات التدريبية (المنتجات) المتوفرة، وأيضًا الدورات الأكثر مبيعًا. كما سنوفّر ميزة سلة المشتريات التي تسمح للمستخدم بالتسوّق من خلال اختيار الدورات التي يرغب بشرائها. بالإضافة إلى ما سبق سنضيف بعض الأقسام على الصفحة الرئيسية التي توفّر بعض المعلومات عن الموقع وبنفس الوقت توضّح لنا كيفية استخدام مزايا بوتستراب 5 المتنوّعة. سنعمل على بناء هذا الموقع شيئًا فشيئًا أثناء عملنا في هذه السلسلة.
</p>

<p>
	انظر إلى الشكل التالي الذي يعطيك شكلًا تقريبيًا لما سنحصل عليه في نهاية هذه السلسلة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="76947" href="https://academy.hsoub.com/uploads/monthly_2021_09/4.png.69afad90fdce5bfc1ef655a64b2ea684.png" rel=""><img alt="4.png" class="ipsImage ipsImage_thumbnailed" data-fileid="76947" data-unique="pfdeqwp78" src="https://academy.hsoub.com/uploads/monthly_2021_09/4.thumb.png.6cd309825a006d06a092b68656566fcc.png"></a>
</p>

<p style="text-align: center;">
	<a href="https://unsplash.com/" rel="external nofollow">مصدر الصور</a>
</p>

<p>
	في آخر هذه السلسلة سنتعلّم كيف نرفع الموقع كاملًا على إحدى الإستضافات لكي يصبح بالإمكان معاينته بصورة حية.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/programming/html/bootstrap/10-%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D8%B4%D8%A7%D8%A6%D8%B9%D8%A9-%D8%B9%D9%86%D8%AF-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-bootstrap-r190/" rel="">10 أخطاء شائعة عند استخدام إطار العمل Bootstrap</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/html/bootstrap/%D8%A8%D9%86%D8%A7%D8%A1-%D9%82%D8%A7%D8%A6%D9%85%D8%A9-%D8%B4%D8%AC%D8%B1%D9%8A%D8%A9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-r623/" rel="">بناء قائمة شجرية باستخدام البوتستراب</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/html/bootstrap/%D8%AA%D8%B5%D9%85%D9%8A%D9%85-%D8%B5%D9%81%D8%AD%D8%A9-%D9%85%D9%88%D9%82%D8%B9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-3-bootstrap-%D8%A7%D9%84%D8%AC%D8%B2%D8%A1-%D8%A7%D9%84%D8%A3%D9%88%D9%84-r90/" rel="">تصميم صفحة موقع باستخدام 3 Bootstrap - الجزء الأول</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1315</guid><pubDate>Sat, 11 Sep 2021 15:00:00 +0000</pubDate></item><item><title>&#x628;&#x646;&#x627;&#x621; &#x642;&#x627;&#x626;&#x645;&#x629; &#x634;&#x62C;&#x631;&#x64A;&#x629; &#x628;&#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; &#x627;&#x644;&#x628;&#x648;&#x62A;&#x633;&#x62A;&#x631;&#x627;&#x628;</title><link>https://academy.hsoub.com/programming/css/bootstrap/%D8%A8%D9%86%D8%A7%D8%A1-%D9%82%D8%A7%D8%A6%D9%85%D8%A9-%D8%B4%D8%AC%D8%B1%D9%8A%D8%A9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A7%D9%84%D8%A8%D9%88%D8%AA%D8%B3%D8%AA%D8%B1%D8%A7%D8%A8-r623/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2018_02/5a8c0d07d28da_21(2).png.1af468dd34dcdfdf0fb51bff73a7418f.png" /></p>

<p>
	يوفر بوتستراب بيئة عمل جيدة لبناء واجهات صفحات الانترنت بشكل احترافي وسهل الاستخدام من قبل زوار الموقع، بالإضافة إلى التصاميم الجذابة المريحة للعين في التصفح والانتقال ضمن الموقع.<br>
	سنقوم اليوم ببناء قائمة شجرية قابلة للتوسع أو الطي collapse tree grid ضمن القائمة الجانبية للموقع، والتي تعد أحد الأعمدة الأساسية عند بناء المواقع القائمة في ترتيب صفحاتها على التصنيف ضمن بنية شجرية.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="27098" href="https://academy.hsoub.com/uploads/monthly_2018_02/example.gif.4e49cfd6ccd707dd6f7a1a35dece0cd2.gif" rel=""><img alt="example.gif" class="ipsImage ipsImage_thumbnailed" data-fileid="27098" data-unique="4jtvipk52" src="https://academy.hsoub.com/uploads/monthly_2018_02/example.thumb.gif.7484570482f901dcf6a4143d61b77b3f.gif"></a>
</p>

<p>
	يمكن الاستخدام في بناء القائمة الشجرية إضافة بنيت من قبل Pomazan Max ونشرها على GitHub وتخضع هذه الإضافة لشروط اتفاقية MIT من خلال استخدام ملفي <code>jquery.treegrid.js</code> و <code>jquery.treegrid.css</code><br>
	سنقوم الآن بتخصيص بناء هذه الشجرة وإكمالها.<br>
	أولًا من المهم إضافة ملفات css التي نستخدمها لبناء الشجرة وهي الملفات الخاصة بنا Main ملف الخاص بالقائمة الشجرية <code>jquery.treegrid.css</code> وملفات البوتستراب
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_4245_7" style="">
<span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"css/bootstrap.min.css"</span><span class="tag">&gt;</span><span class="pln">
  </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"css/bootstrap-theme.min.css"</span><span class="tag">&gt;</span><span class="pln">
  </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"css/main.css"</span><span class="tag">&gt;</span><span class="pln">
</span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"css/jquery.treegrid.css"</span><span class="tag">&gt;</span></pre>

<p>
	نقوم ببناء <code>panel-group</code> لنضمن داخله العقد الثلاث.<br>
	المعرف الخاص <code>id</code> والذي يملك القيمة <code>accordion</code> هو أحد معرفات bootstrap ويفيد من أجل التبديل بين العقد المفتوحة أو المطويّة
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_4245_7" style="">
<code>&lt;div class="panel-group" id="accordion"&gt;
&lt;/div&gt;
</code></pre>

<p>
	نضيف عنوان للقائمة الجانبية
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_4245_7" style="">
<code>&lt;h3&gt;Try Tree Gird Sidebar&lt;/h3&gt;
</code></pre>

<p>
	لبناء العقدة الأولى <code>node1</code> نضيف التعليمات حيث أضفنا <code>node1</code> كعنوان للقائمة التي تحته <code>node1-1...</code> ولذلك ضمناه تحت اسم الصف <code>panel-heading</code> أما بالنسبة للقائمة التي تحته فقد تم بناؤها كقائمة حيث يضاف إلى كل عنص من القائمة صف <code>list-group-item</code> وبنفس الطريقة قمنا بإضافة قائمة فرعية ضمن عنصر القائمة <code>node1-3</code>
</p>

<p style="text-align: center;">
	<img alt="01.JPG" class="ipsImage ipsImage_thumbnailed" data-fileid="27096" data-unique="bgqyynkaf" src="https://academy.hsoub.com/uploads/monthly_2018_02/01.JPG.a84374b93a81edd1508d2b07ff1d0904.JPG"></p>

<p>
	من أجل تغيير شكل العنوان لكل عقدة رئيسية <code>node1</code>، <code>node2</code>، <code>node3</code> من خلال إضافة أحد الصفوف <code>panel-info</code> والتي تعطي اللون الأزرق <code>panel-danger</code> وتعطي اللون الأحمر و <code>panel-success</code> وتعطي اللون الأخضر
</p>

<p style="text-align: center;">
	<img alt="02.JPG" class="ipsImage ipsImage_thumbnailed" data-fileid="27097" data-unique="0c9ihs92u" src="https://academy.hsoub.com/uploads/monthly_2018_02/02.JPG.4d17f130d2a45e85a2ee7224fec2c47a.JPG"></p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_4245_7" style="">
<code>&lt;div class="panel panel-info"&gt;
	&lt;div class="panel-heading"&gt;
		&lt;div class="panel-title"&gt;
			&lt;a data-toggle="collapse" data-parent="#accordion" href="#node1"&gt;Node1&lt;/a&gt;
		&lt;/div&gt;
	&lt;/div&gt;
	&lt;div id="node1" class="panel-collapse collapse in"&gt;
		&lt;div class="panel-body"&gt;
			&lt;div class="list-group-item"&gt;Node1-1&lt;/div&gt;
			&lt;div class="list-group-item"&gt;Node1-2&lt;/div&gt;
			&lt;div class="list-group-item"&gt;
				&lt;div class="panel-title"&gt;
					&lt;a data-toggle="collapse" href="#node1-3"&gt;
						Node1-3 
						&lt;span class="glyphicon glyphicon-chevron-down"&gt;&lt;/span&gt;
					&lt;/a&gt;
				&lt;/div&gt;
				&lt;div id="node1-3" class="panel-collapse collapse"&gt;
					&lt;ul class="list-group"&gt;
						&lt;li class="list-group-item"&gt;node1-3-1&lt;/li&gt;
						&lt;li class="list-group-item"&gt;node1-3-2&lt;/li&gt;
						&lt;li class="list-group-item"&gt;node1-3-3&lt;/li&gt;
					&lt;/ul&gt;
				&lt;/div&gt;
			&lt;/div&gt;
		&lt;/div&gt;
	&lt;/div&gt;
&lt;/div&gt;
</code></pre>

<p>
	وبنفس الطريقة السابقة نبني العقد <code>node2</code> و <code>node3</code><br>
	في حال أردت أي تغيير للقائمة تستطيع القيام بذلك:
</p>

<ul>
<li>
		لإضافة عقدة جديدة وعنوان جديد يتم من خلال إضافة <code>panel</code> جديد ضمن <code>panel-group</code>
	</li>
	<li>
		لإضافة عنصر تابع لـ <code>panel</code> يتم إضافته كـ <code>list-group-item</code>
	</li>
	<li>
		يمكن إضافة لكل من العقد الداخلية رابط للتتمكن من الولوج إلى صفحة مختلفة من خلال وضع اسم العقدة ضمن رمز الرابط <code>&lt;a&gt;node1-1&lt;/a&gt;</code>
	</li>
</ul>
<p>
	وفي نهاية ملف html نضيف ملفات الجافات سكربت التي نستخدمها في البوتستراب والخاص ببناء القائمة الشجرية <code>jquery.treegrid.js</code>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_4245_9" style="">
<span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"js/vendor/jquery-1.11.2.min.js"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">
</span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"js/vendor/bootstrap.min.js"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">
</span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"js/vendor/jquery.treegrid.js"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">
</span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"js/main.js"</span><span class="tag">&gt;&lt;/script&gt;</span></pre>

<p>
	ضمن ملف الجافا سكربت <code>Main.js</code> نبني التابع الذي يقوم بفتح وإغلاق كل عقدة عند النقر عليها وذلك من خلال إضافة الصف <code>active</code> عند فتح العقدة إليها
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_4245_7" style="">
<code>function openNode(evt, nodeName) {
    // Declare all variables
    var i, tablinks;

    // Get all elements with class="tablinks" and remove the class "active"
    tablinks = document.getElementsByClassName("tablinks");
    for (i = 0; i &lt; tablinks.length; i++) {
        tablinks[i].className = tablinks[i].className.replace(" active", "");
    }

    // Show the current tab, and add an "active" class to the link that opened the tab
    document.getElementById(nodeName).style.display = "block";
    evt.currentTarget.className += " active";
}
</code></pre>

<p>
	ونضيف التابع الذي يقوم ببداية تحميل الصفحة إغلاق جميع العقد التي كانت مفتوحة أي إعادة كل المتغيرات إلى الحالة الافتراضية
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_4245_7" style="">
<code>$(document).ready(function () {
    $('#accordion').find('.collapse').collapse('hide');
    var $myGroup = $('#accordion');
    $myGroup.on('show.bs.collapse', '.collapse', function () {
        $myGroup.not($(this).parents()).find('.collapse.in').collapse('hide');
    });
}
);
</code></pre>

<p>
	وبذلك نكون قد أنشأنا قائمة شجرية قابلة للطي والتوسع ديناميكية تمكّن المستخدم من الاطلاع على محتويات الموقع والانتقال بين صفحاته بسهولة
</p>
]]></description><guid isPermaLink="false">623</guid><pubDate>Tue, 20 Feb 2018 11:58:25 +0000</pubDate></item><item><title>10 &#x623;&#x62E;&#x637;&#x627;&#x621; &#x634;&#x627;&#x626;&#x639;&#x629; &#x639;&#x646;&#x62F; &#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; &#x625;&#x637;&#x627;&#x631; &#x627;&#x644;&#x639;&#x645;&#x644; Bootstrap</title><link>https://academy.hsoub.com/programming/css/bootstrap/10-%D8%A3%D8%AE%D8%B7%D8%A7%D8%A1-%D8%B4%D8%A7%D8%A6%D8%B9%D8%A9-%D8%B9%D9%86%D8%AF-%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-bootstrap-r190/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_10/bootstrap-mistakes.jpg.59aa3d73d2312de455c9215c5909f979.jpg" /></p>

<p dir="rtl">من الوهلة الأولى يبدو لنا إطار العمل هذا وكأنّه بسيط ويسهل التعامل معه، وبالطبع هو كذلك والبدء باستخدامه ليس بالأمر الصعب <a rel="external nofollow" href="http://getbootstrap.com/getting-started/">فتوثيق هذا الإطار</a> مكتوب بشكل ممتاز ويحتوي على الكثير من الشيفرات البرمجية المتعلقة باللغات HTML، CSS وجافاسكربت. وصحيح أنّ المغالطات المهمة مذكورة في ذلك التوثيق، ولكن بعض الأخطاء والمشاكل قد تكون غير ظاهرة أو قد تكون موجودة في حالات استخدام غامضة. ولأنّ إطار عمل Bootstrap يبدو بسيطًا وسهل الاستعمال فإنّ هذا الإطار انتشر كالنار في الهشيم وبدأ الكثير من المطورين باستخدامه مما أدّى إلى حدوث الكثير من الأخطاء وظهور بعض المشاكل.</p><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_10/Figure1.jpg.4587cf3aba1a609670e3022f0d631d23.jpg"><img data-fileid="5795" class="ipsImage ipsImage_thumbnailed" alt="Figure1.thumb.jpg.189906112494b6d2b5d949" src="https://academy.hsoub.com/uploads/monthly_2015_10/Figure1.thumb.jpg.189906112494b6d2b5d949e5eb578c41.jpg"></a></p><p dir="rtl">لذلك سوف نقوم في هذا المقال بسرد 10 أخطاء شائعة يقوم بها مستخدمو هذا الإطار.</p><h2 dir="rtl">الخطأ 1: إساءة فهم هذا الإطار في المقام الأول</h2><p dir="rtl">هناك بعض المفاهيم الخاطئة موجودة في عقول المطورين حول هذا الإطار، وقد يكون ذلك بسبب أنّ هذه المفاهيم غير موجودة بشكل صريح وواضح في <a rel="external nofollow" href="http://getbootstrap.com/">الموقع الخاص بإطار العمل</a> أو بسبب أنّ المطورين لا يأخذون الوقت الكافي لقراءة توثيق هذا الإطار. وقد يقوم المطورون بالقيام بالعديد من الأمور بشكل خاطئ وبعدها يلقون اللوم على إطار العمل نفسه، لذلك دعونا نوضح بعض الحقائق المهمة.</p><p dir="rtl">إنّ إطار العمل Bootstrap يُعتبر إطار عمل شامل ومتكامل ولكنه ليس ضخمًا أو هائل الحجم. ويأتي هذا الإطار بقوالب أساسية تحتوي على العديد من مكونات واجهة المستخدم مثل الجداول (tables) والنماذج (forms) والأزرار (buttons) والقوائم المنسدلة (dropdowns) والكثير الكثير. ويمكنك استخدام هذه المكونات لإنشاء واجهة تعمل على العديد من المتصفحات والأجهزة والأبعاد بأفضل شكل ممكن.</p><p dir="rtl">وصحيح أنّ إطار العمل لن يقوم بكل شيء ولكنه يوّفر مجموعة من الخيارات لتختار منها مما يساعد المطورين في التركيز على التطوير أكثر من التصميم ويساعدهم في الحصول على موقع جميل بوقت قليل.</p><p dir="rtl">وهذا الإطار مرن بحيث يمكنك التعديل عليه من إضافة وحذف حتى يتناسب مع احتياجاتك. وصحيح أنّه كان هناك بعض القيود في الإصدارات الأولية لهذا الإطار إلا أنّه الآن أصبح أفضل ويمكن تطويعه بكل سهولة.</p><h2 dir="rtl">الخطأ 2: الإعتقاد بأنك لن تحتاج إلى معرفة CSS لاستخدام هذا الإطار وبأنك لن تحتاج إلى مصمم.</h2><p dir="rtl">إذا كنت تعتقد أنّك لن تحتاج إلى معرفة CSS حتى تستخدم هذا الإطار فأنت مخطئ لا محال، فأي مطور ويب يحتاج إلى معرفة CSS وHTML5. وصحيح أنّه يوفر عليك عناء التعامل مع بعض الأمور المزعجة الخاصة بلغة CSS (مثل الـvendor prefixie) ويعطيك العديد من التنسيقات الإفتراضية إلّا أنّه يجب عليك أن تفهم لغة CSS. وقد لا تحتاج إلى معرفة كيف تعمل استعلامات الوسائط (media queries) ولكنك بالطبع سوف تحتاج إلى معرفة كيف يعمل التصميم المتجاوب بشكل عام، فأُطر العمل ليست مصممة لتعليمك CSS ولكنها قد تساعد في ذلك.</p><p dir="rtl">قد تعتقد أنّك لن تحتاج إلى مصمم إذا ما استخدمت Bootstrap، ولكن مع ذلك يجب عليك التعامل مع أحد المصممين إذا كان ذلك ممكنًا. فإحدى أهم المشاكل الموجودة حاليًا هو أنّ الكثير من المواقع أصبحت تشبه بعضها بسبب استخدام إطار عمل Bootstrap. وقد لا يكون هذا صحيحًا فهناك الملايين من المواقع المصممة باستخدام Bootstrap، فيمكنك مثلًا الدخول إلى موقع <a rel="external nofollow" href="http://expo.getbootstrap.com/">Bootstrap Expo</a> فهو عبارة عن معرض أعمال يحتوي على العديد من المواقع التي بُنيت باستخدام هذا الإطار. ألقِ نظرة عليها فقد تلهمك لبناء شيء خاص بك.</p><h2 dir="rtl">الخطأ 3: تغيير ملف CSS الإفتراضي لهذا الإطار</h2><p dir="rtl">دعنا نجعل ذلك بسيطًا ومباشرًا: لا تقم أبدًا بتعديل ملف <span style="font-family:courier new,courier,monospace;">bootstrap.css</span>.</p><p dir="rtl">إذا قمت بالتعديل على ذلك الملف فالأمور سوف تصبح معقدة وسوف تقوم بتدمير التصميم عندما تقوم بتحديث ملفات Bootstrap عند صدور إصدار جديد من هذا الإطار. يمكنك استبدال التنسيقات الإفتراضية لهذا الإطار بالتنسيقات التي تريدها (مثل colors، margins، paddings) وليس هناك حاجة إلى التعديل على ملف <span style="font-family:courier new,courier,monospace;">bootstrap.css</span> إطلاقًا.</p><p dir="rtl">لا تعرف كيفية استخدام LESS أو SASS؟ لا مشكلة في ذلك، كل ما عليك فعله هو إنشاء ملف CSS وتضع فيه التنسيقات التي تريد استبدالها من ملف <span style="font-family: 'courier new', courier, monospace; line-height: 22.4px;">bootstrap.css</span> الرئيسي. وكما ذكرنا سابقًا فمعرفة CSS أمر في غاية الأهمية حتى لو كنت تعتقد غير ذلك. فيمكنك إنشاء محددات أو فئات (classes) CSS جديدة وتضعها في ملف HTML خاصتك حتى تقوم باستبدال التنسيقات الافتراضية للـBootstrap (لا تنسَ أن تضع ملف CSS الخاص بك بعد ملفات CSS الافتراضية الخاصة بالـBootstrap حتى يعمل كل شيء بشكل صحيح).</p><p dir="rtl">ما زلت تريد معرفة المزيد والغوص في هذا الإطار بشكل أعمق؟ إذاً أقترح عليك وبشدة أن تنظر إلى الكود المصدري لملفات LESS فبالتأكيد سوف يتضح لك كل شيء بشكل أفضل إذا ما قمت بذلك.</p><h2 dir="rtl">الخطأ 4: استخدام كل شيء يوفره إطار Bootstrap</h2><p dir="rtl">قلنا سابقًا بأنّ هذا الإطار شامل ومتكامل ويوفر العديد من مكونات واجهة المستخدم والعديد من قوالب HTML وCSS وإضافات جافاسكربت كذلك. ولكن يجب عليك ألّا تستخدم كل ما يقدمه هذا الإطار إذا كنت لن تحتاجه في المشروع الذي تعمل عليه.</p><p dir="rtl">وهذا الأمر صحيح خصوصًا مع إضافات الجافاسكربت، فيجب عليك أن تختار فقط الإضافات التي سوف تحتاجها ولا يجب عليك أن تستخدم كل شيء لأنه يبدو جميلًا ورائعًا، فقد يؤدي ذلك إلى إثقال موقعك وجعله بطيئًا. لذلك يجب عليك في البداية أن لا تقوم بإدراج ملف <span style="font-family:courier new,courier,monospace;">bootstrap.js</span> وأن تقوم بإنشاء موقعك باستخدام HTML وCSS فقط وبعد ذلك تقوم بإضافة المكونات التي تحتاجها واحدة تلو الأخرى.</p><h2 dir="rtl">الخطأ 5: إساءة استخدام النوافذ المنبثقة (modals)</h2><p dir="rtl">يوفّر Bootstrap مجموعة من الخيارات المرنة بأقل متطلبات تشغيل ممكنة، كما أنها تأتي بقيم افتراضية مناسبة. وصحيح أنّه من السهل استخدامها ولكن هناك بعض الأمور التي يجب وضعها في الحسبان لتجنب اساءة استخدامها.</p><h3 dir="rtl">1- إظهار أكثر من نافذة منبثقة في نفس الوقت</h3><p dir="rtl">إنّ Bootstrap لا يدعم النوافذ المتداخلة، أي أنّه يمكن إظهار نافذة واحدة فقط في نفس الوقت وإذا أردت إظهار أكثر من نافذة في نفس الوقت فيجب عليك كتابة بعض الأكواد للقيام بذلك.</p><h3 dir="rtl">2- ظهور النافذة خلف الخلفية</h3><p dir="rtl">إذا كان حاوي النافذة أو العنصر الأب لها متموضعًا بشكل ثابت أو نسبي (fixed or relative position) فإنّ النافذة لن تظهر بشكل مناسب، ولذلك يجب عليك التأكد بأنّ حاوي النافذة لا يحتوي على خاصية <span style="font-family:courier new,courier,monospace;">position</span> خاصة. فمن أفضل الممارسات وضع HTML الخاص بالنافذة قبل وسم الاغلاق <span style="font-family:courier new,courier,monospace;">&lt;body/&gt;</span> مباشرة، أو حتى وضعها بعد وسم <span style="font-family:courier new,courier,monospace;">&lt;body&gt;</span> مباشرة، فهذه هي أفضل طريقة لمنع العناصر الأخرى من التأثير عليها.</p><h3 dir="rtl">3- النوافذ المنبثقة في الأجهزة المحمولة</h3><p dir="rtl">هناك بعض التحذيرات للمطورين بأنّ يكونوا حذرين عند استخدام النوافذ في <a rel="external nofollow" href="http://getbootstrap.com/getting-started/#virtual-keyboards">الأجهزة المحمولة التي تحتوي على لوحة مفاتيح افتراضية</a>. وهذا صحيح بشكل خاص في الأجهزة التي تعمل بنظام iOS فهناك خطأ برمجي يمنع العناصر الثابتة من تغيير مكانها عند استدعاء لوحة المفاتيح الافتراضية، وهذا الأمر لا يمكن لإطار Bootstrap التعامل معه، لذلك فإنّه يجب على المطور التعامل مع هذه المواقف بأفضل شكل ممكن.</p><h2 dir="rtl">الخطأ 6: مشكلة زر متصفح الملفات</h2><p dir="rtl">إنّ إطار عمل Bootstrap لا يوفّر مكون محدد للحصول على زر رفع للمفات (file upload). ولكن يمكنك استخدام الشيفرات البرمجية التالية للحصول على ذلك:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">&lt;span class="btn btn-default btn-file"&gt;
     Browse &lt;input type="file"&gt;
&lt;/span&gt;</pre><pre data-pbcklang="css" data-pbcktabsize="4" class="css ipsCode prettyprint">.btn-file {
    position: relative;
    overflow: hidden;
}

.btn-file input[type=file] {
    position: absolute;
    top: 0;
    right: 0;
    min-width: 100%;
    min-height: 100%;
    font-size: 100px;
    text-align: right;
    filter: alpha(opacity=0);
    opacity: 0;
    outline: none;
    background: white;
    cursor: inherit;
    display: block;
}</pre><p dir="rtl">هناك العديد من الأمثلة لكيفية الحصول على شيء مشابه، فالشيفرة البرمجية السابقة مأخوذة من <a rel="external nofollow" href="http://www.abeautifulsite.net/whipping-file-inputs-into-shape-with-bootstrap-3/">هذه المقالة</a> وهي توفر شرحًا وافيًا لهذه المشكلة.</p><h2 dir="rtl">الخطأ 7: تعقيد الأمور باستخدام الجافاسكربت وإهمال الصفة "data-"</h2><p dir="rtl">إنّ المصممين أو المبتدئين في استخدام الجافاسكربت يمكنهم بكل سهولة إنشاء صفحات ويب باستخدام HTML، CSS وBootstrap. ولكنهم إن لم يكونوا جيدين في البرمجة فقد يقعون في فخ إساءة استخدام الجافاسكربت أو حتى تعقيد الأمور. ومن المهم ذكر أنّه يمكن استخدام إضافات الجافاسكربت باستخدام واجهة تطبيقات برمجية (<abbr title="واجهة برمجية | Application Programming Interface">API</abbr>) يوفرها إطار عمل Bootstrap ومن دون الحاجة إلى كتابة سطر جافاسكربت واحد.</p><p dir="rtl">فيمكننا على سبيل المثال أن نقوم بتفعيل نافذة منبثقة (modal dialog) من دون كتابة سطر جافاسكربت واحد وذلك عن طريق استخدام:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">data-toggle="modal" </pre><p dir="rtl">على عنصر مثل زر (button) أو رابط (anchor) وتمرير قيم إضافية باستخدام الصفات <span style="font-family:courier new,courier,monospace;">data-</span>. ففي الشيفرة البرمجية الموجودة في الأسفل قمنا بتحديد عنصر له id "#myModal"، وقمنا باستخدام الخيار <span style="font-family:courier new,courier,monospace;">data-backdrop</span> لمنع النافذة من الاختفاء إذا ما قام المستخدم بالنقر خارج النافذة، وباستخدام الخيار <span style="font-family:courier new,courier,monospace;">data-keyboard</span> قمنا بتعطيل زر الخروج (escape) الموجود في لوحة المفاتيح الذي يقوم بإغلاق النافذة عند الضغط عليه. وكل ذلك تم باستخدام سطر HTML واحد فقط:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">&lt;button type="button" data-toggle="modal" data-target="#myModal" data-backdrop="static" data-keyboard="false"&gt;Launch my modal&lt;/button&gt;</pre><h2 dir="rtl">الخطأ 8: إهمال الأدوات التي تسهل عملية التطوير باستخدام Bootstrap</h2><p dir="rtl">الأخطاء تحدث وكل مطور يقع في الأخطاء بين الحين والآخر. وهذا أمر لا بد منه ولكن ما يهم هو كيفية التعامل مع الخطأ أو المشكلة. وقد لاحظ فريق تطوير هذا الإطار بأنّ بعض الأخطاء تحصل بشكل متكرر أكثر من الأخرى ولذلك حاولوا أتمتة عملية التطوير، لذلك قاموا بتطوير أداة <a rel="external nofollow" href="https://github.com/twbs/bootlint">Bootlint</a> وهي أداة تقوم بتفحص الصفحات التي تستخدم Bootstrap للبحث عن الأخطاء الشائعة. ويمكنك استخدام الأداة في المتصفح مباشرة أو عن طريق سطر الأوامر في Node.js. لذلك يجب على كل مطور أن يستخدم هذه الأداة لتفادي الوقوع في الكثير من المشاكل الشائعة والتي تقوم بإبطاء عملية التطوير.</p><p dir="rtl">وفي حالة أنك أردت أن تساهم في تطوير مشروع Bootstrap فأعتقد أنه من الجيد لك إلقاء نظرة على <a rel="external nofollow" href="https://github.com/twbs/rorschach">Rorschach</a>. بحيث يقوم Rorschach بعمل بعض الفحوصات على طلبات السحب (pull requests) الجديدة وإذا فشل الفحص فإنه يترك تعليق مُفيد لتوضيح الخطأ وكيفية إصلاحه وبعدها يقوم بإغلاق الطلب.</p><h2 dir="rtl">الخطأ 9: مشاكل التوافق في متصفح IE8 والمتصفحات الأقدم</h2><p dir="rtl">إنّ Bootstrap مصمم ليعمل بأفضل شكل في الاصدارات الحديثة من متصفحات سطح المكتب والهواتف، وقد تُظهر المتصفحات القديمة المكونات والعناصر بتنسيقات مختلفة ولكن كل شيء يجب أن يعمل بأفضل شكل. ويتضمن الدعم متصفحات IE8 وIE9 مع ملاحظة انّ بعض خصائص CSS3 وعناصر HTML5 ليست مدعومة بشكل كامل في هذه المتصفحات.</p><p dir="rtl">وللحصول على دعم كامل لمتصفح Internet Explorer 8 والمتصفحات الأخرى القديمة فعليك استخدام polyfill لـCSS3 Media Queries (<a rel="external nofollow" href="https://github.com/scottjehl/Respond">Respond.js</a>، <a rel="external nofollow" href="https://github.com/aFarkas/html5shiv/">HTML5 shim</a>) والذي يمكننا من استخدام عناصر HTML5. كما أنّه يجب عليك استخدام وسم <span style="font-family:courier new,courier,monospace;">&lt;meta&gt;</span> مناسب داخل وسم <span style="font-family:courier new,courier,monospace;">&lt;head&gt;</span> حتى نتأكد بأنّ متصفح IE لا يعمل في وضع التوافقية (compatibility mode). يجب أن يبدو وسم <span style="font-family: 'courier new', courier, monospace; line-height: 22.4px;">&lt;head&gt;</span> كما في الأسفل:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">&lt;head&gt;

...

&lt;meta http-equiv="X-UA-Compatible" content="IE=edge"&gt;

&lt;!--[if lt IE 9]&gt;
&lt;script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"&gt;&lt;/script&gt;
&lt;script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"&gt;&lt;/script&gt;
&lt;![endif]--&gt;

&lt;/head&gt;</pre><p dir="rtl">في حالة <span style="font-family:courier new,courier,monospace;">Respond.js</span> كن حذرًا <a rel="external nofollow" href="http://getbootstrap.com/getting-started/#support-ie8-respondjs">من بعض الأمور</a> في بيئات التطوير.</p><h2 dir="rtl">الخطأ 10: تجاهل أفضل الممارسات (best practices)</h2><p dir="rtl">واحد من أكثر الأسئلة شيوعًا على موقع Stack Overflow هو كيفية جعل القوائم المنسدلة (dropdown menu) تظهر عندما يقوم المستخدم بتمرير مؤشر الفأرة فوق العنصر (hover) بدلًا من النقر عليه. وصحيح أنّ حل هذا السؤال ليس بالأمر الصعب ويمكن حله باستخدام CSS فقط ولكن هذا الأمر غير محبذ، فهذه الميزة تم التخلص منها في هذا الإطار بشكل متعمد وكان قرار إزالتها قد تم من قبل فريق تطوير الإطار نفسه. وكما قلنا سابقًا فحل السؤال ليس صعبًا ولكن يجب عليك معرفة التداعيات التي تأتي معها ويجب عليك أيضًا أن تعرف بأنّ هناك ممارسات جيدة يجب عليك اتباعها خصوصًا في أُطر العمل التي تكون أولويتها التطوير للهواتف. والسبب خلف ذلك هو أنّ جعل الأشياء تعمل عندما يقوم المستخدم بوضع مؤشر الفأرة فوقها (hover) لا يساعد المستخدمين الذين يعملون على أجهزة تعمل باللمس (touch). ففي هذه الأجهزة لا يوجد شيء اسمه "hover" يوجد فقط اللمس، وبالتالي فإنّ ذلك سيؤدي إلى الإضرار بمستخدمي الأجهزة التي تعمل باللمس.</p><h2 dir="rtl">خلاصة</h2><p dir="rtl">أتمنى بأن يساعدك هذا المقال على تفادي بعض المشاكل والأخطاء الشائعة وتوضيح بعض المفاهيم الخاطئة. وضع في الحسبان بأنّ إطار Bootstrap لن يكون مناسبًا لكل مطور أو حتى أي مشروع، وعندما تقوم باختيار أي إطار عمل فإنّه يجب عليك أن تقرأ التوثيق الخاص به بكل تروٍ وأن تقضي بعض الوقت في التعامل معه حتى تعلم كيف يعمل.</p><p dir="rtl">ترجمة -وبتصرّف- للمقال <a rel="external nofollow" href="http://www.toptal.com/twitter-bootstrap/the-10-most-common-bootstrap-mistakes">The 10 Most Common Bootstrap Mistakes</a> لصاحبته TOMISLAV BACINGER.</p>
]]></description><guid isPermaLink="false">190</guid><pubDate>Mon, 12 Oct 2015 21:35:17 +0000</pubDate></item><item><title>&#x62A;&#x635;&#x645;&#x64A;&#x645; &#x635;&#x641;&#x62D;&#x629; &#x645;&#x648;&#x642;&#x639; &#x628;&#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; 3 Bootstrap - &#x627;&#x644;&#x62C;&#x632;&#x621; &#x627;&#x644;&#x62B;&#x651;&#x627;&#x646;&#x64A;</title><link>https://academy.hsoub.com/programming/css/bootstrap/%D8%AA%D8%B5%D9%85%D9%8A%D9%85-%D8%B5%D9%81%D8%AD%D8%A9-%D9%85%D9%88%D9%82%D8%B9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-3-bootstrap-%D8%A7%D9%84%D8%AC%D8%B2%D8%A1-%D8%A7%D9%84%D8%AB%D9%91%D8%A7%D9%86%D9%8A-r91/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_06/boostrap-page-layout.png.18ccb1e5a503ef3ef6ed64775a915dd4.png" /></p>

<p>تمّ التطرّف في الجزء الأوّل من هذا الشرح إلى <a href="https://academy.hsoub.com/code/css/%D8%AA%D8%B5%D9%85%D9%8A%D9%85-%D8%B5%D9%81%D8%AD%D8%A9-%D9%85%D9%88%D9%82%D8%B9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-3-bootstrap-%D8%A7%D9%84%D8%AC%D8%B2%D8%A1-%D8%A7%D9%84%D8%A3%D9%88%D9%84-r90/">الخطوات الأوّليّة في بناء صفحة باستخدام إطار عمل 3 Bootstrap</a>، في الجزء الثّاني، سيتم استكمال تصميم الصّفحة بدءًا من الشعار وانتهاءً بذيل الصّفحة.</p><h2>الشعار (Logo)</h2><p style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_06/logo.png.36e05735e46a891e99e954a3ccc5ef4b.png"><img data-fileid="2310" class="ipsImage ipsImage_thumbnailed" alt="logo.thumb.png.0f486ddbdef3defa74fdbf0c8" src="https://academy.hsoub.com/uploads/monthly_2015_06/logo.thumb.png.0f486ddbdef3defa74fdbf0c8fd46f21.png"></a></p><p>سيتمّ إضافة الشعار إلى رأس الصّفحة كما في التّالي:</p><pre data-pbcklang="html" data-pbcktabsize="" class="html ipsCode prettyprint">&lt;header&gt;
  &lt;a href="/"&gt;&lt;img src="images/logo.png" alt="Logo"&gt;&lt;/a&gt;
&lt;/header&gt;</pre><p>سيتمّ الاكتفاء بإدراج صورة الشعار وبدون إضافة أية تنسيقات.</p><h2>نموذج البحث</h2><p style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_06/search.png.f0e852e8b82d03ef21d9eef9695523aa.png"><img data-fileid="2316" class="ipsImage ipsImage_thumbnailed" alt="search.thumb.png.d61824dc3af5dba9200f493" src="https://academy.hsoub.com/uploads/monthly_2015_06/search.thumb.png.d61824dc3af5dba9200f493c62b90900.png"></a></p><p>سيتمّ الاستفادة من بعض مُكوّنات <code>Bootstrap</code> بغرض إنشاء نموذج البحث، سيتمّ إنشاء نموذج ضمن السطر في رأسيّة الصّفحة، كما سيتمّ إزاحة هذا النموذج إلى جهة اليمين، على أنّ يَملك هذا الحقل الصنف <code>form-control</code> وعنونة (label)</p><p>وسيحتوي النموذج على المُكوّن (input groups)، ومهمته إزالة الفراغ بين حقل الإدخال النصّي (input text) والزر (button)، كما لو أنّه يقوم بدمجهم كعنصر واحد، ولذلك سيتمّ استخدام الصنف <code>input-group</code>، ولعنصر الإدخال (input) سيتمّ استخدام الصنف <code>form-control</code> ولقسم الزر سيتمّ استخدام الصنف <code>input-group-btn</code>.</p><p>ومن ثُمّ سيتمّ إضافة الصنف <code>btn-primary</code> للزر، والذي سيمنح الزر لونًا بارزًا وحدودًا بارزةً.</p><pre data-pbcklang="html" data-pbcktabsize="" class="html ipsCode prettyprint">&lt;header&gt;
...
&lt;form name="search" action="#" method="get" class="form-inline form-search pull-right"&gt;
  &lt;div class="input-group"&gt;
    &lt;input class="form-control" id="searchInput" type="text" name="search" placeholder="Search"&gt;
    &lt;div class="input-group-btn"&gt;
      &lt;button type="submit" class="btn btn-primary"&gt;GO&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/form&gt;
&lt;/header&gt;</pre><p>سيتمّ في الخطوة التّالية ضبط عرض صندوق البحث إلى القيمة <strong>200px</strong>:</p><pre data-pbcklang="css" data-pbcktabsize="" class="css ipsCode prettyprint">body {
  ...

  .wrapper {
    ...

    header {
      ...

      .form-search {
        width: 200px;
      }
    }
  }
}</pre><h2>شريط التنقل</h2><p style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_06/navbar.png.ca56c28b912c593d760cb039518f060b.png"><img data-fileid="2312" class="ipsImage ipsImage_thumbnailed" alt="navbar.thumb.png.ca700d9ca1245d2d5e8af8c" src="https://academy.hsoub.com/uploads/monthly_2015_06/navbar.thumb.png.ca700d9ca1245d2d5e8af8c31df8be38.png"></a></p><p>سيتمّ استخدام مُكوّنات التنقل، والّتي تحتوي على قائمة بالروابط، وسيتم استخدام الصنف <code>navbar-nav</code> لشريط التنقل، والذي يُطبّق تنسيقًا خاصًّا لشريط التنقل.</p><pre data-pbcklang="html" data-pbcktabsize="" class="html ipsCode prettyprint">&lt;nav class="navbar navbar-default"&gt;
  &lt;ul class="nav navbar-nav"&gt;
    &lt;li&gt;&lt;a href="/home/"&gt;Home&lt;/a&gt;&lt;/li&gt;
    &lt;li class="active"&gt;&lt;a href="/about/"&gt;About us&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/services/"&gt;Services&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/partners/"&gt;Partners&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/customers/"&gt;Customers&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/projects/"&gt;Projects&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/careers/"&gt;Careers&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="/contact/"&gt;Contact&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/nav&gt;</pre><p>كما سيتمّ إضافة هذه المُتغيّرات وذلك بهدف جعل تنسيق شريط التنقل أكثر توافقيّةً مع الصّفحة.</p><pre data-pbcklang="css" data-pbcktabsize="" class="css ipsCode prettyprint">/* navigation menu height */
@navbar-height: 37px;

/* additional paddings */
@nav-link-padding: 10px 30px;

/* background for menu items */
@navbar-default-bg: @panel-bg;

/* text color in the menu items */
@navbar-default-link-color: #b2b2b2;

/* for the mouse hover - the same color */
@navbar-default-link-hover-color: @navbar-default-link-color;

/* background of the active menu item */
@navbar-default-link-active-bg: @brand-primary;

/* text color of the active menu item */
@navbar-default-link-active-color: #fff;</pre><p>كما سيتمّ إضافة التعديلات التّالية على ملفّ التنسيق الخاصّ بالمشروع، بغرض تخصيص الخط المُستخدم لشريط التنقل، وذلك بجعل الحروف كبيرة (uppercase)، وضبط نوع وحجم الخط.</p><pre data-pbcklang="css" data-pbcktabsize="" class="css ipsCode prettyprint">body {
  ...
  .wrapper {
    ...
    .navbar a {
      text-transform: uppercase;
      font: 14px @brand-font;
    }
  }
}</pre><h2>عنوان الصّفحة (Page Header)</h2><p style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_06/page-header.png.1b0c27cad7e0d3e8840323f0f8196338.png"><img data-fileid="2314" class="ipsImage ipsImage_thumbnailed" alt="page-header.thumb.png.57833ed395a60d2cde" src="https://academy.hsoub.com/uploads/monthly_2015_06/page-header.thumb.png.57833ed395a60d2cde585a7c1c921d82.png"></a></p><p>سيتمّ استخدام الصنف <code>heading</code> مع عنوان الصّفحة:</p><pre data-pbcklang="html" data-pbcktabsize="" class="html ipsCode prettyprint">&lt;div class="heading"&gt;
    &lt;h1&gt;About us&lt;/h1&gt;
&lt;/div&gt;</pre><p>وبالتنسيق التّالي:</p><pre data-pbcklang="css" data-pbcktabsize="" class="css ipsCode prettyprint">body {
  ...

  .wrapper {
    ...

    .heading {
      height: 40px;
      background: transparent url(../images/h1-bg.png);
      margin: 30px 0;
      padding-left: 20px;

      h1 {
        display: inline-block;
        color: #7e7e7e;
        font: normal 40px/40px 'Oswald', sans-serif;
        background: url(../images/bg.png);
        margin: 0;
        padding: 0 10px;
        text-transform: uppercase;
      }
    }
  }
}</pre><p>تمّ في الشيفرة السابقة تعيين صورة خلفية للعنوان (<code>h1</code>)، وتنسيق الخط، ليظهر العنوان بالشكل السابق.</p><h2>القائمة الفرعيّة (Submenu)</h2><p style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_06/aside.png.0076e4b71f91c9268961fefd77454b7e.png"><img data-fileid="2308" class="ipsImage ipsImage_thumbnailed" alt="aside.thumb.png.5fc205c8848c6fdbf7e586f5" src="https://academy.hsoub.com/uploads/monthly_2015_06/aside.thumb.png.5fc205c8848c6fdbf7e586f559082984.png"></a></p><p>لن يتمّ استخدام المُكوّن <strong>navigation</strong> مع القائمة الفرعيّة، حيثُ أنّه لا يناسب التنسيق، بدلًا من ذلك سيتمّ استخدام المُكوّن <strong>group list</strong>، وكل عنصر من هذا المكوّن سيملك الصنف <code>list-group-item</code>. مع الانتباه أنّ القائمة الفرعيّة يجب توضع داخل الوسم <code>aside</code>:</p><pre data-pbcklang="html" data-pbcktabsize="" class="html ipsCode prettyprint">&lt;aside class="col-md-7"&gt;
  &lt;ul class="list-group submenu"&gt;
    &lt;li class="list-group-item active"&gt;Lorem ipsum&lt;/li&gt;
    &lt;li class="list-group-item"&gt;&lt;a href="/donec/"&gt;Donec tincidunt laoreet&lt;/a&gt;&lt;/li&gt;
    &lt;li class="list-group-item"&gt;&lt;a href="/vestibulum/"&gt;Vestibulum elit&lt;/a&gt;&lt;/li&gt;
    &lt;li class="list-group-item"&gt;&lt;a href="/etiam/"&gt;Etiam pharetra&lt;/a&gt;&lt;/li&gt;
    &lt;li class="list-group-item"&gt;&lt;a href="/phasellus/"&gt;Phasellus placerat&lt;/a&gt;&lt;/li&gt;
    &lt;li class="list-group-item"&gt;&lt;a href="/cras/"&gt;Cras et nisi vitae odio&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
&lt;/aside&gt;</pre><p>إن الإعدادات الخاصّة بالمكوّنات تظهر أنّ جميع القوائم المُجمّعة (grouped lists) تستخدم خلفيّة وحدود المكوّن <strong>panel</strong>:</p><pre data-pbcklang="css" data-pbcktabsize="" class="css ipsCode prettyprint">@list-group-bg: @panel-bg;
@list-group-border: @panel-inner-border;</pre><p>ومن ثُمّ سيتمّ تطبيق التنسيقات التّالية على القائمة الفرعيّة:</p><pre data-pbcklang="css" data-pbcktabsize="" class="css ipsCode prettyprint">body {
  ...

  .wrapper {
    ...

    .submenu {
      margin-bottom: 30px;

      li {
        display: list-item;
        font: 300 14px @brand-font;
        list-style-position: inside;
        list-style-type: square;
        padding: 10px;
        text-transform: uppercase;

        &amp;.active {
          color: @brand-primary;
        }

        a {
          color: @text-color;
          text-decoration: none;

          &amp;:hover {
              color: @text-color;
          }
        }
      }
     }
  }
}</pre><p>تمت إضافة هامش سفلي باستخدام <code>margin-bottom</code>، والتخفيف من حدّة الخط، وتغيير التنسيق الخاصّ بعناصر القائمة باستخدام الخاصّيّة <code>list-style-type</code> لتكون مُربّعة (square)، ومن أجل الروابط تمّ ضبط اللّون، والحروف لتكون حروفًا كبيرةً، الجدير بالذكر هنا أنّ الإشارة <strong>&amp;</strong> (ampersand) هي جزء من صياغة <strong>LESS</strong>، والّتي سيتمّ استبدالها بالمُحدّد الأب (parent selector).</p><h2>الشريط الجانبي (Sidebar)</h2><p>سيتمّ إضافة صورة تُشير إلى عنوان مكتب العمل، وذلك أسفل القائمة الفرعيّة.</p><p style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_06/sidebar.png.fa2c40644ce73b7d444a6052c7f2be67.png"><img data-fileid="2317" class="ipsImage ipsImage_thumbnailed" alt="sidebar.thumb.png.70fb2a9f24b00c19c3363c" src="https://academy.hsoub.com/uploads/monthly_2015_06/sidebar.thumb.png.70fb2a9f24b00c19c3363c8feda4f283.png"></a></p><p>سيتمّ استخدام المُكوّن <strong>panel</strong> من مكوّنات <code>Bootstrap</code>، وذلك باستخدام الأصناف الفرعيّة منه وهي <code>panel-primary</code> من أجل تلوين العنوان، و يحتوي هذا المكوّن على كتلة علويّة وتستخدم الصنف <code>panel-heading</code>، وكتلة المُحتوى وتستخدم الصنف <code>panel-body</code>، كما سيتمّ استخدام الصنف <code>img-responsive</code> لصورة خريطة الموقع، وذلك من أجل الحصول تجاوبيّة لها على مُختلف قياسات الشاشة (responsiveness).</p><pre data-pbcklang="html" data-pbcktabsize="" class="html ipsCode prettyprint">&lt;aside class="col-md-7"&gt;
  ...
  &lt;div class="panel panel-primary"&gt;
    &lt;div class="panel-heading"&gt;Our offices&lt;/div&gt;
    &lt;div class="panel-body"&gt;
      &lt;img src="images/map.png" class="img-responsive" alt="Our offices"&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/aside&gt;</pre><p>تمّ بالفعل سابقًا ضبط لون لخلفيّة المكوّن <code>panel</code> وذلك في خصائص <code>Bootstrap</code> وذلك عبر المُتغيّر <code>panel-bg</code>، والآن ما سيتمّ عمله هو تغيير لون الحدود الخاصّة به، وسيتم استخدام اللون الرمادي المُعيّن سابقًا بالمُتغيّر <code>@panel-inner-border</code>:</p><pre data-pbcklang="css" data-pbcktabsize="" class="css ipsCode prettyprint">@panel-primary-border: @panel-inner-border;</pre><p>سيتم الحاجة أيضًا إلى تغيير بعض التنسيق الافتراضي للمكوّن <code>panel</code>، وهذه التغييرات لا يُمكن تغييرها بواسطة المُتغيّرات:</p><pre data-pbcklang="css" data-pbcktabsize="" class="css ipsCode prettyprint">.panel {
  box-shadow: none;
  .panel-heading {
    font: 14px @brand-font;
    text-transform: uppercase;
    padding: 10px;
  }

  .panel-body {
    padding: 10px;
  }
}</pre><p>تمّ في الشيفرة السابقة إزالة الظل الخاصّ بالمكوّن <code>panel</code> وضبط الحشوة <code>padding</code> وضبط الخط.</p><h2>الاقتباس (Quotation)</h2><p>سيتمّ الشروع بالعمل على تصميم المحتوى، وفي البداية سيتمّ إضافة <strong>الاقتباس</strong>:</p><p style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_06/quotation.png.1499fb2bfa308557464dc01d93803bee.png"><img data-fileid="2315" class="ipsImage ipsImage_thumbnailed" alt="quotation.thumb.png.718ada27d3033e82b8f9" src="https://academy.hsoub.com/uploads/monthly_2015_06/quotation.thumb.png.718ada27d3033e82b8f910d4b2d26626.png"></a></p><p>يشبه هذا الجزء إلى حدٍ كبير المُكوّن <code>Jumbotron</code>، والذي سيتمّ الاستفادة منه هنا، وذلك عبر إضافته داخل عمود المُحتوى (<code>col-md-17</code>):</p><pre data-pbcklang="html" data-pbcktabsize="" class="html ipsCode prettyprint">&lt;section class="col-md-17"&gt;
  &lt;div class="jumbotron"&gt;
    &lt;blockquote&gt;
      &lt;p&gt;
        "Quisque in enim velit, at dignissim est. nulla ul corper, dolor ac pellentesque placerat, justo tellus gravida erat, vel porttitor libero erat."
      &lt;/p&gt;
      &lt;small&gt;John Doe, Lorem Ipsum&lt;/small&gt;
    &lt;/blockquote&gt;
  &lt;/div&gt;
&lt;/section&gt;</pre><p>باستخدام مُتغيّرات المكوّن <code>jumbotron</code> سيتمّ تعيين اللّون الأبيض للخط، وضبط لون الخلفية إلى قيمة المُتغيّر <code>@brand-primary</code> وهو ذو القيمة <code>#29c5e6</code>:</p><pre data-pbcklang="css" data-pbcktabsize="" class="css ipsCode prettyprint">@jumbotron-bg: @brand-primary;
@jumbotron-color: #fff;</pre><p>كما سيتمّ إضافة بعض التنسيق:</p><pre data-pbcklang="css" data-pbcktabsize="" class="css ipsCode prettyprint">body {
  ...
  .wrapper {
  ...
  .jumbotron {
    border-radius: 0;
    padding: 0;
    margin: 0;

    blockquote {
    border-left: none;

    p {
      font: 300 italic 33px @brand-font;
      text-transform: uppercase;
      margin-bottom: 0;
    }

    small {
      text-align: right;
      color: #1D8EA6;
      font: 300 20px @brand-font;

      &amp;:before {
      content: '';
      }
    }
    }
  }
  }
}</pre><p>تمّ إزالة الزوايا الدائريّة باستخدام الخاصّيّة <code>border-radius</code>، وتنسيق الخط ليتناسق مع بقيّة التصميم.</p><h2>المُحتوى الرئيسي (Main content)</h2><p style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_06/main-content.png.8b2ac3376ee0e0f7e52fe90d1766a704.png"><img data-fileid="2311" class="ipsImage ipsImage_thumbnailed" alt="main-content.thumb.png.12a4009bf6762120b" src="https://academy.hsoub.com/uploads/monthly_2015_06/main-content.thumb.png.12a4009bf6762120b91fa6a95987201b.png"></a></p><p>تمّ بالفعل إتمام جميع التنسيقات اللازمة للنص الخاصّ بالمُحتوى، وعليه فإن كل ما يجب عمله هو إضافة ثلاثة فقرات (paragraphs) مع النصّ الخاصّ بها:</p><pre data-pbcklang="html" data-pbcktabsize="" class="html ipsCode prettyprint">&lt;p&gt;Lorem ipsum dolor sit amet...&lt;/p&gt;
&lt;p&gt;Donec vel nisl nibh...&lt;/p&gt;
&lt;p&gt;Donec vel nisl nibh...&lt;/p&gt;</pre><p>سيتمّ في الخطوة التّالية إضافة صورتين، أسفل المُحتوى الكتابي السابق، ولذلك سيتمّ استخدام عمودين:</p><pre data-pbcklang="html" data-pbcktabsize="" class="html ipsCode prettyprint">&lt;div class="row"&gt;
  &lt;div class="col-md-12"&gt;
    &lt;img src="images/about-1.png" alt="" class="thumbnail"&gt;
  &lt;/div&gt;
  &lt;div class="col-md-12"&gt;
    &lt;img src="images/about-2.png" alt="" class="thumbnail"&gt;
  &lt;/div&gt;
&lt;/div&gt;</pre><p>يُعطي الصنف <code>thumbnail</code> تنسيقًا جميلًا للصور، ومن دون إضافة المزيد من التنسيق، ما سيتمّ عمله فقط هو تعديل الحشوة (padding) ولون الحدود (border):</p><pre data-pbcklang="css" data-pbcktabsize="" class="css ipsCode prettyprint">@thumbnail-padding: 1px;
@thumbnail-border: #c9c9c9;</pre><h2>القسم الخاصّ بفريق العمل</h2><p style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_06/our-team.png.39a13f3ac3f29a5d84d1b4b012b77b44.png"><img data-fileid="2313" class="ipsImage ipsImage_thumbnailed" alt="our-team.thumb.png.a2b672d8313763d999e5d" src="https://academy.hsoub.com/uploads/monthly_2015_06/our-team.thumb.png.a2b672d8313763d999e5dfe1f5448da0.png"></a></p><p>أوّلًا، سيتمّ إضافة رأسيّة هذا القسم (header):</p><pre data-pbcklang="html" data-pbcktabsize="" class="html ipsCode prettyprint">&lt;h2&gt;Our team&lt;/h2&gt;</pre><p>وبالتنسيق التّالي:</p><pre data-pbcklang="css" data-pbcktabsize="" class="css ipsCode prettyprint">body {
  ...
  .wrapper {
    ...
    h2 {
      background: none repeat scroll 0 0 #29C5E6;
      color: #fff;
      font: 300 30px @brand-font;
      padding: 0 10px;
      text-transform: uppercase;
    }
  }
}</pre><p>سيتمّ إضافة <strong>div</strong> وبالصنف <strong>team</strong>، والذي يحتوي بطاقات فريق العمل، حيثُ أنّ كل كرت هو عمود وبعرض مساوي إلى أربعة أعمدة من النّظام الشبكي، وجميعها تحتوي على إزاحة بعمود واحد ما عدا الكرت الأول من كل صفّ، وتُطبّق هذه الإزاحة باستخدام الصنف <code>col-sm-offset-1</code>، ويتألّف كل كرت من صورة والوصف الوظيفي لكل عضو من أعضاء الفريق.</p><pre data-pbcklang="html" data-pbcktabsize="" class="html ipsCode prettyprint">&lt;div class="team"&gt;
  &lt;div class="row"&gt;
    &lt;div class="col col-sm-4"&gt;
      &lt;img src="images/team/Doe.jpg" alt="John Doe" class="thumbnail"&gt;
      &lt;div class="caption"&gt;
        &lt;h3&gt;John Doe&lt;/h3&gt;
        &lt;p&gt;ceo&lt;/p&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="col col-sm-4 col-sm-offset-1"&gt;
      &lt;img src="images/team/Pittsley.jpg" alt="Saundra Pittsley" class="thumbnail"&gt;
      &lt;div class="caption"&gt;
        &lt;h3&gt;Saundra Pittsley&lt;/h3&gt;
        &lt;p&gt;team leader&lt;/p&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    ...
  &lt;/div&gt;
  &lt;div class="row"&gt;
    &lt;div class="col col-sm-4"&gt;
      &lt;img src="images/team/Nobriga.jpg" alt="Ericka Nobriga" class="thumbnail"&gt;
      &lt;div class="caption"&gt;
        &lt;h3&gt;Ericka Nobriga&lt;/h3&gt;
        &lt;p&gt;art director&lt;/p&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="col col-sm-4 col-sm-offset-1"&gt;
      &lt;img src="images/team/Rousselle.jpg" alt="Cody Rousselle" class="thumbnail"&gt;
      &lt;div class="caption"&gt;
        &lt;h3&gt;Cody Rousselle&lt;/h3&gt;
        &lt;p&gt;senior ui designer&lt;/p&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    ...
  &lt;/div&gt;
&lt;/div&gt;</pre><p>سيتمّ إضافة التنسيق التّالي إلى ملفّ التنسيق بهدف مُلائمة المُحتوى السابق مع التصميم:</p><pre data-pbcklang="css" data-pbcktabsize="" class="css ipsCode prettyprint">body {
  ...
  .wrapper {
  ...
  .team {
    .row {
    margin-top: 20px;

    .col {
      white-space:  nowrap;

      .thumbnail {
        margin-bottom: 5px;
      }
    }

    .col-sm-offset-1 {
      margin-left: 3.7%;
    }

    .caption {
      h3 {
      font: 300 16px @brand-font;
      margin: 0;
      }

      p {
      font: 300 14px @brand-font;
      color: @brand-primary;
      margin: 0;
      }
    }
    }
  }
  }
}</pre><p>تمّ التعديل في الشيفرة السابقة على الصنف <code>col-sm-offset-1</code>، حيثُ أنّ الهامش الخاصّ به واسعٌ نوعًا ما، ولذلك تمّ تحديده بالقيمة <strong>3.7%</strong>.</p><h2>تصميم ذيل الصّفحة</h2><p>يتألّف ذيل الصّفحة من أربعة أجزاء رئيسية:</p><ul><li>تغذية توتير (Twitter feed)</li><li>خريطة الموقع (site map)</li><li>روابط الشبكات الاجتماعيّة (social links)</li><li>الشعار مع نص حقّ النشر (logo with copyright text)</li></ul><p style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_06/footer.png.0545084293f4734688469f8748bfc49f.png"><img data-fileid="2309" class="ipsImage ipsImage_thumbnailed" alt="footer.thumb.png.febafe0b8c422b9bd3da8af" src="https://academy.hsoub.com/uploads/monthly_2015_06/footer.thumb.png.febafe0b8c422b9bd3da8af41be86e31.png"></a></p><p>سيتمّ في البداية إنشاء الحاوية الرئيسيّة لذيل الصّفحة، والأعمدة الخاصّة بكل جزء:</p><pre data-pbcklang="html" data-pbcktabsize="" class="html ipsCode prettyprint">&lt;footer&gt;
  &lt;div class="container"&gt;
    &lt;div class="row"&gt;
      &lt;div class="col-md-8 col-xs-12 twitter"&gt;&lt;/div&gt;
      &lt;div class="col-md-4 col-xs-12 sitemap"&gt;&lt;/div&gt;
      &lt;div class="clearfix visible-sm visible-xs"&gt;&lt;/div&gt;
      &lt;div class="col-md-6 col-xs-12 social"&gt;&lt;/div&gt;
      &lt;div class="col-md-6 col-xs-12 footer-logo"&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/footer&gt;</pre><p>سيتمّ تنسيق ذيل الصّفحة على الشكل التّالي:</p><pre data-pbcklang="css" data-pbcktabsize="" class="css ipsCode prettyprint">footer {
  background: #7e7e7e;
  color: #dbdbdb;
  font-size: 11px;
  overflow: hidden;

  .container {
    height: 110px;
    padding: 10px 0;
  }
}</pre><p>يَظهر وسم ذيل الصّفحة (footer) على كامل عرض الشاشة، بينما تظهر الحاوية الداخليّة بالمُنتصف، ولاصطفاف العناصر داخل ذيل الصّفحة تم استخدام نظام الأعمدة.</p><h2>تغدية توتير (Twitter feed)</h2><p style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_06/twitter-feed.png.e148cade1691fd01adbc8d5acef343e7.png"><img data-fileid="2320" class="ipsImage ipsImage_thumbnailed" alt="twitter-feed.thumb.png.c6414cf303b3501a1" src="https://academy.hsoub.com/uploads/monthly_2015_06/twitter-feed.thumb.png.c6414cf303b3501a1f7d74e66372d49d.png"></a></p><p>صياغة تغذية توتير هي على الشكل التّالي:</p><pre data-pbcklang="html" data-pbcktabsize="" class="html ipsCode prettyprint">&lt;div class="col-md-8 col-xs-12 twitter"&gt;
  &lt;h3&gt;Twitter feed&lt;/h3&gt;
  &lt;time datetime="2015-03-03"&gt;&lt;a href="#"&gt;03 mar&lt;/a&gt;&lt;/time&gt;
  &lt;p&gt;In ultricies pellentesque massa a porta. Aliquam ipsum enim, hendrerit ut porta nec, ullamcorper et nulla. In eget mi dui, sit amet scelerisque nunc. Aenean aug&lt;/p&gt;
&lt;/div&gt;</pre><p>والتنسيق هو على الشكل التّالي:</p><pre data-pbcklang="css" data-pbcktabsize="" class="css ipsCode prettyprint">body {
  ...
  footer {
    ...
    .container {
      ...
      h3 {
        border-bottom: 1px solid #919191;
        color: #ffffff;
        font-size: 14px;
        line-height: 21px;
        font-family: @brand-font;
        margin: 0 0 10px;
        text-transform: uppercase;
      }

      p {
        margin: 5px 0;
      }

      .twitter {
        p {
          padding-right: 15px;
        }

        time a {
          color: #b4aeae;
          text-decoration: underline;
        }
      }
    }
  }
}</pre><p>تمّ تخصيص تنسيق جميع العناوين بذيل الصّفحة وذلك للخط والهوامش، واستخدام الحروف الكبيرة، وذلك باستخدام الخاصّيّة <code>text-transform</code>، ومن أجل الرابط الّذي يعرض التاريخ، تمّ ضبط اللّون والخطّ السفلي (underlining).</p><h2>خريطة الموقع (Sitemap)</h2><p>تتألّف خريطة الموقع من عمودين متساويين محتويان على روابط:</p><p style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_06/sitemap.png.1273d75f42f0a54dbb85f4ca73a9df75.png"><img data-fileid="2318" class="ipsImage ipsImage_thumbnailed" alt="sitemap.thumb.png.a0241847d67e80a35a0ca4" src="https://academy.hsoub.com/uploads/monthly_2015_06/sitemap.thumb.png.a0241847d67e80a35a0ca403374821f1.png"></a></p><pre data-pbcklang="html" data-pbcktabsize="" class="html ipsCode prettyprint">&lt;div class="col-md-4 col-xs-12 sitemap"&gt;
  &lt;h3&gt;Sitemap&lt;/h3&gt;
  &lt;div class="row"&gt;
    &lt;div class="col-md-12"&gt;
      &lt;a href="/home/"&gt;Home&lt;/a&gt;
      &lt;a href="/about/"&gt;About&lt;/a&gt;
      &lt;a href="/services/"&gt;Services&lt;/a&gt;
    &lt;/div&gt;
    &lt;div class="col-md-12"&gt;
      &lt;a href="/partners/"&gt;Partners&lt;/a&gt;
      &lt;a href="/customers/"&gt;Support&lt;/a&gt;
      &lt;a href="/contact/"&gt;Contact&lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;</pre><p>سيتمّ تطبيق التنسيق التّالي، والذي يَخصّ اللّون والخطّ والهامش الخاصّ بالروابط:</p><pre data-pbcklang="css" data-pbcktabsize="" class="css ipsCode prettyprint">body {
  ...
  footer {
    ...
    .container  {
      ...
      a {
        color: #dbdbdb;
      }

      .sitemap a {
        display: block;
        font-size: 12px;
        margin-bottom: 5px;
      }
    }
  }
}</pre><h2>الأيقونات الاجتماعيّة</h2><p style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_06/social-buttons.png.08897e43808172d4da7937a89bf5a8ba.png"><img data-fileid="2319" class="ipsImage ipsImage_thumbnailed" alt="social-buttons.thumb.png.721c8749be8cbec" src="https://academy.hsoub.com/uploads/monthly_2015_06/social-buttons.thumb.png.721c8749be8cbec1f38bb1a93ee7387c.png"></a></p><p>سيتمّ وضع جميع الروابط (الأزرار) داخل قسم وبالصنف <strong>social</strong>:</p><pre data-pbcklang="html" data-pbcktabsize="" class="html ipsCode prettyprint">&lt;div class="col-md-4 col-xs-12 social"&gt;
  &lt;h3&gt;Social networks&lt;/h3&gt;
  &lt;a href="http://twitter.com/" class="social-icon twitter"&gt;&lt;/a&gt;
  &lt;a href="http://facebook.com/" class="social-icon facebook"&gt;&lt;/a&gt;
  &lt;a href="http://plus.google.com/" class="social-icon google-plus"&gt;&lt;/a&gt;
  &lt;a href="http://vimeo.com/" class="social-icon-small vimeo"&gt;&lt;/a&gt;
  &lt;a href="http://youtube.com/" class="social-icon-small youtube"&gt;&lt;/a&gt;
  &lt;a href="http://flickr.com/" class="social-icon-small flickr"&gt;&lt;/a&gt;
  &lt;a href="http://instagram.com/" class="social-icon-small instagram"&gt;&lt;/a&gt;
  &lt;a href="/rss/" class="social-icon-small rss"&gt;&lt;/a&gt;
&lt;/div&gt;</pre><p>وللتنسيق الروابط ضمن ذيل الصّفحة سيتمّ تطبيق التّالي:</p><pre data-pbcklang="css" data-pbcktabsize="" class="css ipsCode prettyprint">body {
  ...
  footer {
    ...
    .container {
      ...
      .social {
        .social-icon {
          width: 30px;
          height: 30px;
          background: url(../images/social.png) no-repeat;
          display: inline-block;
          margin-right: 10px;
        }

        .social-icon-small  {
          width: 16px;
          height: 16px;
          background: url(../images/social-small.png) no-repeat;
          display: inline-block;
          margin: 5px 6px 0 0;
        }

        .twitter { background-position: 0 0; }
        .facebook { background-position: -30px 0; }
        .google-plus { background-position: -60px 0; }
        .vimeo { background-position: 0 0; }
        .youtube { background-position: -16px 0; }
        .flickr { background-position: -32px 0; }
        .instagram { background-position: -48px 0; }
        .rss { background-position: -64px 0; }
      }
    }
  }
}</pre><p>تمّ في الشيفرة السابقة استخدام أسلوب ما يُعرف بالاسم <strong>sprites</strong>، وهو أسلوب شائع يُستخدم في تسريع تحميل الصّفحة وذلك عن طريق جمع مجموعة من الصور في صورة واحدة، وعليه فالمتصفّح سيطلب صورة واحدة بدلًا من عدّة صور، أي طلبًا واحدًا بدلًا من طلبات عدّة، في المشروع الحالي تمّ تقسيم الأيقونات الاجتماعيّة إلى صورتين الأولى بالاسم <strong>social.png</strong> والثانية بالاسم <strong>social-small.png</strong>، واستخدام كلْ منها كخلفيّة باستخدام الخاصّيّة <code>background</code> وتحديد موضع كل خلفيّة باستخدام الخاصّيّة <code>background-position</code>، على أنّ يتمّ التبديل بين كل رابط وما يخصّه من شعار.</p><h2>نص حقّ النشر</h2><p>سيتمّ استخدام صورة ذات رابط للشعار، وفقرة (paragraph) أسفله مع نصّ حق النشر.</p><p style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_06/copyright.png.b3a371dc7786f5c1d97d4cb2db33b154.png"><img data-fileid="2307" class="ipsImage ipsImage_thumbnailed" alt="copyright.thumb.png.5892f2729f5fac259046" src="https://academy.hsoub.com/uploads/monthly_2015_06/copyright.thumb.png.5892f2729f5fac259046d6b30735be9e.png"></a></p><p>ستكون الصياغة على الشكل التّالي:</p><pre data-pbcklang="html" data-pbcktabsize="" class="html ipsCode prettyprint">&lt;div class="col-md-8 col-xs-12 footer-logo"&gt;
  &lt;a href="/"&gt;&lt;img src="images/footer-logo.png" alt="Whitesquare logo"&gt;&lt;/a&gt;
  &lt;p&gt;Copyright © 2015 Whitesquare.&lt;/p&gt;
&lt;/div&gt;</pre><p>سيتمّ تنسيق هذا القسم بشكل مُشابه للقسم السابق، مع اختلاف وحيد، وهو الإزاحة إلى جهة اليمين:</p><pre data-pbcklang="css" data-pbcktabsize="" class="css ipsCode prettyprint">body {
  ...
  .footer {
    ...
    .container {
      ...
      .footer-logo {
        float: right;
        margin-top: 20px;
        font-size: 10px;
        text-align: right;

        a {
          text-decoration: underline;
        }
      }
    }
  }
}</pre><h2>الختام</h2><p>يكون إلى هنا قد تمّ الانتهاء من تصميم كامل الصّفحة، يُمكن الوصول إلى الملفّات المصدريّة الخاصّة بالمشروع <a rel="external nofollow" href="http://www.script-tutorials.com/demos/454/sources454.zip">بتحميلها</a> أو استعراض تصميم المشروع من <a rel="external nofollow" href="http://www.script-tutorials.com/demos/454/index.html">هنا</a>.</p><p>ترجمة – وبتصرّف – للمقال <a rel="external nofollow" href="http://www.script-tutorials.com/page-layout-with-boostrap-3-part-2/">Page layout with Bootstrap 3 part 2</a>.</p>
]]></description><guid isPermaLink="false">91</guid><pubDate>Tue, 02 Jun 2015 13:37:38 +0000</pubDate></item><item><title>&#x62A;&#x635;&#x645;&#x64A;&#x645; &#x635;&#x641;&#x62D;&#x629; &#x645;&#x648;&#x642;&#x639; &#x628;&#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; 3 Bootstrap - &#x627;&#x644;&#x62C;&#x632;&#x621; &#x627;&#x644;&#x623;&#x648;&#x644;</title><link>https://academy.hsoub.com/programming/css/bootstrap/%D8%AA%D8%B5%D9%85%D9%8A%D9%85-%D8%B5%D9%81%D8%AD%D8%A9-%D9%85%D9%88%D9%82%D8%B9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-3-bootstrap-%D8%A7%D9%84%D8%AC%D8%B2%D8%A1-%D8%A7%D9%84%D8%A3%D9%88%D9%84-r90/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_06/boostrap-page-layout.png.3c65c784e49f836055e1273445995441.png" /></p>

<p>
	سيكون هذا الدرس مُتابعة لدروس Boostrap الّتي قدّمتها الأكاديميّة، وفيه سيتمّ تجهيز وتخطيط صفحة عامّة تصلح لمُختلف الأغراض والاحتياجات.
</p>

<p>
	يعود استخدام أُطر العمل (frameworks) بالنفع الكبير على المُطوّر، حيثُ لم يَعد على المُطوّر التفكير بالمشاكل المُتكرّرة ورُبما التافهة، وهي مشاكل قد تمّ حلها بالفعل من قبل صانعي أُطر العمل، فعلى السبيل المثال، التوافقيّة بين المُتصفّحات، دعم أبعاد أو أحجام الشاشة المُختلفة (التجاوبية)، إلى آخره من المشاكل الأخرى، ويُسرّع هذا الأسلوب أو هذا النمط من التطوير كثيرًا من عمليّة تخطيط وتطوير الموقع.
</p>

<p>
	يتميّز إطار العمل <code>Bootstrap</code> بشهرته الواسعة الّتي يتمتّع بها، الأمر الّذي يجعل من صيانة وتنقيح شيفرة أي مُطوّر سهلةً في التعديل من قِبل أي مطوّرٍ آخر، مع عدم إغفال الدعم والتوثيق القويّ الّذي يملكه على الإنترنت.
</p>

<p>
	تبرز مساوئ استخدام أُطر العمل في حقيقة أنّ على الصّفحة تحمّل أعباء مُجمل شيفرة الإطار (مُجمل التنسيقات الزائدة)، وحتّى عند استخدام جزء صغير من الإطار، على الجهة الأُخرى، فإن أُطر العمل هي أداةٌ فعّالة في بناء نماذج أوليّة للمشاريع (prototyping)، أو في إنشاء صفحات يكون فيها جماليّة التصميم أمرًا ثانويًّا، كما هو الأمر مع صفحات إدارة الموقع (administration pages)، ولكن عند الرغبة في إنشاء تصميم مُحدّد وذو مواصفات مُعيّنة، فإن استخدام هذه الأُطر قد يُصعب من عمليّة التصميم أكثر مما هو عليه الأمر من بناء التصميم من نقطة الصفر، ومع ذلك فهو أمرٌ مُمكن وليس مُستحيلًا.
</p>

<p>
	سيكون المشروع النهائيّ على الشكل التّالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_06/final-project.png.49a60f690ceff69b3898f179bed78dc7.png" data-fileid="2303" rel=""><img alt="final-project.thumb.png.4b859bddf7aa5aad" class="ipsImage ipsImage_thumbnailed" data-fileid="2303" src="https://academy.hsoub.com/uploads/monthly_2015_06/final-project.thumb.png.4b859bddf7aa5aadfcf908ae75aeb04d.png"></a>
</p>

<h2>
	ملاحظة حول استخدام Bootstrap
</h2>

<p>
	يوجد طرقٌ عدّة للتعامل مع تنسيقات إطار العمل <code>Bootstrap</code>، سواءً بدون استخدام <strong>LESS</strong> أو باستخدام <strong>LESS</strong>.
</p>

<h2>
	استخدام Bootstrap بدون LESS
</h2>

<p>
	يُستحسن للمُبتدئين في التعامل مع <code>Bootstrap</code> تنزيل نسخة <code>Bootstrap</code> المُترجمة/المُجمّعة (compiled) وإرفاقها في المشروع، ومن ثمّ القيام بإنشاء ملفّ <strong>CSS</strong> فارغ وربطه مع المشروع بعد ملفّ <code>bootstrap.css</code>:
</p>

<pre class="html ipsCode prettyprint prettyprinted" data-pbcklang="html" data-pbcktabsize="" style="">
<span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"css/bootstrap.min.css"</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="tag">&gt;</span><span class="pln"> 
</span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"css/styles.css"</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="tag">&gt;</span></pre>

<p>
	ولكي يتمّ التغيير من تنسيقات <code>bootstrap</code> الافتراضيّة، فيجب الكتابة في الملفّ <strong>style.css</strong>:
</p>

<pre class="css ipsCode prettyprint prettyprinted" data-pbcklang="css" data-pbcktabsize="" style="">
<span class="pln">a </span><span class="pun">{</span><span class="pln"> color</span><span class="pun">:</span><span class="pln"> </span><span class="com">#00ff00 }</span><span class="pln">
block </span><span class="pun">{</span><span class="pln"> background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> </span><span class="com">#dddddd }</span></pre>

<p>
	إن مساوئ استخدام الأسلوب السابق كما هو واضح هو أنّ على المُطوّر البحث يدويًّا عن التنسيق الصحيح عند التغيير، ولن يكون الأمر سهلًا في مُعظم الأحيان، باعتبار أنّ بعض المُعامِلات (parameters) تُطبّق على العديد من المُحدّدات (selectors) عند التعديل، مع العلم أن <a href="http://getbootstrap.com/customize" rel="external nofollow">أداة التخصيص</a> الخاصّة بالإطار قد تساعد المُطوّر بعض الشيء، حيثُ أنها تستطيع ترجمة جميع تغييرات المُطوّر، ولمرّة واحدة، ولكن عند رغبة المُطوّر في تغيير مُعامل جديد، فعليه إعادة تحديث جميع قيم الحقول لكي يُعاد ترجمتها مرّةً أُخرى.
</p>

<h2>
	استخدام Bootstrap مع LESS
</h2>

<p>
	تعمل هذه الطريقة بجعل جميع متغيّرات <code>Bootstrap</code> مخزّنة في ملفّات ذات اللاحقة <strong>.less</strong>، وعلى المُطوّر العمل مع هذه المتغيّرات وترجمتها إلى ملفّات ذات اللاحقة <strong>.css</strong> (يدويًّا أو آليًّا) وكما تقتضي الضرورة. مع العلم أنّ في ملفّ HTML كل ما يجب عمله هو ربط ملفّات <strong>CSS</strong> المُترجمة، ولذلك فإن هذه الطريقة هي الطريقة الأفضل والأكثر مرونةً.
</p>

<p>
	يوجد العديد من الطرق في تجميع أو ترجمة ملفّات <strong>LESS</strong>، وحرية الاختيار للمطوّر، مع العلم أنّ <code>Bootstrap</code> نفسه يستخدم <a href="http://gruntjs.com/" rel="external nofollow">Grunt</a> في تجميع ملفّات <strong>less</strong>، ومن الخيارات المُتاحة هو <a href="http://winless.org/" rel="external nofollow">WinLess</a> لمُستخدمي ويندوز، أو <a href="http://wearekiss.com/simpless" rel="external nofollow">SimpLESS</a> لمُستخدمي أنظمة Mac، أو <a href="http://koala-app.com/" rel="external nofollow">Koala</a> لمُستخدمي لينكس، وتعمل جميع هذه الأدوات الأمر نفسه، وذلك عبر الوصول إلى ملفّات <strong>LESS</strong> والانتظار لحدوث أي تغيير فيها، وعندما يقوم المُطوّر بإجراء هذا التغيير، ستقوم الأداة بتجميع وإنشاء ملفّ <strong>CSS</strong> الموافق، ولذلك ليس على المُطوّر إجراء التجميع أو الترجمة يدويًّا بعد كل تغيير، فبكل بساطة يتم إجراء التغييرات ومن ثم الحفظ، لتظهر النتائج بشكل مُباشر على الموقع وهي بالفعل مُترجمة (compiled) ومضغوطة (compressed).
</p>

<h2>
	إنشاء المشروع باستخدام Bootstrap
</h2>

<p>
	سيتمّ في البداية إنشاء بُنيان وهيكليّة ملفّات المشروع وذلك عبر:
</p>

<ul>
<li>
		إنشاء مُجلّد باسم المشروع وليكن <strong>whitesquare-bootstrap</strong>.
	</li>
	<li>
		إنشاء مجلدان فرعيان: الأول <strong>src</strong> للملفّات المصدريّة، والثّاني <strong>www</strong> لملفّات الموقع النهائيّة.
	</li>
	<li>
		إنشاء مجلد فارغ بالاسم <strong>images</strong> وملفّ فارغ بالاسم <strong>index.html</strong> داخل المُجلّد <strong>www</strong>.
	</li>
	<li>
		تنزيل <a href="https://github.com/twbs/bootstrap/releases/download/v3.1.0/bootstrap-3.1.0-dist.zip" rel="external nofollow">Bootstrap</a> ونسخ مُحتويات الملفّ المضغوط إلى مُجلّد <strong>www</strong>.
	</li>
	<li>
		تنزيل الملفّات المصدريّة الخاصّة بـ <code>Bootstrap</code> ونَسخ منها المُجلّد <strong>less</strong>، ووضعه في المُجلّد <strong>src</strong> الخاصّ بالمشروع.
	</li>
	<li>
		إنشاء ملفان بجانب المُجلّد <strong>less/bootstrap</strong>، يحمل الأوّل الاسم <strong>styles.less</strong> ويحمل الثّاني الاسم <strong>variables.less</strong>، ليتم استخدامهم في تعديل خصائص <code>Bootstrap</code> الأساسيّة، وهذا يُقدّم سرعة في التحديث والتعديل على التنسيق.
	</li>
</ul>
<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_06/file-structure.png.0fbc876256f13c0fa2e10b82e1424d27.png" data-fileid="2304" rel=""><img alt="file-structure.thumb.png.74a5928806ace26" class="ipsImage ipsImage_thumbnailed" data-fileid="2304" src="https://academy.hsoub.com/uploads/monthly_2015_06/file-structure.thumb.png.74a5928806ace2646ae19288405152d1.png"></a>
</p>

<p>
	سيتمّ في الخطوة التّالية إعداد عمليّة ترجمة ملفّات <strong>LESS</strong> إلى <strong>CSS</strong>.
</p>

<p>
	سيتمّ العمل على الأداة <strong>WinLess</strong>، وهي سهلة الاستخدام، فكل ما يجب عمله هو اختيار ‘Add folder’ منها، ومن ثُمّ تحديد مسار المُجلّد الّذي يحتوي ملفّات <strong>LESS</strong>:
</p>

<pre class="ipsCode prettyprint prettyprinted" data-pbcklang="" data-pbcktabsize="" style="">
<span class="pln">C</span><span class="pun">:</span><span class="pln">\whitesquare</span><span class="pun">-</span><span class="pln">bootstrap\src\less</span></pre>

<p>
	يحتوي المُجلد السابق على قائمة بجميع الملفّات، سيتمّ اختيار الملفين الأخيرين: <strong>styles.less</strong> و <strong>variables.less</strong>، ومن ثُمّ الضغط بالزر الأيمن واختيار من القائمة المُنسدلة الاختيار ‘Select output file’، ومن ثُم تحديد مسار ملفّات <strong>CSS</strong>.
</p>

<pre class="ipsCode prettyprint prettyprinted" data-pbcklang="" data-pbcktabsize="" style="">
<span class="pun">..</span><span class="pln">\.</span><span class="pun">.</span><span class="pln">\www\css\styles</span><span class="pun">.</span><span class="pln">css
</span><span class="pun">..</span><span class="pln">\.</span><span class="pun">.</span><span class="pln">\www\css\variables</span><span class="pun">.</span><span class="pln">css</span></pre>

<p>
	بعد ذلك، وعند إجراء أي تعديل على ملفّات <strong>LESS</strong>، سيتمّ إعادة الترجمة من جديد للحصول على ملفّات <strong>CSS</strong> مُترجمة وبالتعديلات الجديدة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_06/WinLess.png.0c44debd50294ccdc9110ec5ae3c066b.png" data-fileid="2306" rel=""><img alt="WinLess.thumb.png.fb7cc23d9e34f2eed837a9" class="ipsImage ipsImage_thumbnailed" data-fileid="2306" src="https://academy.hsoub.com/uploads/monthly_2015_06/WinLess.thumb.png.fb7cc23d9e34f2eed837a9d53c7cf948.png"></a>
</p>

<h2>
	ملاحظات
</h2>

<p>
	أصبحت تركيبة وبنية المشروع جاهزة بعد إنشاء الملفّات السابقة، ولكن على المُطوّر الأخذ بعين الاعتبار الأمور التّالية قبل الشروع في التصميم:
</p>

<ul>
<li>
		كيف ستقدّم الصّور، كيف سيتمّ توزيعها وتقسيمها في أرجاء الصّفحة.
	</li>
	<li>
		كيف سيتمّ استخدام المُكوّنات (components).
	</li>
	<li>
		ما هي التنسيقات الأساسيّة.
	</li>
	<li>
		ما هو المُخطّط النهائي.
	</li>
</ul>
<p>
	بعد الإجابة على الأسئلة السابقة من المُمكن المُتابعة مع التصميم.
</p>

<h2>
	إعداد صور الموقع
</h2>

<p>
	سيتمّ في هذه المرحلة تجهيز الصور والّتي ستستخدم في جميع الصفحات وليس لها علاقة بالمُحتوى، وستكون هذه الصور في المشروع الحالي على الشكل التّالي:
</p>

<p>
	الصورة الّتي تعرض عنوان الموقع (خريطة):
</p>

<pre class="ipsCode prettyprint prettyprinted" data-pbcklang="" data-pbcktabsize="" style="">
<span class="pln">images</span><span class="pun">/</span><span class="pln">map</span><span class="pun">.</span><span class="pln">png</span></pre>

<p>
	صور شعار الموقع:
</p>

<pre class="ipsCode prettyprint prettyprinted" data-pbcklang="" data-pbcktabsize="" style="">
<span class="pln">images</span><span class="pun">/</span><span class="pln">logo</span><span class="pun">.</span><span class="pln">png
images</span><span class="pun">/</span><span class="pln">footer</span><span class="pun">-</span><span class="pln">logo</span><span class="pun">.</span><span class="pln">png</span></pre>

<p>
	صور الخلفيّة:
</p>

<pre class="ipsCode prettyprint prettyprinted" data-pbcklang="" data-pbcktabsize="" style="">
<span class="str">/images/</span><span class="pln">bg</span><span class="pun">.</span><span class="pln">png
</span><span class="pun">/</span><span class="pln">images</span><span class="pun">/</span><span class="pln">h1</span><span class="pun">-</span><span class="pln">bg</span><span class="pun">.</span><span class="pln">png</span></pre>

<p>
	صور الأيقونات الاجتماعية، وهي مُقسّمة على صورتين ليتم استخدام أسلوب <strong>sprite</strong> معهم بهدف تحميل الصّفحة بشكل أسرع:
</p>

<pre class="ipsCode prettyprint prettyprinted" data-pbcklang="" data-pbcktabsize="" style="">
<span class="str">/images/</span><span class="pln">social</span><span class="pun">.</span><span class="pln">png
</span><span class="pun">/</span><span class="pln">images</span><span class="pun">/</span><span class="pln">social</span><span class="pun">-</span><span class="pln">small</span><span class="pun">.</span><span class="pln">png</span></pre>

<h2>
	المُكوّنات (Components)
</h2>

<p>
	يَكمن الاختلاف بين تصميم الموقع باستخدام <code>Bootstrap</code> وبين التصميم باستخدام الأدوات الأصليّة (native) في أنّ <code>Bootstrap</code> يُقدّم مفهوم المُكوّنات (<code>components</code>)، وتُمثل هذه المُكوّنات أجزاءً شائعة من <strong>HTML</strong> مُعدّة بشكل مُسبق مع تنسيقها، وتَستخدم في بعض الأحيان هذه المُكوّنات جافا سكريبت، ومن المُمكن استخدام مكوّنات <code>Bootstrap</code> كما هي، أو يُمكن إعادة تنسيق هذه المُكوّنات، فكل ما يحتاجه الأمر هو تغيير قيم المُتغيّرات في <code>Bootstrap</code> لذلك، ولكن عند الرغبة في المزيد من المرونة في التغيير، فيُمكن للمُطوّر دائمًا تغيير وتعديل <strong>HTML</strong> و <strong>CSS</strong> كما يَحلو له، وفي العودة إلى المشروع، يُمكن مُلاحظة أنّه سيتمّ الحاجة إلى المُكوّنات التّالية:
</p>

<ul>
<li>
		من أجل تصميم الأعمدة (columns) وتوزيعها، سيتمّ استخدام النّظام الشبكي (<code>row</code>, <code>col</code>).
	</li>
	<li>
		من أجل إجراء حقل البحث، والذي هو نموذج (form) من النوع "ضمن السطر" (inline) سيتمّ استخدام (<code>form-inline</code> - <code>input-group</code> - <code>btn</code>)
	</li>
	<li>
		من أجل التنقّل (navigation)، سيتمّ استخدام الوسم <code>&lt;nav&gt;</code> مع الصنف (<code>navbar</code>).
	</li>
	<li>
		من أجل القوائم الفرعيّة، سيتمّ استخدام قائمة مُجمّعة (group list) وباستخدام الصنف <code>list-group</code>.
	</li>
	<li>
		من أجل لوحة الظهور (panel) سيتمّ استخدام النصف <code>panel</code>.
	</li>
	<li>
		من أجل لوحة ظهور كبيرة سيتمّ استخدام الصنف <code>jumbotron</code>.
	</li>
	<li>
		من أجل إطارات الصور، سيتمّ استخدام <code>thumbnail</code>.
	</li>
</ul>
<p>
	تظهر جميع المُكونات السابقة في توثيق <a href="http://getbootstrap.com/components" rel="external nofollow">المكوّنات </a> الخاصّ بـ <code>Bootstrap</code>.
</p>

<h2>
	تنسيق أساسي
</h2>

<p>
	يَملك <code>Bootstrap</code> بالفعل مُعظم التنسيقات المطلوبة للمشروع، ولكن سيتمّ الحاجة فقط إلى التعديل عليهم عند الحاجة، ويُمكن عمل ذلك بالتعديل على الملفّ <strong>src/less/variables.css</strong>.
</p>

<p>
	سيتمّ أوّلًا إضافة بعض المُتغيّرات والّتي لم يتمّ إعدادها افتراضيّا في <code>Bootstrap</code>، ولكي يتمّ استخدامها فيما بعد:
</p>

<p>
	يَضبط المُتغيّر التّالي الخط المُستخدم في المشروع:
</p>

<pre class="css ipsCode prettyprint prettyprinted" data-pbcklang="css" data-pbcktabsize="" style="">
<span class="lit">@brand</span><span class="pun">-</span><span class="pln">font</span><span class="pun">:</span><span class="pln"> </span><span class="str">'Oswald'</span><span class="pun">,</span><span class="pln">sans</span><span class="pun">-</span><span class="pln">serif</span><span class="pun">;</span></pre>

<p>
	كما سيتمّ التعديل على خيارات <code>Bootstrap</code> للتوافق مع رؤية المشروع، والّتي ستكون في مُعظمها تخصّ الألوان:
</p>

<pre class="css ipsCode prettyprint prettyprinted" data-pbcklang="css" data-pbcktabsize="" style="">
<span class="com">/* gray background of the page */</span><span class="pln">
</span><span class="lit">@body</span><span class="pun">-</span><span class="pln">bg</span><span class="pun">:</span><span class="pln"> </span><span class="com">#f8f8f8; </span><span class="pln">
</span><span class="com">/* blue background */</span><span class="pln">
</span><span class="pun">@</span><span class="pln"> brand</span><span class="pun">-</span><span class="pln">primary</span><span class="pun">:</span><span class="pln"> </span><span class="com">#29c5e6; </span><span class="pln">
</span><span class="com">/* background of panels */</span><span class="pln">
</span><span class="lit">@panel</span><span class="pun">-</span><span class="pln">bg</span><span class="pun">:</span><span class="pln"> </span><span class="com">#f3f3f3;</span><span class="pln">
</span><span class="com">/* frame color of panels */</span><span class="pln">
</span><span class="lit">@panel</span><span class="pun">-</span><span class="pln">inner</span><span class="pun">-</span><span class="pln">border</span><span class="pun">:</span><span class="pln"> </span><span class="com">#e7e7e7;</span><span class="pln">
</span><span class="com">/* remove rounding in blocks */</span><span class="pln">
</span><span class="lit">@border</span><span class="pun">-</span><span class="pln">radius</span><span class="pun">-</span><span class="kwd">base</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="com">/* primary buttons have blue background */</span><span class="pln">
</span><span class="lit">@btn</span><span class="pun">-</span><span class="pln">primary</span><span class="pun">-</span><span class="pln">bg</span><span class="pun">:</span><span class="pln"> </span><span class="lit">@brand</span><span class="pun">-</span><span class="pln">primary</span><span class="pun">;</span><span class="pln"> 
</span><span class="com">/* if the screen width is more then 992px, then the container width is 960px */</span><span class="pln">
</span><span class="lit">@container</span><span class="pun">-</span><span class="pln">md</span><span class="pun">:</span><span class="pln"> </span><span class="lit">960px</span><span class="pun">;</span><span class="pln"> 
</span><span class="com">/* if the screen width is more 1200px, then the container width is 960px again */</span><span class="pln">
</span><span class="lit">@container</span><span class="pun">-</span><span class="pln">lg</span><span class="pun">:</span><span class="pln"> </span><span class="lit">@container</span><span class="pun">-</span><span class="pln">md</span><span class="pun">;</span><span class="pln"> 
</span><span class="com">/* main font is Tahoma */</span><span class="pln">
</span><span class="lit">@font</span><span class="pun">-</span><span class="pln">family</span><span class="pun">-</span><span class="kwd">base</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Tahoma</span><span class="pun">,</span><span class="pln"> sans</span><span class="pun">-</span><span class="pln">serif</span><span class="pun">;</span><span class="pln">
</span><span class="com">/* base font size */</span><span class="pln">
</span><span class="lit">@font</span><span class="pun">-</span><span class="pln">size</span><span class="pun">-</span><span class="kwd">base</span><span class="pun">:</span><span class="pln"> </span><span class="lit">12px</span><span class="pun">;</span><span class="pln"> 
</span><span class="com">/* main color of text */</span><span class="pln">
</span><span class="lit">@text</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> </span><span class="com">#8f8f8f;</span><span class="pln">
</span><span class="com">/* gray background of text fields */</span><span class="pln">
</span><span class="lit">@input</span><span class="pun">-</span><span class="pln">bg</span><span class="pun">:</span><span class="pln"> </span><span class="lit">@panel</span><span class="pun">-</span><span class="pln">bg</span><span class="pun">;</span><span class="pln">
</span><span class="com">/* gray frame of text fields */</span><span class="pln">
</span><span class="lit">@input</span><span class="pun">-</span><span class="pln">border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">@panel</span><span class="pun">-</span><span class="pln">inner</span><span class="pun">-</span><span class="pln">border</span><span class="pun">;</span><span class="pln">
</span><span class="com">/* gray color of the text in the fields */</span><span class="pln">
</span><span class="lit">@input</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> </span><span class="com">#b2b2b2;</span></pre>

<p>
	سيتمّ البدء في كتابة التنسيقات الخاصّة بالمشروع، بعد أنّ تمّ الانتهاء من المُتغيّرات، وذلك في الملفّ <strong>styles.less</strong>، لكن يجب أوّلًا استيراد ملفّ <code>Bootstrap</code> العامّ وملفّ المُتغيّرات:
</p>

<pre class="css ipsCode prettyprint prettyprinted" data-pbcklang="css" data-pbcktabsize="" style="">
<span class="lit">@import</span><span class="pln"> </span><span class="str">"bootstrap/bootstrap.less"</span><span class="pun">;</span><span class="pln">
</span><span class="lit">@import</span><span class="pln"> </span><span class="str">"variables.less"</span><span class="pun">;</span></pre>

<p>
	يَجدر الذكر هنا، أنّ ليس جميع التنسيقات (التي تكون مُعدّة من قبل الإطار نفسه) من المُمكن تغييرها باستخدام المُتغيّرات، بل يجب تغييرها يدويًّا:
</p>

<pre class="css ipsCode prettyprint prettyprinted" data-pbcklang="css" data-pbcktabsize="" style="">
<span class="pln">p </span><span class="pun">{</span><span class="pln">
  margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">20px</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">form</span><span class="pun">-</span><span class="pln">control </span><span class="pun">{</span><span class="pln">
  box</span><span class="pun">-</span><span class="pln">shadow</span><span class="pun">:</span><span class="pln"> none</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">btn </span><span class="pun">{</span><span class="pln">
  font</span><span class="pun">-</span><span class="pln">family</span><span class="pun">:</span><span class="pln"> </span><span class="lit">@brand</span><span class="pun">-</span><span class="pln">font</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

body </span><span class="pun">{</span><span class="pln">
  border</span><span class="pun">-</span><span class="pln">top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">5px</span><span class="pln"> solid </span><span class="com">#7e7e7e;</span><span class="pln">
  background</span><span class="pun">-</span><span class="pln">image</span><span class="pun">:</span><span class="pln"> url</span><span class="pun">(../</span><span class="pln">images</span><span class="pun">/</span><span class="pln">bg</span><span class="pun">.</span><span class="pln">png</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	ستقوم السطور السابقة بإزالة ظل عناصر النموذج (form elements)، وتحديد خطّ خاصّ للنصّ داخل الزر، وإضافة صورة خلفيّة لكامل الصّفحة وحدّ (border) علوي لها.
</p>

<p>
	لن يتمّ بعد الآن ذكر مكان وضع التنسيقات، فستكون دائمًا على الشكل التّالي: المُتغيرات في الملفّ <strong>variables.less</strong>، وجميع التنسيقات المُخصّصة ستكون في الملفّ <strong>styles.less</strong>.
</p>

<h2>
	هيكل HTML
</h2>

<p>
	يبدأ مُخطط الموقع عادةً بما يُسمى هيكل HTML أو HTML skeleton، وهو على الشكل التّالي:
</p>

<pre class="html ipsCode prettyprint prettyprinted" data-pbcklang="html" data-pbcktabsize="" style="">
<span class="dec">&lt;!DOCTYPE html&gt;</span><span class="pln">
</span><span class="tag">&lt;html&gt;</span><span class="pln">
  </span><span class="tag">&lt;head&gt;</span><span class="pln">
    </span><span class="tag">&lt;title&gt;</span><span class="pln">Bootstrap 3 page layout</span><span class="tag">&lt;/title&gt;</span><span class="pln">
    </span><span class="tag">&lt;meta</span><span class="pln"> </span><span class="atn">name</span><span class="pun">=</span><span class="atv">"viewport"</span><span class="pln"> </span><span class="atn">content</span><span class="pun">=</span><span class="atv">"width=device-width, initial-scale=1.0"</span><span class="tag">&gt;</span><span class="pln"> 
    </span><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"css/styles.css"</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="atv">"stylesheet"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="com">&lt;!--[if lt IE 9]&gt;
      &lt;script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"&gt;&lt;/script&gt;
      &lt;script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"&gt;&lt;/script&gt;
    &lt;![endif]--&gt;</span><span class="pln">
  </span><span class="tag">&lt;/head&gt;</span><span class="pln">
  </span><span class="tag">&lt;body&gt;</span><span class="pln">
  </span><span class="tag">&lt;/body&gt;</span><span class="pln">
</span><span class="tag">&lt;/html&gt;</span></pre>

<p>
	تمّ في السطور السابقة العمل على بُنيان مُستند <strong>HTML5</strong> الرئيسي، حيثُ تمّ في الوسم <code>title</code> الإشارة إلى عنوان الصّفحة، وهو ‘Bootstrap 3 page layout’، وفي الوسم <code>&lt;meta&gt;</code> تحديد عرض الصّفحة على أجهزة الهاتف المحمول ليكون مساويًا إلى عرض الشاشة، وضبط مُستوى التكبير (zoom level) في التحميل الأوّل للصفحة، ومن ثُم تمّ ربط صفحة التنسيق (stylesheet)، ومن أجل المُتصفّح Internet Explorer (قبل الإصدار التاسع) تم كتابة سكريبت يَسمح بعرض مُخطّط الصّفحة بشكل مُلائم.
</p>

<h2>
	مُخطّط الصّفحة
</h2>

<p>
	يتألّف مُخطّط الصّفحة من جزئيين: الحاوية الرئيسيّة للمُحتوى الرئيسي، والّتي تتمركز الشاشة وذيل الصّفحة (footer)، وتتألّف الحاوية الرئيسيّة من عمودين: المُحتوى الرئيسي، والشريط الجانبي (sidebar)، ويأتي من الجهة العلويّة رأس الصّفحة (header)، وشريط التنقل (nav)، وعنوان الصّفحة (heading).
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_06/page-layout.png.ec447b674448b4c9d6639083859f8447.png" data-fileid="2305" rel=""><img alt="page-layout.thumb.png.59c6ea858c0d09b690" class="ipsImage ipsImage_thumbnailed" data-fileid="2305" src="https://academy.hsoub.com/uploads/monthly_2015_06/page-layout.thumb.png.59c6ea858c0d09b69053e4ddf57b0b4f.png"></a>
</p>

<p>
	سيتمّ إضافة الشيفرة (الكود) التّالية إلى جذع الصّفحة (body):
</p>

<pre class="html ipsCode prettyprint prettyprinted" data-pbcklang="html" data-pbcktabsize="" style="">
<span class="tag">&lt;body&gt;</span><span class="pln">
  </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"wrapper container"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;header&gt;&lt;/header&gt;</span><span class="pln">
    </span><span class="tag">&lt;nav&gt;&lt;/nav&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"heading"</span><span class="tag">&gt;&lt;/div&gt;</span><span class="pln">
    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"row"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;aside</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-md-7"</span><span class="tag">&gt;&lt;/aside&gt;</span><span class="pln">
      </span><span class="tag">&lt;section</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"col-md-17"</span><span class="tag">&gt;&lt;/section&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span><span class="pln">
  </span><span class="tag">&lt;footer&gt;&lt;/footer&gt;</span><span class="pln">
</span><span class="tag">&lt;/body&gt;</span></pre>

<p>
	تقدّم الشيفرة السابقة التقسيم العام الخاصّ بالأعمدة (columns)، وهي مُحتوات داخل الصنف (class) المُسمى صفّ (<code>row</code>)، وتبدأ أصناف الأعمدة بالبادئة <code>col-</code>، ومن ثم حجم الشاشة وهو أحد أربع (<code>xs</code>, <code>sm</code>, <code>md</code>, <code>lg</code>)، ومن ثم تنتهي بقيمة عرض العمود.
</p>

<p>
	يُمكن للأعمدة أنّ تُحدّد معًا وبقيم أصناف مُختلفة للشاشات، وتُعبّر هذه الأصناف عن عرض العمود لقياسات الشاشة المُختلفة، فمثلًا:
</p>

<pre class="html ipsCode prettyprint prettyprinted" data-pbcklang="html" data-pbcktabsize="" style="">
<span class="kwd">class</span><span class="pun">=</span><span class="str">"col-xs-12 col-md-8"</span></pre>

<p>
	سيتمّ تطبيق الصنف <code>col-xs-12</code> مع الشاشات كبيرة الحجم، وتطبيق الصنف <code>col-md-8</code> على الشاشات الصغيرة، وتُطبّق هذه الأصناف على عرض الشاشات الأكبر والمساوي لقيمة الصنف المُحدّد، وعليه فإن تطبيق الصنف <code>col-md-*</code> على العنصر، سوف لن يؤثر على أجهزة الشاشات المُتوسطة فقط بل أيضًا على أجهزة الشاشات الكبيرة، وذلك في حال عدم حضور صنف من أصناف الشاشات الكبيرة (<code>col-lg-*</code>).
</p>

<p>
	تمّ في الشيفرة السابقة استخدام الأصناف <code>col-md-7</code> و <code>col-md-17</code> والّتي تُشير إلى أنّ كتلة <code>&lt;aside&gt;</code> ستستحوذ على عرض عمود ذو قياس 7 في الشاشات المُتوسطة، وستستحوذ الكتلة <code>&lt;section&gt;</code> على عرض عمود ذو قياس 17، وذلك نسبةً إلى الحاوية الأب (parent container)، مع العلم أنّ مجموع سعات الأعمدة في <code>Bootstrap</code> هو 12، ولكن تمّ زيادة العدد (إلى الضعف) وذلك بهدف الحصول على مزيد من المرونة في التوزيع، ولكن بشكل عام استخدام 12 عمود هو مناسب لمعظم التصاميم.
</p>

<p>
	سيتمّ في الشيفرة التّالية إضافة بعض الحشوة لمُلائمة التنسيق، وذلك إلى الصنف <code>.wrapper</code>، ورأس الصّفحة:
</p>

<pre class="css ipsCode prettyprint prettyprinted" data-pbcklang="css" data-pbcktabsize="" style="">
<span class="pln">body </span><span class="pun">{</span><span class="pln">
  </span><span class="pun">...</span><span class="pln">

  </span><span class="pun">.</span><span class="pln">wrapper </span><span class="pun">{</span><span class="pln">
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="lit">50px</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  header </span><span class="pun">{</span><span class="pln">
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">20px</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	تمّ في الشيفرة السابقة الاستفادة من المعالج المُسبق (preprocessor) وذلك في صياغة التنسيق، حيثُ يَسمح لنا ذلك بكتابة تنسيقات مُتداخلة (nested) وبدون تكرار، والذي سيتمّ صياغتها بعد الترجمة إلى:
</p>

<pre class="css ipsCode prettyprint prettyprinted" data-pbcklang="css" data-pbcktabsize="" style="">
<span class="pln">body </span><span class="pun">.</span><span class="pln">wrapper </span><span class="pun">{...}</span><span class="pln">
body header </span><span class="pun">{...}</span></pre>

<p>
	يَسمح هذا الأسلوب من الإعداد في رؤية بُنيان <strong>HTML</strong> الصحيح داخل <strong>CSS</strong>، ويُقدّم نوعًا من الفرز والتنظيم في كتابة شيفرة <strong>CSS</strong>.
</p>

<h2>
	الختام
</h2>

<p>
	تمّ في هذا الجزء التعرّف على <code>Bootstrap</code>، وإعداد بيئة العمل، وكيفية بناء بُنيان ملفّات المشروع، في الجزء الثّاني سيتمّ الدخول في <a href="https://academy.hsoub.com/code/css/%D8%AA%D8%B5%D9%85%D9%8A%D9%85-%D8%B5%D9%81%D8%AD%D8%A9-%D9%85%D9%88%D9%82%D8%B9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-3-bootstrap-%D8%A7%D9%84%D8%AC%D8%B2%D8%A1-%D8%A7%D9%84%D8%AB%D9%91%D8%A7%D9%86%D9%8A-r91/" rel="">تصميم كل جزء من أجزاء الصّفحة</a>.
</p>

<p>
	ترجمة – وبتصرّف – للمقال <a href="http://www.script-tutorials.com/page-layout-with-boostrap-3/" rel="external nofollow">Page layout with Bootstrap 3</a>.
</p>
]]></description><guid isPermaLink="false">90</guid><pubDate>Tue, 02 Jun 2015 11:15:00 +0000</pubDate></item><item><title>&#x62A;&#x639;&#x631;&#x651;&#x641; &#x639;&#x644;&#x649; &#x639;&#x646;&#x627;&#x635;&#x631; Panels&#x60C; Modal Windows &#x648; Carousel &#x641;&#x64A; &#x625;&#x637;&#x627;&#x631; Bootstrap</title><link>https://academy.hsoub.com/programming/css/bootstrap/%D8%AA%D8%B9%D8%B1%D9%91%D9%81-%D8%B9%D9%84%D9%89-%D8%B9%D9%86%D8%A7%D8%B5%D8%B1-panels%D8%8C-modal-windows-%D9%88-carousel-%D9%81%D9%8A-%D8%A5%D8%B7%D8%A7%D8%B1-bootstrap-r56/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_04/bootstrap-modal_480x300.png.0502317e03366c9d53a789f5d45fb222.png" /></p>

<p dir="rtl">استكمالا لمقال <a href="http://academy.hsoub.com/code/css/%D8%A7%D9%84%D9%82%D9%88%D8%A7%D8%A6%D9%85-%D8%A7%D9%84%D9%85%D9%86%D8%B3%D8%AF%D9%84%D8%A9-dropdowns%D8%8C-%D8%A7%D9%84%D8%AA%D8%A8%D9%88%D9%8A%D8%A8%D8%A7%D8%AA-tabs-%D9%88%D8%A3%D8%B4%D8%B1%D8%B7%D8%A9-%D8%A7%D9%84%D9%82%D9%88%D8%A7%D8%A6%D9%85-navbars-%D9%81%D9%8A-%D8%A5%D8%B7%D8%A7%D8%B1-bootstrap-r55/">مكونات إطار عمل Bootstrap</a>، نعود إليكم في هذا المقال بتكملة لبقية المكونات، وسنتناول مواضيع اللوحات Panels، النوافذ المتوسطة الظهور Modal Windows، وأداة العرض المتكرر Carousel، وخاصية التقلص Collapse.</p><h2 dir="rtl">اللوحات Panels</h2><p dir="rtl">لتكوين عنصر اللوحات بشكل كامل، لزم أن نعرف مكوناته، فتتكون اللوحة من الرأس <span style="font-family:courier new,courier,monospace;">Header</span> وجسم اللوحة <span style="font-family:courier new,courier,monospace;">body</span> والذيل <span style="font-family:courier new,courier,monospace;">Footer</span>، والآن سنقوم بتكوين لوحة أساسية بدون رأس أو ذيل لكي يسهل عليك فهم المكونات.</p><p dir="rtl">ولتكوين لوحة أساسية سنستخدم الصنف <span style="font-family:courier new,courier,monospace;">panel.</span> والصنف <span style="font-family:courier new,courier,monospace;">panel-default.</span> مع الوسم <span style="font-family:courier new,courier,monospace;">&lt;div&gt;</span> الذي يحوي كل عناصر اللوحة، ونستخدم الصنف <span style="font-family:courier new,courier,monospace;">panel-body.</span> لإدراج مكونات اللوحة.</p><p dir="rtl">شيفرة تكوين لوحة في صفحات الويب:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">&lt;div class="panel panel-default"&gt;
  &lt;div class="panel-body"&gt;
    يمكن وضع المحتوى الذي تريد من عناصر الصفحة والنصوص وغيرها
  &lt;/div&gt;
&lt;/div&gt;</pre><p dir="rtl">وهذه مخرجات الشيفرة السابقة:</p><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_04/001-panel.png.436996bbb927bd9b43ab29870c59440e.png"><img data-fileid="953" class="ipsImage ipsImage_thumbnailed" src="https://academy.hsoub.com/uploads/monthly_2015_04/001-panel.thumb.png.f712d7c1f3fd61ab41f897d981affc66.png"></a></p><h3 dir="rtl">رأس وتذييل اللوحة</h3><p dir="rtl">بعد أن تم تكوين الجزء الأساسي في اللوحة نقوم بإضافة الرأس والذيل لهذه اللوحة، لإضافة الرأس نستخدم الصنف <span style="font-family:courier new,courier,monospace;">panel-heading.</span> ولإضافة عنوان في رأس اللوحة نستخدم الصنف <span style="font-family:courier new,courier,monospace;">panel-title.</span> مع الوسم <span style="font-family:courier new,courier,monospace;">&lt;h1&gt;-&lt;h6&gt;</span> حسب الحجم الذي نريده للنص، ولإضافة ذيل اللوحة نستخدم الصنف <span style="font-family:courier new,courier,monospace;">panel-footer.</span> مع الوسم <span style="font-family:courier new,courier,monospace;">&lt;div&gt;</span>.</p><p dir="rtl">وهذه شيفرة تكوين رأس وذيل للوحة السابقة:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">&lt;div class="panel panel-default"&gt;
    &lt;div class="panel-heading"&gt;
        &lt;h3 class="panel-title"&gt;رأس اللوحة&lt;/h3&gt;
    &lt;/div&gt;
    &lt;div class="panel-body"&gt;
        يمكن وضع المحتوى الذي تريد من عناصر الصفحة والنصوص وغيرها 
    &lt;/div&gt;
    &lt;div class="panel-footer"&gt;ذيل اللوحة&lt;/div&gt;
&lt;/div&gt;</pre><p dir="rtl">مخرجات الشيفرة السابقة:</p><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_04/002-panel-with-header.png.ffb779235c93e7b68055dffa2ec9c7cd.png"><img data-fileid="954" class="ipsImage ipsImage_thumbnailed" src="https://academy.hsoub.com/uploads/monthly_2015_04/002-panel-with-header.thumb.png.781752513c4007b6ae1473696e86790a.png"></a></p><p dir="rtl">ونستطيع إضافة عناصر مختلفة إلى الذيل كأن نضيف نصوص أو أزرار مثل زر المشاركة أو قراءة المزيد وغيرها من العناصر التي قد تحتاجها في ذيل اللوحة، ففي المثال التالي سنضيف عناصر متعددة إلى الذيل لتتمكن من إضافة مثلها في موقعك:</p><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_04/003-panel-with-footer.png.e0deb3269fda46d44827834c42f7b5f0.png"><img data-fileid="955" class="ipsImage ipsImage_thumbnailed" src="https://academy.hsoub.com/uploads/monthly_2015_04/003-panel-with-footer.thumb.png.36538e6be61180a96f0c4f393524726c.png"></a></p><h3 dir="rtl">تنسيق اللوحة حسب محتوياتها</h3><p dir="rtl">قد تحتاج إلى إظهار اللوحة بتنسيق يناسب المحتوى كأن يكون لجذب الانتباه أو أن يكون المحتوى لعرض بيانات مهمة، أو أن تكون إرشادات لتحذير المستخدم، فكل هذه المحتويات أو غيرها تستطيع أن تضيف تنسيق مناسب لها في اللوحة ، كما في الصورة التالية:</p><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_04/004-panel-colors.png.2fcf2dda1e0bb8c734a1bf9a7c4454a5.png"><img data-fileid="956" class="ipsImage ipsImage_thumbnailed" src="https://academy.hsoub.com/uploads/monthly_2015_04/004-panel-colors.thumb.png.49d2f6da45efcca079d37ee10474ed9b.png"></a></p><h3 dir="rtl">إضافة الجداول والقوائم وعناصر أخرى إلى اللوحة</h3><p dir="rtl">تعتبر اللوحة كإطار تستطيع أن تضع عليها ما تريد من عناصر وهنا سنضيف جدول وقائمة إلى اللوحة وأنت تستطيع تجربة إضافة عناصر أخرى لترى كيف ممكن أن تستفيد من اللوحات بشكل أفضل، لإضافة عناصر مستقلة إلى اللوحة لا بد من أن تكون في جسم اللوحة أي ضمن الوسم <span style="font-family:courier new,courier,monospace;">&lt;div&gt;</span> الذي يأخذ الصنف <span style="font-family:courier new,courier,monospace;">panel-body.</span> لكي نقول بأن اللوحة عبارة عن إطار لهذا العنصر أما إذا أضفت العنصر في الرأس أو الذيل سيكون من مكونات اللوحة نفسها، لذا سنضيف الجدول في جسم اللوحة ، وننوه إلى أن إطار العمل Bootsrap قد خصص الصنف <span style="font-family:courier new,courier,monospace;">table.</span> خاص بالجداول، وهذه شيفرة إضافة جدول داخل اللوحة:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">...
&lt;div class="panel-body"&gt;
  &lt;table class="table"&gt;
    &lt;th&gt;المنتجات&lt;/th&gt;&lt;th&gt;السعر &lt;/th&gt;
    &lt;tr&gt;&lt;td&gt;التمور&lt;/td&gt;&lt;td&gt;200&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;العسل&lt;/td&gt;&lt;td&gt;400&lt;/td&gt;&lt;/tr&gt;
  &lt;/table&gt;
&lt;/div&gt;
...</pre><p dir="rtl">وستكون المخرجات بهذا الشكل:</p><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_04/005-panel-table.png.7a1d691187a56a56b96eae2a36ff2c4c.png"><img data-fileid="957" class="ipsImage ipsImage_thumbnailed" src="https://academy.hsoub.com/uploads/monthly_2015_04/005-panel-table.thumb.png.733b0549c3daaa5a2b359d203f6efb73.png"></a></p><p dir="rtl">والآن سنضيف قائمة إلى اللوحة، ولا يوجد أي فرق بين إضافة جدول أو قائمة وبين إضافة إي عنصر آخر لذا إذا احتجت أن تضيف أي عنصر كل ما عليك فعله هو أن تدرج هذا العنصر ضمن جسم اللوحة وسنضيف القائمة كمثال ثانٍ على ذلك وهذه شيفرة إضافة قائمة إلى اللوحة:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">...
&lt;div class="panel-body"&gt;
  &lt;p&gt;هذه قائمة بمنتجاتنا المتوفرة في كل الأسواق&lt;/p&gt;
  &lt;ul class="list-group"&gt;
    &lt;li class="list-group-item"&gt;التمور&lt;/li&gt;
    &lt;li class="list-group-item"&gt;العسل&lt;/li&gt;
    &lt;li class="list-group-item"&gt;مشتقات التمور&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;
...</pre><p dir="rtl">جرب أنت الحصول على مخرجات هذه الشيفرة. </p><h2 dir="rtl">النوافذ متوسطة الظهور Modal Window</h2><p dir="rtl">إذا كنت تعرف صندوق الحوار (dialog box) من قبل فهذا يعني أنك ستتعرف على مفهوم النوافذ متوسطة الظهور بسرعة، أما إذا لم تسمع بها من قبل فهيا بنا نستكشف ما معنى النوافذ متوسطة الظهور.</p><p dir="rtl">قد تلاحظ في بعض المواقع التي تتطلب تسجيل الدخول أنها تُظهِر لك نافذة صغيرة في وسط الشاشة من خلالها تُدخِل البيانات المطلوبة قبل الحصول على المحتوى مثلا، أو إذا كنت تستخدم فيس بوك ورغبت بمشاركة منشور أو حذف محتوى وتظهر لك رسالة تأكيدية فهذه هي النوافذ متوسطة الظهور، بحيث تجعل المستخدم يركز على شيء واحد فيعزل بقية المحتوى وتبقى هذه النافذة فقط، ولابد من أن تعرف أنه لإظهار النافذة نحتاج إلى:</p><ol dir="rtl"><li>حدث أو زر يظهر النافذة.</li><li>النافذة ومحتوياتها.</li></ol><p dir="rtl">كما في الصورة التالية:</p><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_04/006-modal-window.png.882b093d40b7972951568f64310dbb4c.png"><img data-fileid="958" class="ipsImage ipsImage_thumbnailed" src="https://academy.hsoub.com/uploads/monthly_2015_04/006-modal-window.thumb.png.2d435701a9fdf88440d3f884792d7692.png"></a></p><p dir="rtl">لإضافة هذه النافذة نستخدم الصنف <span style="font-family:courier new,courier,monospace;">modal.</span> مع الوسم <span style="font-family:courier new,courier,monospace;">&lt;div&gt;</span> سنضع محتويات النافذة ضمن هذا الوسم، ومن ثم نعطي هذا الوسم معرِّف من خلال الخاصية id="" وبعد ذلك نستخدم الخاصية <span style="font-family:courier new,courier,monospace;">role="dialog"</span> أي ان مهمة هذا الوسم هي احتواء النافذة ومكوناتها، ونقوم بإخفاء النافذة من بين محتويات الصفحة باستخدام الخاصية <span style="font-family:courier new,courier,monospace;">aria-hidden="true"</span> إلى أن يأتي حدث إظهارها.</p><p dir="rtl">ستحتاج إلى حدث أو زر عندما يتعامل معه المستخدم يظهر النافذة والذي سيكون منفصلا عن مكونات النافذة بالطبع إذ سيكون من مكونات الصفحة الظاهرة. استعمل إما عنصر الزر <span style="font-family:courier new,courier,monospace;">&lt;button&gt;</span> أو عنصر الروابط <span style="font-family:courier new,courier,monospace;">&lt;a&gt;</span> مع إضافة الخاصية <span style="font-family:courier new,courier,monospace;">data-toggle</span> والخاصية <span style="font-family:courier new,courier,monospace;">data-target</span>، أما الخاصية الأولى والتي تعمل على إظهار العنصر فنحدد لها القيمة <span style="font-family:courier new,courier,monospace;">modal</span>، وأما الخاصية الثانية فتحدد أيا من النوافذ سيتم إظهارها لأنه قد توجد أكثر من نافذة في الصفحة، وبالتالي ستكون القيمة هي المعرف <span style="font-family:courier new,courier,monospace;">id</span> والذي اخترناه مسبقا لهذه النافذة.<br>وهذه الشيفرة توضح الكلام السابق مع بعض الإضافات الأخرى:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">&lt;button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#firstModal"&gt;
  اظهار النافذة
&lt;/button&gt;

&lt;!-- Modal --&gt;
&lt;div class="modal fade" id="firstModal" tabindex="-1" role="dialog" aria-labelledby="firstModallLabel" aria-hidden="true"&gt;
  &lt;div class="modal-dialog"&gt;
    &lt;div class="modal-content"&gt;
      &lt;div class="modal-header"&gt;
        &lt;button type="button" class="close" data-dismiss="modal" aria-hidden="true"&gt;
          &amp;times;
        &lt;/button&gt;
        &lt;h4 class="modal-title" id="firstModalLabel"&gt;
          عنوان النافذة
        &lt;/h4&gt;
      &lt;/div&gt;

      &lt;div class="modal-body"&gt;
        محتويات النافذة
      &lt;/div&gt;

      &lt;div class="modal-footer"&gt;
        &lt;button type="button" class="btn btn-default" data-dismiss="modal"&gt;إلغاء&lt;/button&gt;
        &lt;button type="button" class="btn btn-primary"&gt;
          أرسل البيانات
        &lt;/button&gt;
      &lt;/div&gt;

    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;</pre><p>قد تلاحظ وجود أصناف كثيرة مضافة وخصائص متعددة، دعنا الآن نمر على كل صنف وخاصية تضمنتها الشيفرة السابقة:</p><p dir="rtl">الأصناف <span style="font-family:courier new,courier,monospace;">modal-header.</span> و <span style="font-family:courier new,courier,monospace;">modal-body.</span> و <span style="font-family:courier new,courier,monospace;">modal-footer.</span> أعتقد بأنك ستتعرف عليها وهي مخصصة للعنوان ومحتويات النافذة وكذيل للنافذة، بالترتيب، وأما الخاصية <span style="font-family:courier new,courier,monospace;">aria-labelledby=""</span> فنحدد من خلالها أي العناصر ستكون عنوان للنافذة وبالتالي ستكون قيمتها هي قيمة الخاصية <span style="font-family:courier new,courier,monospace;">id</span> والتي تعتبر معرِّف العنوان <span style="font-family:courier new,courier,monospace;">&lt;h4&gt;</span> والذي يستخدم كعنوان للنافذة، والخاصية <span style="font-family:courier new,courier,monospace;">data-dismiss</span> فتُعطى القيمة <span style="font-family:courier new,courier,monospace;">modal</span> وتُستخدم مع الأزرار التي تُغلِق النافذة.</p><p dir="rtl">وقد تلاحظ أيضا وجود الصنف <span style="font-family:courier new,courier,monospace;">fade.</span> مع الوسم <span style="font-family:courier new,courier,monospace;">&lt;div&gt;</span> الخارجي ويعمل على إضافة تأثير الحركة الذي قد تلاحظها عند ظهور أو اختفاء النافذة، ويمكن الاستغناء عنه ولا يؤثر ذلك على النافذة، فقط سيختفي تأثير الحركة.</p><h3 dir="rtl">أحجام النوافذ متوسطة الظهور Modal window</h3><p dir="rtl">تستطيع التحكم بحجم ظهور النافذة كما تريد، ولكن هذه الأحجام لا تظهر تأثيراتها إلا مع الشاشات الكبيرة والمتوسطة، أما الشاشات الصغيرة فهي سواء، والصنف <span style="font-family:courier new,courier,monospace;">.bs-example-modal-*</span> يستخدم لهذا الغرض فتضع المقاس المناسب (<span style="font-family:courier new,courier,monospace;">lg-sm-md</span>) بدلا من الرمز *، وتستخدم الصنف <span style="font-family:courier new,courier,monospace;">.modal-*</span> مع الوسم الذي يحتوي على الصنف <span style="font-family:courier new,courier,monospace;">modal-dialog.</span>، وهذه الشيفرة توضح استخدام الحجم <span style="font-family:courier new,courier,monospace;">lg,sm</span>:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">&lt;button class="btn btn-primary" data-toggle="modal" data-target="#largeModal"&gt;نافذة كبيرة&lt;/button&gt;
&lt;div id="largeModal" class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog"&gt;
  &lt;div class="modal-dialog modal-lg"&gt;
    ...
  &lt;button class="btn btn-primary" data-toggle="modal" data-target="#smallModal"&gt;نافذة صغيرة&lt;/button&gt;
  &lt;div id="smallModal" class="modal fade" tabindex="-1" role="dialog"&gt;
    &lt;div class="modal-dialog modal-sm"&gt;
</pre><p>بإمكانك تجربة الشيفرة السابقة والتعرف على المخرجات بسهولة.</p><h2 dir="rtl">التقليص Collapse</h2><p dir="rtl">وفر إطار العمل Bootstrap خاصية مميزة وهي خاصية تقليص مكونات العناصر فمثلا إذا كان لديك لوحة ومكوناتها متعددة ومتشعبة فبإمكانك إخفاء المحتويات وإظهارها، ويستخدم الصنف <span style="font-family:courier new,courier,monospace;">collapse.</span> أو الصنف <span style="font-family:courier new,courier,monospace;">collapse in.</span> مع الوسم الخارجي للمحتويات، وسنتناول مثال يوضح ذلك باستخدام مجموعة من اللوحات <span style="font-family:courier new,courier,monospace;">panels</span> تحتوي كل لوحة على نصوص ومحتويات كثيرة، والصورة التالية توضح تقلص لوحة وظهور الأخرى عند النقر عليها:</p><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_04/007-collapse.png.24f89524f35f59c4c87921c0d6f92b17.png"><img data-fileid="959" class="ipsImage ipsImage_thumbnailed" src="https://academy.hsoub.com/uploads/monthly_2015_04/007-collapse.thumb.png.10e0ed2ecc19a1c605ea86434641dd81.png"></a></p><p dir="rtl">وهذه شيفرة الصورة السابقة:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">&lt;div class="panel-group" id="accordion"&gt;
  &lt;div class="panel panel-default"&gt;
    &lt;div class="panel-heading"&gt;
      &lt;h4 class="panel-title"&gt;
        &lt;a data-toggle="collapse" data-parent="#accordion"href="#collapseOne"&gt;
          عنوان لنص طويل
        &lt;/a&gt;
      &lt;/h4&gt;
    &lt;/div&gt;
    &lt;div id="collapseOne" class="panel-collapse collapse in"&gt;
      &lt;div class="panel-body"&gt;
        نص طويل يوضع هنا أو محتويات كثيرة
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class="panel panel-default"&gt;
  &lt;div class="panel-heading"&gt;
    &lt;h4 class="panel-title"&gt;
      &lt;a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo"&gt;
        عنوان لنص طويل
      &lt;/a&gt;
    &lt;/h4&gt;
  &lt;/div&gt;
  &lt;div id="collapseTwo" class="panel-collapse collapse"&gt;
    &lt;div class="panel-body"&gt;
      نص طويل يوضع هنا أو محتويات كثيرة
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;
</pre><p dir="rtl">في هذه الشيفرة تم إضافة الصنف <span style="font-family:courier new,courier,monospace;">panel-group.</span> في الوسم الخارجي <span style="font-family:courier new,courier,monospace;">&lt;div&gt;</span> والذي يستخدم لتجميع مجموعة من اللوحات، وتم إعطاء الوسم الخارجي <span style="font-family:courier new,courier,monospace;">&lt;div&gt;</span> المعرِّف <span style="font-family:courier new,courier,monospace;">id="father"</span> والمخصص للتعامل مع العناصر التي يتم تقليصها وبالتالي سيكون هذا الوسم أبٌ لجميع الوسوم الموجودة ضمن محتوياته، وتم إضافة لوحتان <span style="font-family:courier new,courier,monospace;">panels</span> إلى المجموعة وفي كل لوحة تم وضع الوسم &lt;a&gt; -ضمن محتويات العنوان- وفيه الخاصية <span style="font-family:courier new,courier,monospace;">data-toggle="collapse"</span>، والخاصية <span style="font-family:courier new,courier,monospace;">data-parent="#father" </span>إشارة إلى العنصر الأب لكي لا ينتقل خارجه، أما خاصية الانتقال <span style="font-family:courier new,courier,monospace;">href="#id"</span>، فنضع معرِّف المحتوى المراد الانتقال إليه.</p><p dir="rtl">وأما المحتوى المراد إخفاؤه و إظهاره فيكون ضمن الوسم <span style="font-family:courier new,courier,monospace;">&lt;div&gt;</span> فيأخذ الصنف <span style="font-family:courier new,courier,monospace;">panel-collapse.</span> والصنف <span style="font-family:courier new,courier,monospace;">collapse.</span> ولابد من وضع معرِّف <span style="font-family:courier new,courier,monospace;">id</span> خاص به، لأنه عندما ننتقل إلى محتوى لابد وأن يكون فريدا لكي يتم الانتقال إليه لا إلى غيره.</p><p dir="rtl">وهناك أصناف إضافية تستطيع أن تستخدمها أثناء التقليص:</p><ol dir="rtl"><li><span style="font-family:courier new,courier,monospace;">Collapse</span> يستخدم لإخفاء المحتويات افتراضيا كما في اللوحة الثانية في المثال السابق.</li><li><span style="font-family:courier new,courier,monospace;">Collapse in</span> يستخدم لإظهار المحتويات افتراضيا كما في اللوحة الأولى في المثال السابق.</li><li><span style="font-family:courier new,courier,monospace;">Collapsing</span> يستخدم إذا كنت لا ترغب في إخفاء محتويات لوحة إذا أظهرت محتويات لوحة أخرى، لأن الوضع الافتراضي أنه إذا أظهرت محتويات لوحة فإن بقية اللوحات تتقلص ولكن في هذا الصنف فإن المحتويات تبقى كما هي إلى أن تنقر مرة أخرى على نفس اللوحة.</li></ol><h3 dir="rtl">تقليص محتويات عناصر أخرى</h3><p dir="rtl">محتويات اللوحات ليس كل شيء فيمكنك تقليص محتويات أخرى كأن تعمل تقليصًا لمحتويات قائمة list أو أن تعمل تقليصًا لمحتويات جدول أو لأي محتويات أخرى، وهنا سنتطرق إلى مثال آخر وهو تقليص نص عند النقر على زر محدد، وهذه الشيفرة تعمل على إظهار و إخفاء النص عند النقر على الزر ونريد أن يكون النص ظاهرا وهذا يعني أننا سنستخدم الصنف <span style="font-family:courier new,courier,monospace;">collapse in.</span> مع الوسم <span style="font-family:courier new,courier,monospace;">&lt;div&gt;</span> الذي تقع المحتويات ضمنه، كما في الشيفرة التالية:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">&lt;button type="button" class="btn btn-primary" data-toggle="collapse" data-target="#text"&gt;
  إظهار/ إخفاء النص
&lt;/button&gt;

&lt;div id="text" class="collapse in"&gt;
  &lt;p&gt;اي نصي يمكن وضعه هنا ومن خلاله تستطيع ان تظهر المعنى الذي تريد لزوار موقعك حسب الرؤية لديك ويمكنك وضع اي نص فهذا مجرد نص تجريبي ولا يعتبر نهائي انما مجرد نص ليتضح التصميم اكثر ومع كل مره يتم تحميل هذا القالب فإن النص يبقى كما هو ولا يتغير لأنه من ضمن تركيبة الصفحة وليس مدرج من قاعدة بيانات لذا تستطيع ان تغير هذا النص متى ما تريد&lt;/p&gt;
&lt;/div&gt;</pre><p>ومخرجات الشيفرة السابقة ستكون كما في الشكل التالي -قبل أن يتم النقر على الزر-في أول مرة:</p><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_04/008-toggle-text.png.a96a70f845696eb36ecb36e917e13ad6.png"><img data-fileid="960" class="ipsImage ipsImage_thumbnailed" src="https://academy.hsoub.com/uploads/monthly_2015_04/008-toggle-text.thumb.png.a523de424caab85af04773298c9532e5.png"></a></p><h2 dir="rtl">أداة العرض المتكرر Carousel</h2><p dir="rtl">أداة العرض المتكرر أو أداة عرض الصور بشكل متحرك، أو ما يدعى بأداة عرض الشرائح <span style="font-family:courier new,courier,monospace;">Slider</span> تعتبر من الأدوات الرائعة التي يقدمها إطار العمل Bootstrap، بحيث تمكِّن المصممون من إنشاء عرض للشرائح <span style="font-family:courier new,courier,monospace;">slides</span> بشكل رائع وبخطوات بسيطة جدا، فهيا بنا ننشئ أداة العرض المتكرر <span style="font-family:courier new,courier,monospace;">Carousel</span>:</p><p dir="rtl">في البداية، لا بد من إضافة الوسم الخارجي <span style="font-family:courier new,courier,monospace;">&lt;div&gt;</span> والذي سيضم عناصر الأداة كاملة، ونضيف الصنف <span style="font-family:courier new,courier,monospace;">carousel.</span> والصنف <span style="font-family:courier new,courier,monospace;">slide.</span> إلى هذا الوسم، ونعطيه معرِّف <span style="font-family:courier new,courier,monospace;">id</span> فريد ونسميه على سبيل المثال <span style="font-family:courier new,courier,monospace;">firstCarousel</span>، وهناك فترة زمنية قصيرة بين ظهور كل صورة وأخرى ونحدد هذه الفترة من خلال الخاصية <span style="font-family:courier new,courier,monospace;">data-interval="3000"</span> – وهذه القيمة تقاس بالملي ثانية أي أن الرقم 3000 السابق عبارة عن 3 ثوانٍ فقط -،طبعا الخاصية هذه تضاف إلى الوسم السابق، ولبدء تحريك الأداة عند تحميل الصفحة نضيف الخاصية <span style="font-family:courier new,courier,monospace;">data-ride="carousel"</span>.</p><p dir="rtl">كما في الشيفرة التالية:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">&lt;div id="firstCarousel" class="carousel slide" data-interval="3000" data-ride="carousel"&gt;
  ...
&lt;/div&gt;</pre><h3>محتويات أداة العرض المتكرر</h3><p dir="rtl">تتكون أداة العرض المتكرر من عدة عناصر كما يلي:</p><ul dir="rtl"><li>عناصر المحتوى الداخلي (الصورة والنص الذي يصف الصورة).</li><li>عناصر تحريك المحتويات باتجاه اليمين أو اليسار.</li><li>عناصر إعلام المستخدم بمدى تقدم الأداة <span style="font-family:courier new,courier,monospace;">carousel-indecators</span>.</li></ul><p dir="rtl">والصورة التالية توضح هذه الأجزاء:</p><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_04/009-carousel.png.45fb6765b85695dc6679982b897a942b.png"><img data-fileid="961" class="ipsImage ipsImage_thumbnailed" src="https://academy.hsoub.com/uploads/monthly_2015_04/009-carousel.thumb.png.0dcb9321d9536e69a6a1e03b37e299a9.png"></a></p><p dir="rtl">بعد أن تم إنشاء الإطار الخارجي للأداة سننشئ الآن المكونات، وأول هذه المكونات هي المحتويات الأساسية أو الداخلية <span style="font-family:courier new,courier,monospace;">inner</span> وأقل شيء يمكن إضافته للمحتويات هو الصورة، ولكن قبل أن نضيف الصورة سننشئ جزء المحتويات باستخدام الوسم <span style="font-family:courier new,courier,monospace;">&lt;div&gt;</span> مع الصنف <span style="font-family:courier new,courier,monospace;">carousel-inner.</span> ومن ثم ننشئ جزء مخصص لكل عنصر من المحتويات الداخلية باستخدام الصنف <span style="font-family:courier new,courier,monospace;">item. </span>مع الوسم <span style="font-family:courier new,courier,monospace;">&lt;div&gt;</span> ونضيف الصنف <span style="font-family:courier new,courier,monospace;">active.</span> لأول عنصر ولا نضيفه مع بقية العناصر، ومن ثم نضيف الصورة باستخدام الوسم <span style="font-family:courier new,courier,monospace;">&lt;img&gt;</span>، وأما النصوص التي تصف الصورة وتظهر في الجزء السفلي من الأداة فيتم أضافتها باستخدام الصنف <span style="font-family:courier new,courier,monospace;">carousel-caption.</span> مع الوسم <span style="font-family:courier new,courier,monospace;">&lt;div&gt;</span>، كما في الشيفرة التالية:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">&lt;div class="carousel-inner"&gt;
  &lt;div class="active item"&gt;
    &lt;img src="img/1.jpg" alt="image 1"/&gt;
    &lt;div class="carousel-caption"&gt;
      &lt;h3&gt;العمل الاول للمؤسسة&lt;/h3&gt;
      &lt;p&gt;وصف للعمل الذي أعطينا صورته في الخلفية وهذا مجرد نص أمامي&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  ...</pre><p dir="rtl">تتحرك المحتويات تلقائيا في وقت معين كما حددناه في الإطار الخارجي للأداة ولكن أذا رغبنا بإعطاء المستخدم الحرية في التنقل بين الشرائح فقد وفر إطار العمل Bootstrap3 هذه الخاصية من خلال استخدام الصنف <span style="font-family:courier new,courier,monospace;">carousel-control left.</span> للتحريك باتجاه اليسار أو الصنف <span style="font-family:courier new,courier,monospace;">carousel-control right.</span> للتحريك باتجاه اليمين، ونستخدم هذا الصنف مع الوسم <span style="font-family:courier new,courier,monospace;">&lt;a&gt;</span>، ولابد من إضافة الخاصية <span style="font-family:courier new,courier,monospace;">data-slide="" </span>ونضع لها القيمة إما <span style="font-family:courier new,courier,monospace;">prev</span> للعودة إلى الشريحة السابقة أو القيمة <span style="font-family:courier new,courier,monospace;">next</span> للتقدم إلى الشريحة التالية، ولا تنسى أن تضيف أيقونة تعبر عن الاتجاه، وذلك باستخدام الصنف <span style="font-family:courier new,courier,monospace;">.glyphicon-chevron-*</span> مع الوسم <span style="font-family:courier new,courier,monospace;">&lt;span&gt;</span>، ونستبدل الرمز <span style="font-family:courier new,courier,monospace;">*</span> بـ <span style="font-family:courier new,courier,monospace;">left</span> أو <span style="font-family:courier new,courier,monospace;">right</span> حسب الاتجاه، كما في الشيفرة التالية:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">&lt;a class="carousel-control left" href="#firstCarousel" data-slide="prev"&gt;
  &lt;span class="glyphicon glyphicon-chevron-left"&gt;&lt;/span&gt;
&lt;/a&gt;

&lt;a class="carousel-control right" href="#firstCarousel" data-slide="next"&gt;
  &lt;span class="glyphicon glyphicon-chevron-right"&gt;&lt;/span&gt;
&lt;/a&gt;</pre><p dir="rtl">ولاستكمال بقية العناصر في الصورة السابقة سنضيف المزيد من الوضوح إلى الأداة فنستخدم عنصر التنبيه لإعلام المستخدم بمدى تقدم أداة العرض وهذه الأداة مهمة خصوصا إذا كان العرض يحتوي على الكثير من المحتويات، ونضيفها باستخدام الصنف <span style="font-family:courier new,courier,monospace;">carousel-indicators.</span> مع وسم القائمة <span style="font-family:courier new,courier,monospace;">&lt;ol&gt;</span> وعلى حسب عدد مكونات الأداة نضيف عناصر <span style="font-family:courier new,courier,monospace;">&lt;li&gt;</span> في هذه القائمة، وعناصر القائمة <span style="font-family:courier new,courier,monospace;">&lt;ol&gt;</span> تأخذ الخاصية <span style="font-family:courier new,courier,monospace;">data-target="#carousel-id"</span> وقيمة هذه الخاصية عبارة عن معرّف لأداة العرض المتكرر، ونضيف الخاصية <span style="font-family:courier new,courier,monospace;">data-slide-to="#"</span> بحيث تحتوي قيمة هذه الخاصية على رقم الشريحة الظاهرة في الوقت الحالي على الأداة ويبدأ الترقيم من الصفر صعودا إلى عدد الشرائح في الأداة. كما في المثال التالي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">&lt;ol class="carousel-indicators"&gt;
  &lt;li data-target="#firstCarousel" data-slide-to="0" class="active"&gt;&lt;/li&gt;
  &lt;li data-target="#firstCarousel" data-slide-to="1"&gt;&lt;/li&gt;
  &lt;li data-target="#firstCarousel" data-slide-to="2"&gt;&lt;/li&gt;
&lt;/ol&gt;
</pre><p dir="rtl"><span style="line-height: 22.3999996185303px;">وبهذا نكون قد انتهينا من تكوين أداة عرض متكرر بسيطة، وهذه الشيفرة الكاملة للأداة والتي ستكون مخرجاتها كما في الصورة السابقة الذكر:</span></p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">&lt;div id="firstCarousel" class="carousel slide" data-interval="3000" data-ride="carousel"&gt;
  &lt;div class="carousel-inner"&gt;
    &lt;div class="active item"&gt;
      &lt;img src="img/1.jpg" alt="image 1"/&gt;
      &lt;div class="carousel-caption"&gt;
        ...
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class="item"&gt;
      &lt;img src="img/2.jpg" alt="image 1"/&gt;
      &lt;div class="carousel-caption"&gt;
        ...
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class="item"&gt;
      &lt;img src="img/3.jpg" alt="image 1"/&gt;
      &lt;div class="carousel-caption"&gt;
        ...
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;a class="carousel-control left" href="#firstCarousel" data-slide="prev"&gt;
    &lt;span class="glyphicon glyphicon-chevron-left"&gt;&lt;/span&gt;
  &lt;/a&gt;

  &lt;a class="carousel-control right" href="#firstCarousel" data-slide="next"&gt;
    &lt;span class="glyphicon glyphicon-chevron-right"&gt;&lt;/span&gt;
  &lt;/a&gt;

  &lt;ol class="carousel-indicators"&gt;
    &lt;li data-target="#firstCarousel" data-slide-to="0" class="active"&gt;&lt;/li&gt;
    &lt;li data-target="#firstCarousel" data-slide-to="1"&gt;&lt;/li&gt;
    &lt;li data-target="#firstCarousel" data-slide-to="2"&gt;&lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</pre><p>بإمكانك عزيز القارئ أن تراجع جميع أمثلة هذه المقالة وتعدل عليها وتضيف أشياء من عندك لكي تستفيد بأكبر قدر ممكن لأن القراءة وحدها لا تكفي، وستكون قادرا على التعامل مع إطار العمل Bootstrap بكل المميزات إذا عملت على تطبيق كل جزئية وزدت عليها بأمثلة من عندك فإذا كان الوقت متاحًا لك حاليا، فلا تتردد في تطبيق المزيد من الأمثلة وتكثر من الاطلاع، فقد لا يكون الوقت متاحا لك مرة أخرى.</p>
]]></description><guid isPermaLink="false">56</guid><pubDate>Sat, 04 Apr 2015 07:50:00 +0000</pubDate></item><item><title>&#x627;&#x644;&#x642;&#x648;&#x627;&#x626;&#x645; &#x627;&#x644;&#x645;&#x646;&#x633;&#x62F;&#x644;&#x629; (Dropdowns)&#x60C; &#x627;&#x644;&#x62A;&#x628;&#x648;&#x64A;&#x628;&#x627;&#x62A; (Tabs) &#x648;&#x623;&#x634;&#x631;&#x637;&#x629; &#x627;&#x644;&#x642;&#x648;&#x627;&#x626;&#x645; (Navbars) &#x641;&#x64A; &#x625;&#x637;&#x627;&#x631; Bootstrap</title><link>https://academy.hsoub.com/programming/css/bootstrap/%D8%A7%D9%84%D9%82%D9%88%D8%A7%D8%A6%D9%85-%D8%A7%D9%84%D9%85%D9%86%D8%B3%D8%AF%D9%84%D8%A9-dropdowns%D8%8C-%D8%A7%D9%84%D8%AA%D8%A8%D9%88%D9%8A%D8%A8%D8%A7%D8%AA-tabs-%D9%88%D8%A3%D8%B4%D8%B1%D8%B7%D8%A9-%D8%A7%D9%84%D9%82%D9%88%D8%A7%D8%A6%D9%85-navbars-%D9%81%D9%8A-%D8%A5%D8%B7%D8%A7%D8%B1-bootstrap-r55/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_04/bootstrap-dropdown_480x300.png.2b65a7cbf29431f9ebdc35e0fa20c671.png" /></p>

<p dir="rtl" style="text-align: justify;">يوفر إطار العمل Bootstrap الكثير من المكونات والعناصر التي يمكن استخدامها في تصميم موقعك بشكل منسّق، لأن كل هذه المكونات لديها أنماط وتنسيقات مجهّزة ومعدّة سلفا، وما عليك إلا الاهتمام بمكان وضع هذه المكونات وكيفية استخدامها أما عن تنسيقها فاترك الأمر لـِ Bootstrap، وفي هذه المقالة سنتناول بعضًا من هذه المكونات.</p><h2 dir="rtl">القوائم المنسدلة Drop Downs</h2><p dir="rtl" style="text-align: justify;">لإضافة قائمة منسدلة لأي عنصر في الصفحة يجب أن نتعرف على ثلاثة قواعد أساسية وهي:</p><ol><li><p dir="rtl" style="text-align: justify;">وجود العنصر الذي نريد أن تظهر القائمة المنسدلة عليه.</p></li><li><p dir="rtl" style="text-align: justify;">وجود القائمة التي ستظهر إذا تم النقر على العنصر.</p></li><li><p dir="rtl" style="text-align: justify;">نضع العنصر مع القائمة في الوسم &lt;div&gt; والذي سيأخذ الصنف .dropdown</p></li></ol><p dir="rtl" style="text-align: justify;">والمثال التالي يوضح قائمة منسدلة بسيطة للعنصر &lt;button&gt;:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">&lt;div class="dropdown"&gt;
  &lt;button type="button" class="btn btn-primary dropdown-toggle" id="dropdwonmenu1" data-toggle="dropdown"&gt;
    &lt;span class="glyphicon glyphicon-cog"&gt;&lt;/span&gt; الإعدادات    
  &lt;/button&gt;    

  &lt;ul class="dropdown-menu" role="menu" aria-lablledby="dropdownmenu1"&gt;
    &lt;li role="presentatino"&gt;
      &lt;a href="#" role="menuitem" &gt;الإعدادات الشخصية &lt;/a&gt;
    &lt;/li&gt;
    &lt;li role="presentation"&gt; 
      &lt;a href="#" role="menuitem" &gt;إعدادات الصفحة&lt;/a&gt;        
    &lt;/li&gt;        
    &lt;li role="presentation"&gt;           
      &lt;a href="#" role="menuitem" &gt;الإعدادات العامة&lt;/a&gt;        
    &lt;/li&gt;    
  &lt;/ul&gt;
&lt;/div&gt;
</pre><p dir="rtl">وهذه مخرجات الشيفرة السابقة:</p><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_04/001-btn-Drop-Downs.png.6f52d3091e23676161e678167ef53cf1.png"><img data-fileid="941" class="ipsImage ipsImage_thumbnailed" src="https://academy.hsoub.com/uploads/monthly_2015_04/001-btn-Drop-Downs.thumb.png.22ed179e20f34231a5fb6311cd63b322.png"></a></p><p dir="rtl" style="text-align: justify;">تم استخدام الصنف <span style="font-family:courier new,courier,monospace;">dropdown.</span> مع الوسم الذي يحيط بكلا من الزر والقائمة، واستخدمنا الصنف .dropdown-toggle مع الزر &lt;button&gt;،ويعمل هذا الصنف على إظهار القائمة إذا كانت مخفية أثناء النقر على الزر وإخفائها إذا كانت ظاهرة، وتم استخدام أيقونة الإعدادات لتدل على المحتوى، ولاحظ أيضا أنه تم استخدام الصّنف .dropdown-menu مع القائمة &lt;ul&gt; واستخدام الخاصية aria-labelledby وقيمتها عبارة عن المعرف id للزّر، ولا تغفل عن الخاصية role مع كل عنصر من العناصر السابقة فكل عنصر له دوره في هذه القائمة.</p><h3 dir="rtl">إضافة عنوان وفواصل بين أجزاء القائمة</h3><p dir="rtl" style="text-align: justify;">يمكن إضافة عنوان لكل مجموعة عناصر في القائمة باستخدام الصنف .dropdown-header وإضافته كصنف لعنصر من عناصر القائمة، ويمكن كذلك إضافة فاصلة تفصل عناصر المجموعة عن بعضها البعض تستطيع استخدامها قبل كل عنوان أو مع كل مجموعة عناصر لها معنى مشترك وذلك باستخدام الصنف .divider كما يلي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">&lt;div class="dropdown"&gt;  
  &lt;a href="#"  class="btn btn-primary dropdown-toggle" id="dropdownMenu2" data-toggle="dropdown"&gt;
    الخدمات  
    &lt;span class="caret"&gt;&lt;/span&gt;    
  &lt;/a&gt;    

  &lt;ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu2"&gt;        
    &lt;li role="presentation" class="dropdown-header"&gt;طرق الدفع المتوفرة&lt;/li&gt;        
    &lt;li role="presentation" &gt;
      &lt;a role="menuitem" tabindex="-1" href="#"&gt;فيزا&lt;/a&gt;        
    &lt;/li&gt;        
    &lt;li role="presentation"&gt;            
      &lt;a role="menuitem" tabindex="-1" href="#"&gt;ماستر&lt;/a&gt;       
    &lt;/li&gt;        
    &lt;li role="presentation"&gt;           
      &lt;a role="menuitem" tabindex="-1" href="#"&gt; الدفع عند التوصيل &lt;/a&gt;        
    &lt;/li&gt;        
    &lt;li role="presentation" class="divider"&gt;&lt;/li&gt;        
    &lt;li role="presentation" class="dropdown-header"&gt;رأس القائمة بعد الفاصل&lt;/li&gt;       
    &lt;li role="presentation"&gt;            
      &lt;a role="menuitem" tabindex="-1" href="#"&gt;عنصر في القائمة&lt;/a&gt;       
    &lt;/li&gt;   
  &lt;/ul&gt;
&lt;/div&gt;
</pre><p dir="rtl" style="text-align: justify;">ومخرجات الشيفرة السابقة كما يلي:</p><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_04/002-btn-Drop-Downs-divider.png.98e3cc2a76ee73dbc403ece3652e44c4.png"><img data-fileid="942" class="ipsImage ipsImage_thumbnailed" src="https://academy.hsoub.com/uploads/monthly_2015_04/002-btn-Drop-Downs-divider.thumb.png.3a0d7efff55bd0f5c6922944f0b2ebbd.png"></a></p><h3 dir="rtl">محاذاة القائمة</h3><p dir="rtl" style="text-align: justify;">تعمل المحاذاة على إظهار القائمة في الجهة المقابلة للعنصر فإذا كان العنصر في الجهة اليسرى للصفحة فعند النقر عليه تظهر القائمة في الجهة اليمنى من الصفحة والعكس صحيح وبإمكانك إدراج المحاذاة باستخدام الصنف .pull-right في وسم القائمة &lt;ul&gt; كما يلي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">&lt;ul class="dropdown-menu pull-right" role="menu" aria-labelledby="dropdownMenu2"&gt;
  ...
&lt;/ul&gt;
</pre><p dir="rtl">بإمكانك اكتشاف النتيجة بنفسك من خلال تطبيق مثال مناسب أو من خلال الأمثلة المرفقة بهذا الدرس.</p><h2 dir="rtl">التبويبات Tabs</h2><p dir="rtl">يوفر عنصر التبويبات الكثير من المساحة في الصفحة ذلك لأنه يعرض جزءًا من المحتوى مع كل تبويب يتم اختياره كما هو موضح في الصورة التالية:</p><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_04/003-tabs.png.cbb2828e6de57141f33c116817baf07b.png"><img data-fileid="943" class="ipsImage ipsImage_thumbnailed" src="https://academy.hsoub.com/uploads/monthly_2015_04/003-tabs.thumb.png.2a224e1ebc558ea16d855d518cae4e8d.png"></a></p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">&lt;ul class="nav nav-tabs"&gt;    
  &lt;li class="active"&gt;&lt;a data-toggle="tab" href="#sectionA"&gt;التبويب الأول&lt;/a&gt;&lt;/li&gt;    
  &lt;li&gt;&lt;a data-toggle="tab" href="#sectionB"&gt;التبويب الثاني&lt;/a&gt;&lt;/li&gt;    
  &lt;li class="dropdown"&gt;        
    &lt;a data-toggle="dropdown" class="dropdown-toggle" href="#"&gt;
      تبويب القائمة المنسدلة &lt;b class="caret"&gt;&lt;/b&gt;
    &lt;/a&gt;        
    &lt;ul class="dropdown-menu"&gt;           
      &lt;li&gt;&lt;a data-toggle="tab" href="#dropdown1"&gt;العنصر الأول&lt;/a&gt;&lt;/li&gt;           
      &lt;li&gt;&lt;a data-toggle="tab" href="#dropdown2"&gt;العنصر الثاني&lt;/a&gt;&lt;/li&gt;       
    &lt;/ul&gt;    
  &lt;/li&gt;
&lt;/ul&gt;

&lt;div class="tab-content"&gt;   
  &lt;div id="sectionA" class="tab-pane fade in active"&gt;      
    &lt;h3&gt;القسم الأول&lt;/h3&gt;       
    &lt;p&gt;المحتوى...&lt;/p&gt;    
  &lt;/div&gt;   
 
  &lt;div id="sectionB" class="tab-pane fade"&gt;      
    &lt;h3&gt;القسم الثاني&lt;/h3&gt;          
    &lt;p&gt;المحتوى...&lt;/p&gt;   
  &lt;/div&gt;    

  &lt;div id="dropdown1" class="tab-pane fade"&gt;      
    &lt;h3&gt;القسم الثالث&lt;/h3&gt;       
    &lt;p&gt;المحتوى...&lt;/p&gt;   
  &lt;/div&gt;    

  &lt;div id="dropdown2" class="tab-pane fade"&gt;        
    &lt;h3&gt;القسم الرابع&lt;/h3&gt;        
    &lt;p&gt;المحتوى...&lt;/p&gt;    
  &lt;/div&gt;
&lt;/div&gt;</pre><p dir="rtl" style="text-align: justify;">يستخدم الصنف .nav والصنف .nav-tabمع الوسم &lt;ul&gt; الذي يستخدم لإنشاء قائمة التبويبات، وتستخدم الخاصية data-toggle="tab" مع كل عنصر في القائمة، وبالإمكان استخدام القائمة المنسدلة كتبويب وذلك باستخدام الصنف .dropdown-menu مع الوسم &lt;ul&gt;، ويمكن إضافة محتوى للتبويب من خلال استخدام الصنف .tab-content مع الوسم &lt;div&gt; الذي يضم محتوى كل التبويبات، واستخدام الصنف .tab-pane مع الوسم &lt;div&gt;الذي يضم محتوى التبويب، ولا تنس إضافة المُعرّف id مع كل وسم &lt;div&gt; لأجل أن يتم الإشارة إليه في الخاصية href="#id" في قائمة التبويبات.</p><h2 dir="rtl">شريط القوائم Navbar</h2><p dir="rtl" style="text-align: justify;">يوفر إطار العمل Bootstrap أشرطة قوائم متعددة ومختلفة، بمعرفة أسماء الأصناف وقليل من الجهد تستطيع إضافتها وتخصيصها حسب الحاجة.</p><h3 dir="rtl" style="text-align: justify;">شريط القوائم الافتراضي</h3><p dir="rtl" style="text-align: justify;">وسنبدأ الشرح بشريط الأدوات الافتراضي والذي لا يحتوي على أي عناصر إضافية فقط عناصر القائمة ذات الوسم &lt;li&gt;، يمكن إضافته عن طريق إضافة الصنف .navbar والصنف .navbar-default و الخاصية role="navigation" إلى الوسم &lt;nav&gt;، كما يلي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">&lt;nav class="navbar navbar-default" role="navigation"&gt;    
  &lt;div class="navbar-header"&gt;        
    &lt;a class="navbar-brand" href="#"&gt;إطار العمل Bootstrap 3&lt;/a&gt;    
  &lt;/div&gt;    

  &lt;div&gt;       
    &lt;ul class="nav navbar-nav"&gt;            
      &lt;li class="active"&gt;&lt;a href="#"&gt;الرئيسية&lt;/a&gt;&lt;/li&gt;            
      &lt;li&gt;&lt;a href="#"&gt;عن الكاتب&lt;/a&gt;&lt;/li&gt;            
      &lt;li class="dropdown"&gt;               
        &lt;a href="#" class="dropdown-toggle" data-toggle="dropdown"&gt; 
          مكونات إطار العمل 
          &lt;b class="caret"&gt;&lt;/b&gt;                
        &lt;/a&gt;                
        &lt;ul class="dropdown-menu"&gt;                    
          &lt;li&gt;&lt;a href="#"&gt;القوائم المنسدلة&lt;/a&gt;&lt;/li&gt;                    
          &lt;li&gt;&lt;a href="#"&gt;التبويبات&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a href="#"&gt;أشرطة القوائم&lt;/a&gt;&lt;/li&gt;
          &lt;li class="divider"&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a href="#"&gt;الأزرار&lt;/a&gt;&lt;/li&gt;
          &lt;li class="divider"&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a href="#"&gt;النماذج&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;            
      &lt;/li&gt;        
    &lt;/ul&gt;    
  &lt;/div&gt;
&lt;/nav&gt;</pre><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_04/004-navbar-default.png.4807ebcc5810451bfa3c09578df1b96b.png"><img data-fileid="944" class="ipsImage ipsImage_thumbnailed" src="https://academy.hsoub.com/uploads/monthly_2015_04/004-navbar-default.thumb.png.d2cb978ad9852dc0bcb8864c79c1cbae.png"></a></p><p dir="rtl" style="text-align: justify;">قبل أن ننتقل إلى الحديث حول الخصائص الإضافية دعونا نعرج قليلا على الشيفرة السابقة. الصنف .navbar-brand يتم وضع صورة أو نص لشعار الموقع، ويظهر بشكل مميز عن بقية عناصر القائمة، الصنف .dropdown المستخدم مع الصنف &lt;li&gt; يستخدم لإنشاء قائمة منسدلة كما تعرفنا على ذلك مسبقا، والصنف .active تجعل من العنصر الذي يوضع فيه هو العنصر الفعّال، أي العنصر الذي تم اختياره.</p><h3 dir="rtl">شريط القوائم المتجاوب Responsive</h3><p dir="rtl" style="text-align: justify;">الوضع الافتراضي في شريط الأدوات أنه مناسب مع شاشات الأجهزة الكبيرة والمتوسطة والأجهزة اللوحية ولكن يمكن جعل شريط القوائم متجاوب مع شاشات الأجهزة الصغيرة أيضا من خلال استخدام الصنف .collapse والصنف .navbar-collapse إلى الوسم &lt;nav&gt; فيعمل على تقليص القائمة إلى زر في حالة الشاشات الصغيرة، وعند النقر على الزر تنسدل القائمة بكل محتوياتها، كما يوضح الشكل التالي:</p><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_04/005-navbar-collapse.png.0073502beec85f63951947f6768b2ac2.png"><img data-fileid="945" class="ipsImage ipsImage_thumbnailed" src="https://academy.hsoub.com/uploads/monthly_2015_04/005-navbar-collapse.thumb.png.9d4dcb1ec66ebf9f528ebbd63f2615d1.png"></a></p><p dir="rtl" style="text-align: justify;">وشيفرة تكوين شريط القوائم المنسدلة هي:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">&lt;nav class="navbar navbar-default" role="navigation"&gt;    
  &lt;div class="navbar-header"&gt;

    &lt;button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#example-navbar-collapse"&gt;  
      &lt;span class="sr-only"&gt;قائمة منسدلة&lt;/span&gt;
      &lt;span class="icon-bar"&gt;&lt;/span&gt;
      &lt;span class="icon-bar"&gt;&lt;/span&gt;
      &lt;span class="icon-bar"&gt;&lt;/span&gt;
    &lt;/button&gt;
    &lt;a class="navbar-brand" href="#"&gt;شريط متجاوب&lt;/a&gt;    

  &lt;/div&gt;

  &lt;div class="collapse navbar-collapse" id="example-navbar-collapse"&gt;    
    &lt;ul class="nav navbar-nav"&gt;        
      &lt;li class="active"&gt;&lt;a href="#"&gt;الرئيسية&lt;/a&gt;&lt;/li&gt;
       ...
&lt;/nav&gt;
</pre><p dir="rtl" style="text-align: justify;">نقلت لكم الجزء الذي عليه تعديلات أما بقية الشيفرة فكما هي موضحة في شيفرة الشريط الافتراضي. وكما تلاحظ فإننا استعملنا الصنف .navbar-toggle مع وسم الزر &lt;button&gt; لكي يظهر أو يخفي القائمة عكس للوضع التي هي عليه( إذا كانت ظاهرة يقوم بإخفائها وإذا كانت مخفية يظهرها)، وتم استعمال الأيقونات الثلاث التي تعطي شكل مميز للزر عند ظهوره كما لاحظت في الصورة السابقة، كذلك إضافة الخاصية data-target="#id" ويشير إلى المعرف الخاص بالوسم &lt;div&gt; المضاف في هذه الشيفرة ليحتوي عناصر القائمة كاملة و يأخذ الصنف .collapse والصنف .navbar-collapse، اللذان يعطيانه خاصية تقليص collapse شريط القائمة في حالة الشاشات الصغيرة.</p><h3 dir="rtl">إضافة عناصر أخرى في شريط القوائم</h3><p dir="rtl" style="text-align: justify;">يمكن إضافة عناصر مختلفة إلى شريط القوائم مثل أداة النصوص والأزرار والنصوص التوضيحية والروابط، وأدوات النماذج بشكل عام، حسب الحاجة، فقد تحتاج إلى إضافة مربع للبحث، إضافة نصوص توضيحية، أو روابط مناسبة (كروابط الشبكات الاجتماعية، أو روابط داخل الموقع)، كما في الشكل التالي:</p><p style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_04/006-navbar-search.png.7280617fea2583a50491f09ee76b00f2.png"><img data-fileid="946" class="ipsImage ipsImage_thumbnailed" src="https://academy.hsoub.com/uploads/monthly_2015_04/006-navbar-search.thumb.png.9fb23134b4e6cc9ac63e7c497c438ca9.png"></a></p><p dir="rtl">وهذه شيفرة الشكل السابق:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">&lt;nav class="navbar navbar-default" role="navigation"&gt;    
  &lt;div class="navbar-header"&gt;        
    &lt;a class="navbar-brand" href="#"&gt;إضافة النماذج&lt;/a&gt;    
  &lt;/div&gt;   
 
  &lt;div&gt;        
    &lt;button type="button" class="btn btn-default navbar-btn navbar-right"&gt;            
      &lt;span class="glyphicon glyphicon-download"&gt;&lt;/span&gt; تحميل المنتج       
    &lt;/button&gt;        
 
    &lt;form class="navbar-form navbar-right" role="search"&gt;            
      &lt;div class="form-group"&gt;               
        &lt;input type="text" class="form-control" placeholder="بحث عن..."&gt;           
      &lt;/div&gt;            
      &lt;button type="submit" class="btn btn-default"&gt;بحث&lt;/button&gt;        
    &lt;/form&gt;        
   
    &lt;p class="navbar-text navbar-left" style="text-align:left;"&gt;هذا نص يمكن به توضيح أي شيء&lt;/p&gt;            
    &lt;a href="#" class="navbar-link navbar-left"&gt;هذا رابط&lt;/a&gt;    
  &lt;/div&gt;
&lt;/nav&gt;</pre><p dir="rtl" style="text-align: justify;">إذًا يمكنك إطار العمل Bootstrap من إضافة العديد من العناصر ففي المثال تمت إضافة نموذج وزر ورابط تشعبي ونص عادي، وتلاحظ أيضا في الشكل السابق أن العناصر لم تكن في موضع واحد بل كان منها عناصر في الجهة اليسرى وأخرى في الجهة اليمنى وهذا ما يدعى المحاذاة في شريط القوائم، فيمكنك محاذاة العناصر باستخدام الصنف .navbar-left أو .navbar-right ولكن شريطة أن تحتوي أيضا على الصنف .navbar-* والرمز * يمكن استبداله بأي خاصية مناسبة (.navbar-form, .navbar-link, .navbar-text, .navbar-btn).</p><h3 dir="rtl">شريط القوائم المتحرك Fixed</h3><p dir="rtl" style="text-align: justify;">صحيح أنك قد لا تستطيع تحريكها أينما تريد ولكن هذه القائمة تتحرك عندما تحرك عجلة الفأرة أو عند تحريك شريط التمرير الجانبي، نزولا وصعودا، وقد يكون الشريط في أعلى أو أسفل الصفحة حسب الحاجة إلى ذلك. تستطيع أن تضيف هذا الشريط باستخدام الصنف .navbar-fixed-* مع الوسم &lt;nav&gt; والرمز * يتم استبداله بـ top أو bottom حسب المكان الذي ترغب في ظهور شريط القوائم فيه كما في الصورة التالية فتلاحظ القائمة العلوية والسفلية ولكن لا يمكن تجربة تحريكها لأنها صورة! وستكتشف أنت ذلك عندما تطبق هذا الجزء من المقال:</p><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_04/007-fixed-navbar.png.cda0dba57ffe3c3979225af14437c790.png"><img data-fileid="947" class="ipsImage ipsImage_thumbnailed" src="https://academy.hsoub.com/uploads/monthly_2015_04/007-fixed-navbar.thumb.png.57298617429f12fbdbbc129717ea9971.png"></a></p><p dir="rtl" style="text-align: justify;">وهذه شيفرة الشكل السابق:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">&lt;nav class="navbar navbar-default navbar-fixed-top" role="navigation"&gt;
  ...
&lt;/nav&gt;

&lt;nav class="navbar navbar-default navbar-fixed-bottom" role="navigation"&gt;
  ...
&lt;/nav&gt;</pre><h3 dir="rtl">شريط القوائم الثابتة static</h3><p dir="rtl" style="text-align: justify;">يتميز هذا النوع من أشرطة القوائم بثباته في الموقع فلا يمكن إضافة الصنف .navbar-fixed إليه، ويستخدم الصنف .navbar-static-* وكما أسلفنا بأنه يتم استبدال الرمز * في حالة القائمة العلوية بـ top وفي حالة القائمة السفلية بـ bottom. والشكل سيكون نفس الأشكال السابقة، يمكنك الاطلاع عليه من خلال الأمثلة المرفقة أو أن تقوم بتطبيق ذلك بنفسك.</p><h3 dir="rtl">تنسيق مميز من إطار العمل Bootstrap لشريط القوائم</h3><p dir="rtl" style="text-align: justify;">يستخدم الصنف .navbar-inverse لعكس اللون الأمامي مع اللون الخلفي فيصبح الأسود أبيض والأبيض أسودا. وهذا يعطي شكلًا مُميّزًا للقائمة، كما تلاحظ في الصورة التالية:</p><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_04/008-navbar-inverse.png.7519a35c5ca922b15fd9f8c75b538eac.png"><img data-fileid="948" class="ipsImage ipsImage_thumbnailed" src="https://academy.hsoub.com/uploads/monthly_2015_04/008-navbar-inverse.thumb.png.1970c061f60f419bbe1d228a5a849686.png"></a></p><p dir="rtl">وهذا جزء من الشيفرة الخاصة بعكس ألوان شريط القوائم:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">&lt;nav class="navbar navbar-default navbar-inverse" role="navigation"&gt;    
  &lt;div class="navbar-header"&gt;
    ...
&lt;/nav&gt;</pre><h2 dir="rtl">القوائم lists</h2><p dir="rtl" style="text-align: justify;">تعتبر القوائم &lt;ul&gt; من أساسيات الـ HTML ، وفي الـ Bootstrap كذلك، فبإمكانك تكوين قائمة بشكل منظم وبسيط، فمجرد استخدامك للصنف .list-group مع الوسم &lt;ul&gt; والصنف .list-group-item مع الوسم &lt;li&gt; ستنشئ قائمة بتنسيق رائع نوعا ما – لأن هناك بعض الأصناف والخصائص سنتحدث عنها في الفقرات التالية من المقال- وليس هذا فحسب بل وهناك مكونات تستطيع إضافتها إلى القائمة، والشيفرة التالية لتكوين قائمة من أربعة عناصر:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint" style="text-align: justify;">&lt;ul class="list-group"&gt;    
  &lt;li class="list-group-item"&gt;المنتجات&lt;/li&gt;    
  &lt;li class="list-group-item"&gt;الخدمات العامة&lt;/li&gt;    
  &lt;li class="list-group-item"&gt;كبار العملاء&lt;/li&gt;   
  &lt;li class="list-group-item"&gt;التخفيضات&lt;/li&gt;
&lt;/ul&gt;</pre><p dir="rtl">ومخرجات الشيفرة السابقة كما يلي:</p><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_04/009-list-group.png.421cde8925d517cc18d20153254b85a6.png"><img data-fileid="949" class="ipsImage ipsImage_thumbnailed" src="https://academy.hsoub.com/uploads/monthly_2015_04/009-list-group.thumb.png.c4a4ad95b9b137a81b818409d830b2e1.png"></a></p><p dir="rtl" style="text-align: justify;">وتستطيع إضافة القائمة السابقة إلى موقعك من خلال الوسم &lt;a&gt; أيضا ولكن يلزم أن تتضمَّن كل الوسوم &lt;a&gt; التي تكون القائمة ضمن الوسم &lt;div&gt; والذي سيأخذ الصنف .list-group بينما الوسم &lt;a&gt; سيأخذ الصنف .list-group-item باعتباره يكوّن عناصر القائمة وهذه شيفرة تكوين القائمة باستخدام الوسم &lt;a&gt; أما النتيجة فستكون كما في الصورة السابقة:</p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">&lt;div class="list-group"&gt;
  &lt;a class="list-group-item"&gt;المنتجات&lt;/a&gt;
  &lt;a class="list-group-item"&gt;الخدمات العامة&lt;/a&gt;
  &lt;a class="list-group-item"&gt;كبار العملاء&lt;/a&gt;
  &lt;a class="list-group-item"&gt;التخفيضات&lt;/a&gt;
&lt;/div&gt;
</pre><h3 dir="rtl">تنسيقات وعناصر أكثر في القائمة</h3><p dir="rtl" style="text-align: justify;">هناك بعض التنسيقات التي تستطيع إضافتها من خلال إطار العمل Bootstrap إلى القائمة، كأن تضيف عنوان وتضع له نصا في نفس القائمة أو أن تضيف عنوان لمجموعة من العناصر داخل القائمة، فالصنف .list-group-item-heading يستخدم مع الوسم &lt;h*&gt; الذي يستخدم كعنوان لعنصر في القائمة، والصنف .list-group-item-text يستخدم مع الوسم &lt;p&gt; لكتابة محتوى عنصر القائمة ، ولعنونة مجموعة من العناصر داخل القائمة، نستخدم النص .active مع الوسم &lt;a&gt; أي أنه عنصر في القائمة ولكن يحتوي على الوسم &lt;h*&gt; المستخدم للعنونة كما في الشيفرة التالية والتي تحتوي على عنوان لمجموعة عناصر وعنوان ومحتوى لكل عنصر:</p><pre data-pbcklang="html" data-pbcktabsize="2" class="html ipsCode prettyprint">&lt;div class="list-group"&gt;

  &lt;a href="#" class="list-group-item active"&gt;
    &lt;h4 class="list-group-item-heading"&gt;
      المنتجات
    &lt;/h4&gt;
  &lt;/a&gt;

  &lt;a href="#" class="list-group-item"&gt;
    &lt;h4 class="list-group-item-heading"&gt;
      مواد غذائية
    &lt;/h4&gt;
    &lt;p class="list-group-item-text"&gt;
      ننتج العديد من المواد الغذائية كالبسكويت والعصائر...        
    &lt;/p&gt;
  &lt;/a&gt;

  &lt;a href="#" class="list-group-item"&gt;
    &lt;h4 class="list-group-item-heading"&gt;
      الحلويات
    &lt;/h4&gt;
    &lt;p class="list-group-item-text"&gt;
      الحلويات من أهم المنتجات التي نتميز بها...
    &lt;/p&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;div class="list-group"&gt;
  &lt;a href="#" class="list-group-item active"&gt;
    &lt;h4 class="list-group-item-heading"&gt;
      المنتجات المستوردة
    &lt;/h4&gt;
  &lt;/a&gt;

  &lt;a href="#" class="list-group-item"&gt;
    &lt;h4 class="list-group-item-heading"&gt;
      السكر
    &lt;/h4&gt;
    &lt;p class="list-group-item-text"&gt;
      نستورد أجود أنواع السكر البرازيلي...
    &lt;/p&gt;
  &lt;/a&gt;
&lt;/div&gt;</pre><p dir="rtl" style="text-align: justify;"><a rel="external nofollow" name="_GoBack"></a> وهذه مخرجات الشيفرة السابقة، كما تلاحظ يوجد عنونة لمجموعة من العناصر في القائمة وعنونة في العنصر نفسه مع وجود محتوى يصف العنوان في كل عنصر:</p><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_04/010-list-group-item-heading.png.cd6620b385b32606af5931239d5d6762.png"><img data-fileid="950" class="ipsImage ipsImage_thumbnailed" src="https://academy.hsoub.com/uploads/monthly_2015_04/010-list-group-item-heading.thumb.png.e4a06b96d5ba8c80d8c66b4c319b4c02.png"></a></p><h3 dir="rtl">إضافة شارات مميزة Badges إلى القائمة</h3><p dir="rtl" style="text-align: justify;">الإشارات المميزة badges تعتبر من الإضافات الرائعة التي يمكن دمجها مع القوائم فتعطي انطباع حول محتويات القائمة أو إشارة إلى عنصر محدد في القائمة يتميز عن بقية العناصر كما تلاحظها في الصورة التالية:</p><p dir="rtl" style="text-align: center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_04/011-badges.png.5ed64d1e5d4c0806afae85d445d8c8d5.png"><img data-fileid="951" class="ipsImage ipsImage_thumbnailed" src="https://academy.hsoub.com/uploads/monthly_2015_04/011-badges.thumb.png.3581df1d7b8b69846521bac2200f08c6.png"></a></p><p dir="rtl"><span style="line-height: 22.3999996185303px;">وشيفرة إضافة الإشارات المميزة كما يلي</span><span style="line-height: 22.3999996185303px;">:</span></p><pre data-pbcklang="html" data-pbcktabsize="4" class="html ipsCode prettyprint">...
&lt;li class="list-group-item"&gt;كبار العملاء &lt;/li&gt;
&lt;li class="list-group-item"&gt;
    &lt;span class="badge"&gt;جديد&lt;/span&gt; الفروع
&lt;/li&gt;
&lt;li class="list-group-item"&gt;المبيعات&lt;/li&gt;
&lt;li class="list-group-item"&gt;
  &lt;span class="badge"&gt;الفترة محدودة&lt;/span&gt;تخفيضات آخر الموسم
&lt;/li&gt;
...</pre><p dir="rtl" style="text-align: justify;">فكل ما استخدمناه هو وسم الـ &lt;span&gt; مع الصنف .badge الذي يستدعي الإشارة المميزة في طرف القائمة.</p><p dir="rtl" style="text-align: justify;">وبهذا نكون قد انتهينا من ذكر بعض مكونات الـ bootstrap وإن شاء الله في مقال مكونات إطار العمل Bootstrap -الجزء الثاني- سنتطرق إلى المكونات الأخرى.</p>
]]></description><guid isPermaLink="false">55</guid><pubDate>Thu, 02 Apr 2015 13:31:03 +0000</pubDate></item><item><title>&#x627;&#x644;&#x623;&#x632;&#x631;&#x627;&#x631; &#x648;&#x627;&#x644;&#x623;&#x64A;&#x642;&#x648;&#x646;&#x627;&#x62A; &#x648;&#x627;&#x644;&#x646;&#x645;&#x627;&#x630;&#x62C; &#x641;&#x64A; &#x625;&#x637;&#x627;&#x631; &#x627;&#x644;&#x639;&#x645;&#x644; Bootstrap</title><link>https://academy.hsoub.com/programming/css/bootstrap/%D8%A7%D9%84%D8%A3%D8%B2%D8%B1%D8%A7%D8%B1-%D9%88%D8%A7%D9%84%D8%A3%D9%8A%D9%82%D9%88%D9%86%D8%A7%D8%AA-%D9%88%D8%A7%D9%84%D9%86%D9%85%D8%A7%D8%B0%D8%AC-%D9%81%D9%8A-%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-bootstrap-r52/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_03/bootstrap-buttons_480x300.png.d6019abdbc2dd1f8da4a20015b88ba8e.png" /></p>

<p style="text-align:justify;">تعتبر الأزرار من أهم العناصر المستخدمة في صفحات الويب لذا فقد اهتم بها إطار العمل Bootstrap وأعطاها خصائص كثيرة ومتعددة، تستطيع تكوين الأزرار باستخدام الوسم <span style="font-family:'courier new', courier, monospace;">&lt;button&gt;&lt;/button&gt;</span> أو الوسم <span style="font-family:'courier new', courier, monospace;">&lt;a&gt;&lt;/a&gt;</span>.فيما يلي عرض للأصناف التي يمكن إضافتها إلى الوسمين السابقين لتخصيص الأزرار حسب الحاجة:</p><ul><li><span style="font-family:'courier new', courier, monospace;">.btn</span> وهو الصنف الرئيسي الذي لابد من إضافته في أي زر سواء كان باستخدام الوسم <span style="font-family:'courier new', courier, monospace;">&lt;button&gt;</span> أو <span style="font-family:'courier new', courier, monospace;">&lt;a&gt;</span>.</li><li><span style="font-family:'courier new', courier, monospace;">.btn-primary</span> ويستخدم مع الزر الأساسي في الصفحة أو النموذج.</li><li><span style="font-family:'courier new', courier, monospace;">.btn-info</span> ويستخدم مع زر الحصول على المعلومات.</li><li><span style="font-family:'courier new', courier, monospace;">.btn-warning</span> ويستخدم في حالة كانت هناك احتمالات أخرى وأردت تنبيه المستخدم لذلك.</li><li><span style="font-family:'courier new', courier, monospace;">.btn-danger </span>ويستخدم في حالة التحذير من عواقب الإقدام على شيء كأن تستخدمه ليكون زر حذف شيء معين من الصفحة.</li><li><span style="font-family:'courier new', courier, monospace;">.btn-default</span> الزر الافتراضي بدون أي تنسيقات إضافية، ويستخدم في أي حالة أخرى غير الحالات السابقة.</li></ul><p style="text-align:justify;">مثال يوضح استخدامات الأصناف السابقة وتأثيرها على الأزرار:</p><pre class="html ipsCode prettyprint">&lt;button type="button" class="btn"&gt;زر بدون تأثير&lt;/button&gt;
&lt;button type="button" class="btn btn-default"&gt;الزر الافتراضي&lt;/button&gt;
&lt;button type="button" class="btn btn-primary"&gt;زر أساسي&lt;/button&gt;
&lt;button type="button" class="btn btn-info"&gt;المزيد من المعلومات&lt;/button&gt;
&lt;button type="button" class="btn btn-warning"&gt;انتبه لهذا&lt;/button&gt;
&lt;button type="button" class="btn btn-danger"&gt;زر الخطر&lt;/button&gt;

&lt;button type="button" class="btn btn-success"&gt;إنهاء بنجاح&lt;/button&gt;
&lt;button type="button" class="btn btn-link"&gt;الزر كارتباط تشعبي&lt;/button&gt;</pre><p>ومخرجات الشيفرة السابقة كما يلي:</p><p style="text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_03/buttons.png.e0b7228c5de1d8642f4bd2dabe7ae1e0.png"><img data-fileid="842" class="ipsImage ipsImage_thumbnailed" alt="buttons.thumb.png.b69ca635420b03e4bbc184" src="https://academy.hsoub.com/uploads/monthly_2015_03/buttons.thumb.png.b69ca635420b03e4bbc1843a0693f944.png"></a></p><p>وتنطبق هذه الأصناف أيضا على الوسم &lt;a&gt;&lt;/a&gt; جرب ذلك واكتشف النتيجة بنفسك.</p><h2>تخصيص الأزرار (الحجم)</h2><p>يوفر إطار العمل Bootstrap عدة مقاسات تستطيع استخدامها وتخصيص الزر بالحجم الذي تريد كما يلي:</p><ul><li><span style="font-family:'courier new', courier, monospace;">.btn-lg</span> صنف للشاشات الكبيرة.</li><li><span style="font-family:'courier new', courier, monospace;">md.</span> الحجم المُتوسّط (إذا لم تستعمل أي صنف فسيكون الحجم الافتراضي وهو الحجم المتوسط)</li><li><span style="font-family:'courier new', courier, monospace;">.btn-sm</span> صنف للشاشات الصغيرة.</li><li><span style="font-family:'courier new', courier, monospace;">.btn-xs</span> صنف للشاشات الصغرى.</li></ul><p>وهذا الكود يوضح كيفية استخدام هذه الأصناف لتخصيص حجم الأزرار:</p><pre class="html ipsCode prettyprint">&lt;button type="button" class="btn btn-primary btn-lg"&gt;
    زر بدون تأثير وحجم كبير 
&lt;/button&gt;
&lt;button type="button" class="btn btn-default"&gt;
    الزر الافتراضي بالحجم الافتراضي
&lt;/button&gt;
&lt;button type="button" class="btn btn-primary btn-sm"&gt;
    زر أساسي وحجم صغير
&lt;/button&gt;
&lt;button type="button" class="btn btn-primary btn-xs"&gt;
    المزيد من المعلومات والحجم الأصغر
&lt;/button&gt;
&lt;button type="button" class="btn btn-warning btn-lg"&gt;
    انتبه لهذا الحجم الكبير
&lt;/button&gt;
&lt;button type="button" class="btn btn-danger btn-sm"&gt;
    زر الخطر الحجم الصغير
&lt;/button&gt;</pre><p>مخرجات الشيفرة السابقة:</p><p style="text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_03/buttons-sizes.png.a46b00834a10e3366b14abc9ffcd4608.png"><img data-fileid="841" class="ipsImage ipsImage_thumbnailed" alt="buttons-sizes.thumb.png.91f2e5368f7328f6" src="https://academy.hsoub.com/uploads/monthly_2015_03/buttons-sizes.thumb.png.91f2e5368f7328f65d0c02368730135d.png"></a></p><h2 style="text-align:justify;">تجميع الأزرار في مجموعة واحدة</h2><p style="text-align:justify;">يسمح لك الصنف .btn-group بإنشاء مجموعة من الأزرار وتجميعها في صف واحد. لإنشاء ذلك ننشئ تقسيم في الصفحة باستخدام الوسم &lt;div&gt; ونستعمل الصنف .btn-group لهذا الوسم، ومن ثم ننشئ الأزرار داخله كما يلي:</p><pre class="html ipsCode prettyprint">&lt;div class="btn-group"&gt; 
  &lt;button type="button" class="btn btn-primary"&gt;1&lt;/button&gt; 
  &lt;button type="button" class="btn btn-primary"&gt;2&lt;/button&gt; 
  &lt;button type="button" class="btn btn-primary"&gt;3&lt;/button&gt; 
  &lt;button type="button" class="btn btn-primary"&gt;4&lt;/button&gt;
&lt;/div&gt;</pre><p>مخرجات الشيفرة السابقة:</p><p style="text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_03/btn-group.png.33d8f5b7f280c79050fc030cb747500a.png"><img data-fileid="840" class="ipsImage ipsImage_thumbnailed" alt="btn-group.thumb.png.6caf57a1a0b834b407b1" src="https://academy.hsoub.com/uploads/monthly_2015_03/btn-group.thumb.png.6caf57a1a0b834b407b1ab7ab735ee5d.png"></a></p><p style="text-align:justify;">وبإمكانك تخصيص حجم الأزرار كاملة في هذه المجموعة من خلال استخدام الصنف<span style="font-family:'courier new', courier, monospace;">.btn-group-*</span> وتستبدل الرمز * بأي حجم (<span style="font-family:'courier new', courier, monospace;">lg-sm-xs</span>). وتستطيع استخدام الصنف<span style="font-family:'courier new', courier, monospace;">.btn-group-justified</span> لتكون جميع الأزرار متساوية مع بعضها البعض وتتمدد لتشمل كل العرض (<span style="font-family:'courier new', courier, monospace;">width</span>) المتوفر.</p><p style="text-align:justify;">وهناك صنف آخر وهو <span style="font-family:'courier new', courier, monospace;">.btn-block</span> يمكنك من خلاله أن تجعل الزر يأخذ عرض الصفحة كاملة أو عرض العنصر الأب فإذا وجد في عمود من أعمدة النظام الشبكي Grid system فإنه يأخذ عرض(<span style="font-family:'courier new', courier, monospace;">width</span>) العمود كاملا، وهذا يوضع عادة في المتاجر الإلكترونية عند شراء المنتجات أو يستخدم في صفحات تحميل البرامج وغيرها، مثال:</p><pre class="html ipsCode prettyprint">&lt;button type="button" class="btn btn-default btn-lg btn-block"&gt;
   هذا الزر يأخذ عرض الصفحة كاملا
&lt;/button&gt;

&lt;hr/&gt;
&lt;button type="button" class="btn btn-primary btn-lg btn-block"&gt;
  &lt;span class="glyphicon glyphicon-download"&gt;&lt;/span&gt; تحميل المرفقات
&lt;/button&gt;

&lt;hr/&gt;
&lt;div class="row"&gt;

  &lt;div class="col-sm-4"&gt; 
    &lt;button type="button" class="btn btn-warning btn-lg btn-block"&gt;
      &lt;span class="glyphicon glyphicon-credit-card"&gt;&lt;/span&gt; شراء المنتج
    &lt;/button&gt; 
  &lt;/div&gt;

  &lt;div class="col-sm-8"&gt; 
    &lt;button type="button" class="btn btn-success btn-lg btn-block"&gt;
      &lt;span class="glyphicon glyphicon-send"&gt;&lt;/span&gt; ارسل
    &lt;/button&gt; 
  &lt;/div&gt;

&lt;/div&gt;</pre><p>مخرجات الشيفرة السابقة:</p><p style="text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_03/btn-block.png.307c949730e28f0d9eaa2253ba73f8e3.png"><img data-fileid="839" class="ipsImage ipsImage_thumbnailed" alt="btn-block.thumb.png.c8dcf8c328e1016ceee8" src="https://academy.hsoub.com/uploads/monthly_2015_03/btn-block.thumb.png.c8dcf8c328e1016ceee8a3833fd766b2.png"></a></p><p><strong>ملاحظة:</strong> بإمكانك الاطلاع على كافة الخصائص والأصناف التي تم شرحها من خلال <a href="http://academy.hsoub.com/applications/core/interface/file/attachment.php?id=912">الأمثلة المرفقة</a>.</p><h2>الأيقونات</h2><p>تستخدم الأيقونات مع الأزرار والقوائم وأشرطة الأدوات Toolbars، وأدوات التنقل Navigation، والنماذج وغيرها من العناصر الأخرى، وهناك حوالي 200 أيقونة يوفرها Bootstrap. لا يتوجب عليك حفظ أسماء الأيقونات فإذا احتجت إلى اسم أيقونة كل ما عليك فعله هو زيارة الموقع الرسمي لإطار العمل.</p><p>دائما تستخدم الأيقونات مع الوسم &lt;span&gt; وتستدعى من خلال الصنف.glyphicon والصنف.glyphicon-name حيث أن الصنف الأول لتهيئة التصميم لاستقبال الأيقونات، والصنف الثاني لاستدعاء اسم الأيقونة المراد استخدامها.</p><pre class="html ipsCode prettyprint">&lt;span class="glyphicon glyphicon-download"&gt;&lt;/span&gt;
&lt;span class="glyphicon glyphicon-qrcode"&gt;&lt;/span&gt;

&lt;button class="btn btn-primary btn-lg"&gt;
  &lt;span class="glyphicon glyphicon-search"&gt;&lt;/span&gt;
&lt;/button&gt;

&lt;button class="btn btn-info btn-md"&gt;
  &lt;span class="glyphicon glyphicon-envelope"&gt;&lt;/span&gt; ارسل الرسالة
&lt;/button&gt;

&lt;a href="#" class="btn btn-sucess btn-lg"&gt;
  &lt;span class="glyphicon glyphicon-comment"&gt;&lt;/span&gt;إضافة تعليق
&lt;/a&gt;</pre><p>مخرجات الشيفرة السابقة:</p><p style="text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_03/glyphicon.png.f0cbe83329b9f81393875458b03853d5.png"><img data-fileid="846" class="ipsImage ipsImage_thumbnailed" alt="glyphicon.thumb.png.38cc79929ac8dfa4a8d1" src="https://academy.hsoub.com/uploads/monthly_2015_03/glyphicon.thumb.png.38cc79929ac8dfa4a8d1c95d2be90faf.png"></a></p><h2>النماذج وعناصرها في Bootstrap</h2><p>كان تصميم النماذج وتنسيق كل عنصر داخل النموذج من أصعب الأعمال التي يقوم بها المصمم أثناء العمل على تصميم المواقع، ولكن Bootstrap وفر الكثير من الجهد في هذا الجانب وأعطى تنسيقًا لكل عنصر داخل النموذج. ويقسم Bootstrap النماذج إلى ثلاثة أنواع:</p><ol><li>النموذج العمودي</li><li>النموذج الأفقي.</li><li>نموذج السطر الواحد <span style="font-family:'courier new', courier, monospace;">inline</span>.</li></ol><p style="text-align:justify;">قبل البدء بتفاصيل كتابة الشيفرة والأصناف المتوفرة لكل نوع من الأنواع السابقة، دعونا نتفق على القواعد التالية:</p><ul><li style="text-align:justify;">الخاصية <span style="font-family:'courier new', courier, monospace;">&lt;"form role="form&gt;</span> نستخدمها دائما مع النماذج.</li><li style="text-align:justify;">يجب أن تكون العناصر <span style="font-family:'courier new', courier, monospace;">&lt;"label&gt;&lt;/label&gt; ،&lt;input type="text/&gt;</span> داخل الوسم <span style="font-family:'courier new', courier, monospace;">&lt;"div class="form-group&gt;</span> وذلك لإعطائها التنسيق المناسب.</li><li style="text-align:justify;">نستخدم الصنف <span style="font-family:'courier new', courier, monospace;">.form-control </span>مع العناصر <span style="font-family:'courier new', courier, monospace;">&lt;input&gt; ،&lt;textarea&gt; ،&lt;select&gt;</span>.</li></ul><p>وفيما يلي الأصناف المستخدمة والتنسيق النهائي الذي يظهر على النموذج في كل نوع من الأنواع الثلاثة السابقة:</p><h3>النموذج العمودي</h3><p>وهو النموذج الافتراضي الذي تتسلسل فيه الأدوات بشكل عمودي، كما في الشكل التالي:</p><p style="text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_03/form.png.f8515d23d3372ae2d95482f88fb168b1.png"><img data-fileid="845" class="ipsImage ipsImage_thumbnailed" alt="form.thumb.png.76f0bfd2832e956da517e6cf2" src="https://academy.hsoub.com/uploads/monthly_2015_03/form.thumb.png.76f0bfd2832e956da517e6cf28d8a12b.png"></a></p><p>شيفرة النموذج السابق:</p><pre class="html ipsCode prettyprint">&lt;form role="form"&gt; 

  &lt;div class="form-group"&gt; 
    &lt;label for="inputtext"&gt;اسم المستخدم:&lt;/label&gt; 
    &lt;input type="text" id="inputtext" class="form-control" placeholder="اسم المستخدم" /&gt; 
  &lt;/div&gt; 

  &lt;div class="form-group"&gt; 
    &lt;label for="password"&gt;كلمة المرور:&lt;/label&gt; 
    &lt;input type="password" id="password" class="form-control" placeholder="كلمة المرور"/&gt; 
  &lt;/div&gt; 

  &lt;div class="checkbox"&gt; 
    &lt;label&gt;&lt;input type="checkbox" /&gt;تذكرني على هذا المتصفح&lt;/label&gt; 
  &lt;/div&gt; 
  &lt;input type="button" class="btn btn-primary btn-md" value="تسجيل الدخول"/&gt;

&lt;/form&gt;</pre><p>وكما تلاحظ يجب أن تلتزم بالقواعد السابقة الذكر لكي يظهر التصميم بالشكل المطلوب.</p><h3>النموذج الأفقي</h3><p>التنسيق في هذا النموذج مختلف عن تنسيق النموذج السابق حيث يتم وضع كل العناصر المترابطة في ترتيب أفقي كما هو موضح في الشكل التالي:Horizontal-form.png</p><p>وشيفرة النموذج كما يلي:</p><pre class="html ipsCode prettyprint">&lt;form class="form-horizontal" role="form"&gt; 

  &lt;div class="form-group"&gt; 
    &lt;label for="inputtext"class="control-label col-md-2"&gt;اسم المستخدم:&lt;/label&gt; 
    &lt;div class="col-md-10"&gt; 
      &lt;input type="text" id="inputtext" class="form-control" placeholder="اسم المستخدم" /&gt; 
    &lt;/div&gt; 
  &lt;/div&gt; 

  &lt;div class="form-group"&gt; 
    &lt;label for="password" class="control-label col-md-2"&gt;كلمةالمرور:&lt;/label&gt; 
    &lt;div class="col-md-10"&gt; 
      &lt;input type="password" id="password" class="form-control" placeholder="كلمة المرور"/&gt; 
    &lt;/div&gt; 
  &lt;/div&gt; 

  &lt;div class="form-group"&gt; &lt;div class="col-xs-offset-2 col-xs-10"&gt; 
    &lt;div class="checkbox" class="col-xs-offset-2 col-xs-10"&gt; 
      &lt;label&gt;&lt;input type="checkbox"/&gt;تذكرني على هذا المتصفح&lt;/label&gt; 
    &lt;/div&gt; 
  &lt;/div&gt; 

  &lt;div class="col-xs-offset-2 col-xs-10"&gt; 
    &lt;input type="button" class="btn btn-primary btn-md" value="تسجيل الدخول"/&gt; 
  &lt;/div&gt;

&lt;/form&gt;</pre><p>وكذلك هناك اختلاف في شيفرة النموذج والعناصر المكونة له فأولا لابد من إضافة الصنف.form-horizontal إلى وسم النموذج &lt;form class="form-horizontal"&gt;، ومن ثم يتم إضافة الصنف , .col-*-* والصنف .control-label إلى كل وسم &lt;label&gt; داخل النموذج، وإضافة تقسيمات &lt;div&gt; في كل عنصر له الوسم &lt;input&gt;. كل عنصر يحتوي على الصنف .col-xs-offset-* فتتم إزاحته بمقدار القيمة التي ستوضع بدلا من الرمز *، كما تلاحظ في صندوق الاختيارcheckbox والزرbutton في النموذج السابق.</p><h3>نموذج السطر الواحد Inline form</h3><p>في هذا النوع من النماذج يتم تجميع كل عناصر النموذج في سطر واحد، ولكن هذا النوع من النماذج لا يلائم الأجهزة ذات الشاشات الصغيرة كالأجهزة المحمولة، ولكن بمجرد الدخول للموقع من هذه الأجهزة فسيتحول مباشرة إلى النموذج من النوع العمودي الذي تقدم ذكره.</p><p style="text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_03/inline-form.png.53d626814c0b65bed825b41ed5583535.png"><img data-fileid="848" class="ipsImage ipsImage_thumbnailed" alt="inline-form.thumb.png.bb11b7af2adcc3602c" src="https://academy.hsoub.com/uploads/monthly_2015_03/inline-form.thumb.png.bb11b7af2adcc3602cf534350ce5a4bf.png"></a></p><p>وشيفرة تكوينه على النحو التالي:</p><pre class="html ipsCode prettyprint">&lt;form class="form-inline" role="form"&gt; 

  &lt;div class="form-group"&gt; 
    &lt;label class="sr-only" for="inputEmail"&gt;البريد الإلكتروني&lt;/label&gt; 
    &lt;input type="email" class="form-control" id="inputEmail" placeholder="البريد الإلكتروني"&gt; 
  &lt;/div&gt; 

  &lt;div class="form-group"&gt; 
    &lt;label class="sr-only" for="inputPassword"&gt;كلمة المرور&lt;/label&gt; 
    &lt;input type="password" class="form-control" id="inputPassword" placeholder="كلمة المرور"&gt; 
  &lt;/div&gt; 

  &lt;div class="checkbox"&gt; 
    &lt;label&gt;&lt;input type="checkbox"&gt; تذكرني على هذا الجهاز&lt;/label&gt; 
  &lt;/div&gt; 

  &lt;button type="submit" class="btn btn-primary"&gt;تسجيل دخول&lt;/button&gt;
&lt;/form&gt;</pre><p style="text-align:justify;">ولا تختلف هذه الشيفرة عن الشيفرات السابقة إلا بصنفين هما .form-inline المضاف إلى الوسم&lt;form&gt;والصنف .sry-only المضاف مع الوسم &lt;label&gt;. وتم استخدام الصنف .sry-only لغرض إخفاء هذا العنصر، لأنه من المستحسن دائما عند إضافة عنصر &lt;input&gt; من نوع نص أن يكون الوسم &lt;label&gt; مصاحبًا له دائما لذا ففي الـ Bootstrap تم إضافة الصنف .sry-only لهذا الغرض.</p><p style="text-align:justify;">قد تلاحظ من خلال الأمثلة السابقة أن حجم العناصر داخل النموذج ثابت وقد لا يكون هذا الحجم مرغوب فيه لديك لذا بإمكانك تغيير أحجام هذه العناصر من خلال النظام الشبكي Grid system ، وهذا مثال يوضح ذلك:</p><pre class="html ipsCode prettyprint">&lt;form&gt; 

  &lt;div class="row"&gt; 
    &lt;div class="col-xs-3"&gt; 
      &lt;input type="text" class="form-control"&gt; 
    &lt;/div&gt; 

    &lt;div class="col-xs-4"&gt; 
      &lt;input type="text" class="form-control"&gt; 
    &lt;/div&gt; 

    &lt;div class="col-xs-5"&gt; 
      &lt;input type="text" class="form-control"&gt; 
    &lt;/div&gt; 
  &lt;/div&gt; 

  &lt;br&gt; 
  &lt;div class="row"&gt; 
    &lt;div class="col-xs-3"&gt; 
      &lt;textarea class="form-control"&gt;&lt;/textarea&gt; 
    &lt;/div&gt; 

    &lt;div class="col-xs-4"&gt; 
      &lt;textarea class="form-control"&gt;&lt;/textarea&gt; 
    &lt;/div&gt; 

    &lt;div class="col-xs-5"&gt; 
      &lt;textarea class="form-control"&gt;&lt;/textarea&gt; 
    &lt;/div&gt; 
  &lt;/div&gt;

&lt;/form&gt;</pre><p>مخرجات الشيفرة السابقة:</p><p style="text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_03/form-grid.png.1d0814021615a0cabcb10c920be583a1.png"><img data-fileid="844" class="ipsImage ipsImage_thumbnailed" alt="form-grid.thumb.png.0d82ab1839457938c341" src="https://academy.hsoub.com/uploads/monthly_2015_03/form-grid.thumb.png.0d82ab1839457938c341e10a94287c01.png"></a></p><h3>خصائص إضافية</h3><p style="text-align:justify;">كما أسلفنا سابقا بأن إطار العمل وفّر Boostrap الكثير من الميزات في التعامل مع النماذج جعلت من التحكم بالأدوات وتنسيقها شيئا سهلًا جدًا، وأضاف أيضًا ميزات لم تكن موجودة في النماذج مسبقا ومنها:</p><p style="text-align:justify;">إضافات لمدخلات Input</p><p style="text-align:justify;">بدلا من أن نضع نصّا توضيحيًا أو أيقونة إضافية، أصبح من المُمكن إضافة أيقونة توضيحية أو زر مناسب مدمج مع المُدخلات&lt;input type="text"&gt;و &lt;textarea&gt;، ولا بد أولا من التنبيه إلى اتباع القواعد التالية عند كتابة الشيفرة:</p><ol><li style="text-align:justify;">الوسم &lt;input&gt; والوسم &lt;span&gt; -الذي سنضع من خلاله الأيقونات- يجب أن يكونا ضمن الوسم &lt;div&gt; والذي يأخذ الصنف .input-group</li><li style="text-align:justify;">الوسم &lt;span&gt; يأخذ الصنف .input-group-addon</li></ol><p style="text-align:justify;">وهذه الشيفرة توضح ذلك:</p><pre class="html ipsCode prettyprint">&lt;form&gt; 
  &lt;div class="row"&gt; 

    &lt;div class="col-xs-4"&gt; 
      &lt;div class="input-group"&gt; 
        &lt;span class="input-group-addon"&gt;
          &lt;span class="glyphicon glyphicon-user"&gt;&lt;/span&gt;
        &lt;/span&gt; 
        &lt;input type="text" class="form-control" placeholder="اسم المستخدم"&gt; 
      &lt;/div&gt; 
    &lt;/div&gt; 

    &lt;div class="col-xs-4"&gt; 
      &lt;div class="input-group"&gt; 
        &lt;input type="text" class="form-control" placeholder="المبلغ"&gt; 
          &lt;span class="input-group-addon"&gt;.00&lt;/span&gt; 
        &lt;/div&gt; 
      &lt;/div&gt; 

      &lt;div class="col-xs-4"&gt; 
        &lt;div class="input-group"&gt; 
          &lt;span class="input-group-addon"&gt;$&lt;/span&gt; 
          &lt;input type="text" class="form-control" placeholder="دولار أمريكي"&gt; 
          &lt;span class="input-group-addon"&gt;.00&lt;/span&gt; 
        &lt;/div&gt; 
      &lt;/div&gt; 
    &lt;/div&gt;

  &lt;/div&gt;
&lt;/form&gt;</pre><p>وهذه مخرجات الشيفرة السابقة:</p><p style="text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_03/input-group-addon.png.1abbfaf3953f4f69d9a237f782140e1a.png"><img data-fileid="851" class="ipsImage ipsImage_thumbnailed" alt="input-group-addon.thumb.png.91826a94e685" src="https://academy.hsoub.com/uploads/monthly_2015_03/input-group-addon.thumb.png.91826a94e68593f98f5ea5d1ccce9e13.png"></a></p><p style="text-align:justify;">ونستطيع أيضا أن نضيف إلى أدوات النصوص الكثير من العناصر الأخرى كأداة الاختيار checkbox أو radio لتصبح بهذا الشكل:</p><p style="text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_03/input-group-addon-radio.png.84e0063f6828234a6609e7a0038539a6.png"><img data-fileid="850" class="ipsImage ipsImage_thumbnailed" alt="input-group-addon-radio.thumb.png.9b926b" src="https://academy.hsoub.com/uploads/monthly_2015_03/input-group-addon-radio.thumb.png.9b926b83d5d3b9f454c89f7906edf6eb.png"></a></p><p>وهذه شيفرة الشكل السابق:</p><pre class="html ipsCode prettyprint">&lt;form&gt; 
  &lt;div class="row"&gt; 

    &lt;div class="col-xs-6"&gt; 
      &lt;div class="input-group"&gt; 
        &lt;span class="input-group-addon"&gt; 
          &lt;input type="checkbox"&gt; 
        &lt;/span&gt; 
        &lt;input type="text" class="form-control"&gt; 
      &lt;/div&gt; 
    &lt;/div&gt; 

    &lt;div class="col-xs-6"&gt; 
      &lt;div class="input-group"&gt; 
        &lt;span class="input-group-addon"&gt; 
          &lt;input type="radio"&gt; 
        &lt;/span&gt; 
        &lt;input type="text" class="form-control"&gt; 
      &lt;/div&gt; 
    &lt;/div&gt; 

  &lt;/div&gt;
&lt;/form&gt;</pre><p>أو إضافة أزرار جانبية إلى أدوات النصوص أيضا لتكون كما بالشكل التالي:</p><p style="text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_03/input-group-addon-buttons.png.226baa9748d7e5e3d4bda637d55850d9.png"><img data-fileid="849" class="ipsImage ipsImage_thumbnailed" alt="input-group-addon-buttons.thumb.png.f228" src="https://academy.hsoub.com/uploads/monthly_2015_03/input-group-addon-buttons.thumb.png.f228e6d51c06273455ab2ff94f3e01bc.png"></a></p><pre class="html ipsCode prettyprint">&lt;form&gt; 
  &lt;div class="row"&gt; 

    &lt;div class="col-xs-6"&gt; 
      &lt;div class="input-group"&gt; 
        &lt;input type="text" class="form-control" placeholder="بحث عن&amp;hellip;"&gt; 
        &lt;span class="input-group-btn"&gt; 
          &lt;button type="button" class="btn btn-default"&gt;ابحث&lt;/button&gt; 
        &lt;/span&gt; 
      &lt;/div&gt; 
    &lt;/div&gt; 

    &lt;div class="col-xs-6"&gt; 
      &lt;div class="input-group"&gt; 
        &lt;span class="input-group-btn"&gt; 
          &lt;button type="button" class="btn btn-default"&gt;زر حدث&lt;/button&gt; 
          &lt;button type="button" class="btn btn-default"&gt;زر حدث آخر&lt;/button&gt; 
        &lt;/span&gt; 
        &lt;input type="text" class="form-control" placeholder="ضع النص الذي تريد &amp;hellip;"&gt; 
      &lt;/div&gt; 
    &lt;/div&gt;
 
  &lt;/div&gt;
&lt;/form&gt;</pre><p style="text-align:justify;">ومن خصائص النماذج الإضافية التي توفرها الـ Bootstrap، خاصية إلغاء تفعيل مجموعة من العناصر مرة واحدة، فالأصل كما تعودنا عند التعامل مع النماذج باستخدام الـ html أنه يمكن إلغاء تفعيل عنصر واحد عن طريق الخاصية disabled أو readonly وهنا نستطيع أن نتعامل مع ذلك أيضا وإضافة إلى ذلك فنستطيع إلغاء مجموعة حقول عن طريق تضمينها في وسم &lt;fieldset&gt; ومن ثم إعطائه الخاصية disabled="disabled" أو readonly="readonly"، كما في المثال التالي:</p><pre class="html ipsCode prettyprint">&lt;form class="form-horizontal" role="form"&gt; 
  &lt;fieldset disabled="disabled"&gt; 

    &lt;div class="form-group"&gt; 
      &lt;label for="inputtext"class="control-label col-md-2"&gt;اسم المستخدم:&lt;/label&gt; 
      &lt;div class="col-md-10"&gt; 
        &lt;input type="text" id="inputtext" class="form-control" placeholder="اسم المستخدم" /&gt; 
      &lt;/div&gt; 
    &lt;/div&gt; 

    &lt;div class="form-group"&gt; 
      &lt;label for="password" class="control-label col-md-2"&gt;كلمة المرور:&lt;/label&gt; 
      &lt;div class="col-md-10"&gt; 
        &lt;input type="password" id="password" class="form-control" placeholder="كلمة المرور"/&gt; 
      &lt;/div&gt; 
    &lt;/div&gt; 

    &lt;div class="form-group"&gt; 
      &lt;div class="col-xs-offset-2 col-xs-10"&gt; 
        &lt;div class="checkbox" class="col-xs-offset-2 col-xs-10"&gt; 
          &lt;label&gt;&lt;input type="checkbox" /&gt;تذكرني على هذا المتصفح&lt;/label&gt; 
        &lt;/div&gt; 
      &lt;/div&gt; 
    &lt;/div&gt; 

    &lt;div class="col-xs-offset-2 col-xs-10"&gt; 
      &lt;input type="button" class="btn btn-primary btn-md" value="تسجيل الدخول"/&gt; 
    &lt;/div&gt; 

  &lt;/fieldset&gt;
&lt;/form&gt;</pre><h3 style="text-align:justify;">تنسيق مخصص لعناصر النموذج</h3><p style="text-align:justify;">يوفر إطار العمل Bootstrap للمصمم خيارات متعددة لإعلام المستخدم بحالة الإدخال فمثلا التنبيه في حالة كانت البيانات صحيحة أو خاطئة أو تحذيره من النص المدخل أو اكتمال الإدخال بنجاح والشكل التالي يوضح ذلك:</p><p style="text-align:center;"><a class="ipsAttachLink ipsAttachLink_image" rel="external nofollow" href="https://academy.hsoub.com/uploads/monthly_2015_03/control-feedback.png.f355a81428b4b06d49ce8985d0226635.png"><img data-fileid="843" class="ipsImage ipsImage_thumbnailed" alt="control-feedback.thumb.png.33ac9cbe70f69" src="https://academy.hsoub.com/uploads/monthly_2015_03/control-feedback.thumb.png.33ac9cbe70f6998ac91190f69b7d3795.png"></a></p><p>تنبيه المستخدم حسب صحة الإدخال</p><p>وهذه شيفرة الشكل السابق:</p><pre class="html ipsCode prettyprint">&lt;form class="form-horizontal"&gt; 

  &lt;div class="form-group has-success has-feedback"&gt; 
    &lt;label class="col-xs-2 control-label" for="inputSuccess"&gt;اسم المستخدم&lt;/label&gt; 
    &lt;div class="col-xs-10"&gt; 
      &lt;input type="text" id="inputSuccess" class="form-control" placeholder="في حالة النجاح"&gt; 
      &lt;span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"&gt;&lt;/span&gt; 
    &lt;/div&gt; 
  &lt;/div&gt; 

  &lt;div class="form-group has-warning has-feedback"&gt; 
    &lt;label class="col-xs-2 control-label" for="inputWarning"&gt;كلمة المرور&lt;/label&gt; 
    &lt;div class="col-xs-10"&gt; 
      &lt;input type="password" id="inputWarning" class="form-control" placeholder="في حالة التحذير "&gt; 
      &lt;span class="glyphicon glyphicon-warning-sign form-control-feedback" aria-hidden="true"&gt;&lt;/span&gt; 
    &lt;/div&gt; 
  &lt;/div&gt; 

  &lt;div class="form-group has-error has-feedback"&gt; 
    &lt;label class="col-xs-2 control-label" for="inputError"&gt;البريد الإلكتروني&lt;/label&gt; 
    &lt;div class="col-xs-10"&gt; 
      &lt;input type="email" id="inputError" class="form-control" placeholder="في حالة الخطأ"&gt; 
      &lt;span class="glyphicon glyphicon-remove form-control-feedback" aria-hidden="true"&gt;&lt;/span&gt; 
    &lt;/div&gt; 
  &lt;/div&gt;

&lt;/form&gt;</pre><p style="text-align:justify;">كما تلاحظ في الشيفرة السابقة تم استعمل الصنف <span style="font-family:'courier new', courier, monospace;">.has-*</span> ليدل على حالة أداة النصوص وفي كل مرة استبدل * بالحالة المناسبة (warning- success- error…) واستخدم الصنف .has-feedback ليظهر الأيقونة حسب حالة أداة النص واستعمل الوسم &lt;span&gt; مع كل أداة لتظهر الأيقونة مصاحبة لأدوات الإدخال، بإمكانك الاستغناء عن الأيقونات وذلك بحذف الصنف .has-feedback والوسم &lt;span&gt; الذي يتعامل مع الأيقونة.</p><h3 style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium;line-height:normal;">عناصر النماذج التي يدعمها الـ Bootstrap:</h3><p>يتعامل الـ Bootstrap مع كل عناصر النماذج تقريبا تستطيع استعمال كافة الخصائص السابقة معها فهو يدعم:</p><ul><li>input</li><li>textarea</li><li>checkbox</li><li>radio</li><li>select</li></ul><p>والآن كل ما عليك فعله هو أن تقوم بفتح محرر النصوص لديك والبدء بمراجعة المقال وكتابة الشيفرة لتجرب أنت بنفسك كيفية التعامل مع العناصر في إطار العمل Bootstrap.</p><p>يُمكن تحميل أمثلة هذا الدروس كملف مُرفق <a href="http://academy.hsoub.com/applications/core/interface/file/attachment.php?id=912">من هنا</a>.</p>
]]></description><guid isPermaLink="false">52</guid><pubDate>Mon, 30 Mar 2015 23:00:00 +0000</pubDate></item><item><title>&#x62A;&#x639;&#x631;&#x651;&#x641; &#x639;&#x644;&#x649; Bootstrap 3 &#x648;&#x646;&#x638;&#x627;&#x645;&#x647; &#x627;&#x644;&#x634;&#x651;&#x628;&#x643;&#x64A; (Grid System)</title><link>https://academy.hsoub.com/programming/css/bootstrap/%D8%AA%D8%B9%D8%B1%D9%91%D9%81-%D8%B9%D9%84%D9%89-bootstrap-3-%D9%88%D9%86%D8%B8%D8%A7%D9%85%D9%87-%D8%A7%D9%84%D8%B4%D9%91%D8%A8%D9%83%D9%8A-grid-system-r51/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2015_03/Bootstrap3-grid-system_480x300.png.3868d24b6d1d2b80c973042b9c86865f.png" /></p>

<p style="text-align:justify;">
	إذا أردت أن تُصمّم موقعًا مُتجاوبًا يسهل تصفّحه أيّا كان المُتصفّح المُستخدم ونظام التّشغيل، فإما أن تختار الطريق الأول والمُتمثّلة في القيام بكل كبيرة وصغيرة بنفسك، أو أن تسلك طريقًا مُختصرة عبر الاعتماد على إطار عمل HTML/CSS يُسهّل عليك المهمة. من بين أشهر أطر العمل التي أصبح تعلّمها وإتقانها ضروريًا نجد إطار عمل Bootstrap 3. سنحاول في هذه السلسلة (التي تقرأ أول دروسها) أن نشرح -ولو بشكل سريع- أهم ما تحتاج معرفته حول إطار عمل Bootstrap 3 لتُصمّم أول موقع لك باستخدامه.
</p>

<p style="text-align:justify;">
	<strong>ملاحظة:</strong> لدى استخدام عبارة Bootstrap في هذه السلسلة فإننا نعني بذلك الإصدار الثالث منه.
</p>

<h2>
	ما هو Bootstrap؟
</h2>

<p style="text-align:justify;">
	Bootstrap عبارة عن إطار عمل HTML /CSS مُتجاوب. يحتوي Bootstrap على الأدوات والعناصر الأساسية التي ستحتاجها في أغلب مشاريعك مثل: الجداول والأزرار وأدوات النصوص والنماذج، والثانوية مثل: العنونة Heading وعناصر التنقل، والخلفيات، وغيرها من الأدوات. ويوفرBootstrap الكثير من الوقت والجهد على المصممين أثناء تصميم الصفحات، فكل ما يحتاجه المصمم هو معرفة أسماء الأصناف Classes التي سيتعامل معها لإعطاء التنسيق المناسب للعنصر الذي يستخدمه. بالإضافة إلى ذلك فإطار العمل Bootstrap يجعل التصميم مُناسبًا ومتجاوبًا مع كافة أحجام الشاشات المُختلفة.
</p>

<h3>
	مميزات Bootstrap
</h3>

<p>
	<strong>مميزات إطار العمل Bootstrap التي ساهمت في انتشاره:</strong>
</p>

<ul>
<li style="text-align:justify;">
		المحافظة على الوقت والجهد، فالتصميم المعد سلفا في إطار العمل هذا جعل كل ما على الصمم فعله هو أن يضع العناصر في المكان المناسب ويخصصها حسب الغرض الذي يريد.
	</li>
	<li style="text-align:justify;">
		تصميم متجاوب Responsive ومتوافق مع كافة المتصفحات، فهذه الميزة تجعل الموقع الذي تقوم بإنشائه يظهر بشكل ملائم لكافة الأجهزة المختلفة في أحجامها وبنفس التنسيق والمظهر الذي تضعه، بالإضافة إلى توافق خصائص الـ CSS مع المتصفحات المختلفة وهذا يعني عدم تعارض أي جزء من التصميم مع المتصفحات، فيعتبر هذا توفيرًا آخر للجهد الذي ستبذله لتجربة التصميم على المتصفحات.
	</li>
	<li style="text-align:justify;">
		سهل الاستخدام وتنسيق ثابت Consistent، فأي شخص لديه بعض الأساسيات في HTML وCSS يستطيع استخدام إطار العمل هذا وبسهولة، فقد لا تضطر إلى كتابة شيفرة CSS واحدة، وتوفر كذلك ميزة التنسيق الثابت في كل أجزاء الموقع، فالعمل على قالب معد مُسبقا لهذا الغرض سيجعل الموقع متناسق في مظهر المكونات بشكل خاص وفي تخطيط الموقع بشكل عام.
	</li>
</ul>
<p style="text-align:justify;">
	بالإضافة إلى كل هذا فإطار العمل Bootstrap مفتوح المصدر بإمكانك الاطلاع على مكوناته ومحتوياته.
</p>

<h3>
	تحميل ملفات الـ Bootstrap
</h3>

<p style="text-align:justify;">
	يمكنك تحميل آخر إصدار من إطار العمل Bootstrap من خلال الموقع الرسمي ، وأثناء كتابة هذا المقال كان آخر إصدار في الموقع الرسمي هو الإصدار الثالث. وعند تحميل ملف إطار العمل قم بفك الضغط على الملفات، وستجد ثلاثة مجلدات هي التركيبة الكاملة لإطار العمل Bootstrap.
</p>

<p style="text-align:justify;">
	سنحتاج أيضا إلى ملف jQuery . قم بتحميل آخر إصدار منه وضعه داخل مجلدjs. الآن بعد حصولك على الملفات الأساسية التي يجب تضمينها في أي مشروع ويب تقوم بإنشائه، يمكننا البدء بإنشاء صفحة ويب بسيطة جدًا وندمج هذه الملفات مع الصفحة الجديدة لنهيء الصفحة وفقا لإطار العمل Bootstrap.
</p>

<h3>
	تهيئة المشروع ضمن إطار العمل Bootstrap
</h3>

<p style="text-align:justify;">
	قم بإنشاء مجلد للمشروع الذي تريد أن تبدأ بالعمل عليه، وأنشء صفحة HTML عادية، تتضمن على الأقل المكونات الأساسية من رأس وجسم الصفحة، وهذه شيفرة يمكنك أن تبدأ بها:
</p>

<pre class="html ipsCode prettyprint">
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head lang="en"&gt;
  &lt;meta charset="UTF-8"&gt;
  &lt;title&gt;سلسلة مقالات bootstrap3 &lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;h1&gt;مرحبا بالعالم!&lt;/h1&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>

<p style="text-align:justify;">
	والآن لنقم بتعديل شيفرة الصفحة لتضمين ملفات إطار العمل، وأول شيء سنقوم بإضافته هو ملف الـ CSS داخل وسم الرأس &lt;head&gt; ولكن قبل ذلك ولنضمن أن يكون هناك تجاوب متطابق مع الشاشات سنضيف وسم الـ &lt;meta&gt; كما هو موضح في الشيفرة التالية:
</p>

<pre class="html ipsCode prettyprint">
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head lang="en"&gt; 
  &lt;meta charset="UTF-8"&gt;
  &lt;meta name="viewport" content="width=device-width, initial-scale=1"&gt;
  &lt;link rel="stylesheet" type="text/css" href="css/bootstrap.css"&gt;
  &lt;title&gt;صفحة متجاوبة مع الأحجام المختلفة&lt;/title&gt;
&lt;/head&gt;
...</pre>

<p style="text-align:justify;">
	والآن لابد من تضمين ملفات الـ JavaScript وتوجد ضمن المجلد المسمى js ويتم ربطها بهذه الصفحة من خلال الوسم &lt;script&gt;، وسيتم وضع هذا الوسم قبل إغلاق وسم جسم الصفحة أي قبل الوسم &lt;/body&gt; ويفضل أن تضعها ضمن الوسم &lt;head&gt;بعد إضافة روابط ملفات الـ CSS مع مراعاة إضافة ملف الـ jQuery كما يلي:
</p>

<pre class="html ipsCode prettyprint">
&lt;body&gt;
  &lt;h1&gt;مرحبا بالعالم!&lt;/h1&gt;
  &lt;script src="js/ jquery-2.1.3.min.js"&gt;&lt;/script&gt;&lt;script src="js/bootstrap.min.js"&gt;&lt;/script&gt;&lt;/body&gt;
&lt;/html&gt;</pre>

<p style="text-align:justify;">
	وبهذا تكون قد أعددت صفحتك الأولى لتكون ملائمة لإطار العمل Bootstrap، وهذا في حالة لم تكن متصلا بالإنترنت إما إذا كنت متصلا بالإنترنت أو تريد رفع المشروع إليه فقد ترغب في تغيير هذه الروابط واستبدالها بروابط مباشرة على مكتبات الـ CDN.
</p>

<p style="text-align:justify;">
	لربط موقعك بهذه المكتبات سنضع الروابط التالية في كل وسم من الوسوم السابقة كما يلي:
</p>

<pre class="html ipsCode prettyprint">
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head lang="en"&gt; 
  &lt;meta charset="UTF-8"&gt; 
  &lt;meta name="viewport" content="width=device-width, initial-scale=1"&gt; 
  &lt;link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css"&gt; 
  &lt;title&gt;سلسلة مقالات bootstrap3&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;h1&gt;مرحبا بالعالم!&lt;/h1&gt;
  &lt;script src="http://code.jquery.com/jquery-2.1.3.min.js"&gt;&lt;/script&gt;
  &lt;script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"&gt;&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>

<h3>
	إطار العمل Bootstrap ودعم اللغة العربية والتنسيق (rtl)
</h3>

<p style="text-align:justify;">
	تتوفر نسخة من إطارا لعمل Bootstrap خاصة بالمصممين الذين يصممون بالاتجاه من اليمين إلى اليسارrtl . بإمكانك تحميل الإصدار الأخير من هذه النسخة والعمل عليها إذا كنت تريد التصميم من اليمين إلى اليسار، أو تحميل الإصدار الثالث والمتوافق مع إطار العمل Bootstrap.
</p>

<p style="text-align:justify;">
	أما كيفية ربط النسخة العربية مع إطار العمل Bootstrap3 فالشيفرة التالية توضح ذلك:
</p>

<pre class="html ipsCode prettyprint" style="text-align:justify;">
&lt;!DOCTYPE html&gt;
&lt;html&gt;
  &lt;head lang="en"&gt; 
  &lt;meta charset="UTF-8"&gt;
  &lt;meta name="viewport" content="width=device-width, initial-scale=1"&gt;
  &lt;link rel="stylesheet" type="text/css" href="css/bootstrap.css"&gt;
  &lt;link rel="stylesheet" type="text/css" href="css/bootstrap-rtl.css"&gt;
  &lt;title&gt;(صفحة متجاوبة مع الأحجام المختلفة باللغة العربية) - bootstrap3&lt;/title&gt;
&lt;/head&gt;</pre>

<p style="text-align:justify;">
	وبهذا نكون قد تعرفنا سويا على إطار العمل Bootstrap3 وأخذت نظرة شاملة حول المميزات التي يقدمها والتسهيلات التي يوفرها، وتعرفت أيضا على كيفية تحميل إطار العمل وكيفية تهيئته وبهذا ستكون مستعد لتصميم مشاريعك بكل سهولة ويسر. وسنتعرف الآن سويا على النظام الذي يتبعه الـ Bootstrap لتقسيم الصفحة.
</p>

<h2 id="النظام-الشبكي">
	النظام الشبكي Grid system
</h2>

<p style="text-align:justify;">
	يقسم النظام الشبكي في إطار العمل Bootstrap الصفحة إلى 12 عمودًا أفقيًّا تتناسب ومقاسات الشاشات المختلفة، ويحتوي النظام الشبكي على عدة أحجام مختلفة (xs, sm, md, lg ) مُخصّصة للأجهزة المحمولة والأجهزة اللوحية والمكتبية والشاشات الكبيرة. تستطيع أن تضع العناصر المناسبة داخل كل عمود من هذه الأعمدة. بإمكانك استخدامها كاملة أو أن تستخدم أعمدة لها أحجام مجموعها مساوٍ لـ 12 عمود والشكل التالي يمثل بعض أحجام الأعمدة المستخدمة في تقسيم أجزاء الصفحة.
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_03/grid.png.7f7b73b9923cf11970fc628b7c3b5608.png" rel="" data-fileid="835"><img alt="grid.thumb.png.b9d346015bb35e8c27e5fb5f5" class="ipsImage ipsImage_thumbnailed" data-fileid="835" src="https://academy.hsoub.com/uploads/monthly_2015_03/grid.thumb.png.b9d346015bb35e8c27e5fb5f5e734eaf.png"></a>
</p>

<h3>
	الأصناف المتبعة في النظام الشبكي لـBootstrap
</h3>

<p style="text-align:justify;">
	هناك عدة أصناف مختلفة تستطيع أن تستخدمها مع كل عمود من أعمدة النظام الشبكي ليُصبح مُتجاوبًا مع كل أحجام الشاشات كما يلي:
</p>

<ul>
<li style="text-align:justify;">
		الصنف xs مخصص للشاشات الصغرى (الهواتف المحمولة) ذات الحجم 768px أو أقل أو أثناء تصغير عرض المتصفح إلى أقصى درجة ممكنة.
	</li>
	<li style="text-align:justify;">
		الصنف sm مخصص للشاشات الصغيرة (الأجهزة اللوحية) ذات الحجم 992px – 768px.
	</li>
	<li style="text-align:justify;">
		الصنف md مخصص للشاشات المتوسطة الحجم (الأجهزة المكتبية والحواسيب المحمولة) ذات الحجم من 1200px – 993px.
	</li>
	<li style="text-align:justify;">
		الصنف lg مخصص للشاشات الكبيرة (الأجهزة المكتبية الكبيرة) ذات حجم أكبر من 1200px.
	</li>
</ul>
<p>
	المثال التالي يوضح استخدام النظام الشبكي في إطار العمل Bootstrap:
</p>

<pre class="html ipsCode prettyprint">
&lt;div class="container"&gt; 
  &lt;div class="row"&gt; 
    &lt;div class="col-sm-6 col-md-7 col-lg-9"&gt; 
      &lt;div class="well"&gt; &lt;/div&gt; 
    &lt;/div&gt; 
    &lt;div class="col-sm-6 col-md-5 col-lg-3"&gt; 
      &lt;div class="well"&gt;&lt;/div&gt; 
    &lt;/div&gt; 
  &lt;/div&gt; 
  &lt;hr /&gt; 
  &lt;div class="row"&gt; 
    &lt;div class="col-sm-6 col-md-2 col-lg-5"&gt; 
      &lt;div class="well"&gt;&lt;/div&gt; 
    &lt;/div&gt; 
   &lt;div class="col-sm-6 col-md-10 col-lg-7"&gt; 
      &lt;div class="well"&gt;&lt;/div&gt; 
   &lt;/div&gt; 
  &lt;/div&gt;
&lt;/div&gt;</pre>

<p style="text-align:justify;">
	أولًا، لابد من وضع إطار خارجي يحتوي كل العناصر بداخله ويساعد هذا الإطار في أن تكون العناصر متلائمة مع بعضها ونضع لها حدودًا مع العناصر الأخرى المحيطة ويتم ذلك باستخدام الصنف <span style="font-family:'courier new', courier, monospace;">.container </span>أو <span style="font-family:'courier new', courier, monospace;">.container-fluid</span> في الوسم <span style="font-family:'courier new', courier, monospace;">&lt;div&gt;</span>، ومن ثم نضع صفًا يحوي كل الأعمدة المراد إضافتها وذلك باستخدام الصنف <span style="font-family:'courier new', courier, monospace;">row</span> في وسم <span style="font-family:'courier new', courier, monospace;">&lt;div&gt;</span> آخر، وأخيرا تستطيع أن تضع الأعمدة كل عمود بشكل منفصل في الوسم <span style="font-family:'courier new', courier, monospace;">&lt;div&gt;</span> وتستخدم الصنف <span style="font-family:'courier new', courier, monospace;">.col-*-*</span>، بداية نحدد أي نوع من الأصناف سنختار <span style="font-family:'courier new', courier, monospace;">.col-xs-*</span> أو <span style="font-family:'courier new', courier, monospace;">.col-sm-*</span> أو <span style="font-family:'courier new', courier, monospace;">.col-md-*</span> أو <span style="font-family:'courier new', courier, monospace;">.col-lg-*</span> أو كل هذه الأصناف مجتمعة ومن ثم نحدد حجم كل عمود باستبدال الرمز * بالرقم المناسب.
</p>

<p>
	الصنف<span style="font-family:'courier new', courier, monospace;"> well.</span> لإعطاء خلفية ومظهر للأعمدة المضافة. قد تلاحظ وجود فواصل بين الأعمدة في حالة أن قمت بتطبيق المثال، وذلك يرجع إلى التقسيم المميز في إطار العمل Bootstrap3.
</p>

<p>
	ومما سبق نستنتج أنه للتعامل مع النظام الشبكي يتوجب اتباع القواعد التالية:
</p>

<ul>
<li>
		أن تكون الصفوف ضمن الصنف container. أو container-fluid. لإعطاء النظام الشبكي حدود خارجية ومسافات بين العناصر داخله.
	</li>
	<li>
		نستخدم الصنف.row لإنشاء مجموعات من الأعمدة الأفقية(المتجاورة).
	</li>
	<li>
		الأعمدة هي الأبناء الوحيدة للصفوف أي أن الصفوف لا تحتوي على أي عنصر مباشر غير الأعمدة ويجب أن تكون بقية عناصر الصفحة ضمن الأعمدة.
	</li>
</ul>
<p style="text-align:justify;">
	<strong>ملاحظة:</strong> عندما تبدأ بالتصميم يفضل أن تصمم لأجهزة المستخدمين الأكثر زيارة للموقع حسب توقعاتك، سواء كانت أجهزة الهواتف المحمولة ذات الحجم الصغير أو الأجهزة المكتبية ذات الحجم الكبيرة، وبعد ذلك أضف الأصناف التي تجعل تصميمك متجاوب مع بقية الأجهزة.
</p>

<p style="text-align:justify;">
	إذا أردت أن يكون التصميم لحجم شاشة معين اتبع التعليمات التالية:
</p>

<ul>
<li style="text-align:justify;">
		شاشات الأجهزة الصغيرة استعمل النسبة 25%-75% مع الصنف <span style="font-family:'courier new', courier, monospace;">col-sm-*</span>:

		<pre class="html ipsCode prettyprint">
&lt;div class="col-sm-3"&gt; 
&lt;/div&gt; 
&lt;div class="col-sm-9"&gt; 
&lt;/div&gt;
</pre>
	</li>
	<li>
		<p>
			شاشات الأجهزة اللوحية استعمل النسبة 50%-50% مع الصنف <span style="font-family:'courier new', courier, monospace;">col-md-*</span>:
		</p>

		<pre class="html ipsCode prettyprint">
&lt;div class="col-md-6"&gt; &lt;/div&gt; 
&lt;div class="col-md-6"&gt; &lt;/div&gt;
</pre>
	</li>
	<li>
		<p style="text-align:justify;">
			شاشات الأجهزة المكتبية والأجهزة المحمولة وكذلك شاشة الأجهزة الكبيرة استعمل النسبة 33%-66% مع الصنف <span style="font-family:'courier new', courier, monospace;">col-lg-*</span>:
		</p>

		<pre class="html ipsCode prettyprint">
&lt;div class="col-md-4"&gt; &lt;/div&gt; 
&lt;div class="col-md-8"&gt; &lt;/div&gt;
</pre>
	</li>
</ul>
<p style="text-align:justify;">
	أما إذا كنت تريد من التصميم أن يكون متجاوبًا مع كافة الأجهزة فقم بدمج جميع الأجزاء السابقة:
</p>

<pre class="html ipsCode prettyprint">
&lt;div class="col-sm-3 col-md-6 col-lg-4"&gt; 
&lt;/div&gt; 
&lt;div class="col-sm-9 col-md-6 col-lg-8"&gt; 
&lt;/div&gt;</pre>

<p style="text-align:justify;">
	ويوفر إطار العمل Bootstrap ميزة إضافية تستطيع أن تضيفها في النظام الشبكي وهي إظهار أو إخفاء الصفوف، فتستطيع أن تستعمل هذه الميزة لإظهار عمود في الشاشات الكبيرة وإخفائه في الشاشات الصغيرة إذا كان لا يتناسب وحجمها:
</p>

<pre class="html ipsCode prettyprint">
&lt;div class="visible-sm col-md-6 col-lg-4"&gt; 
&lt;/div&gt; 
&lt;div class="hide-sm col-md-6 col-lg-8"&gt; 
&lt;/div&gt;</pre>

<h3>
	إزاحة offset الأعمدة
</h3>

<p style="text-align:justify;">
	نستطيع تحريك الأعمدة وإزاحتها بمقدار معين لتوفير مسافة كافية بين الأعمدة داخل النظام الشبكي أو بين الأعمدة والعناصر الأخرى، وذلك باستخدام الصنف <span style="font-family:'courier new', courier, monospace;">col-*-offset-*</span>، مثال، <span style="font-family:'courier new', courier, monospace;">col-md-offset-4</span> إزاحة عمود من نوع <span style="font-family:'courier new', courier, monospace;">md</span> بمقدار 4 أعمدة. لزم التنبيه إلى أن هذه الخاصية لا تدعم الشاشات الصغيرة أي أن الصنف من النوع <span style="font-family:'courier new', courier, monospace;">xs</span> لا يتعامل مع هذه الخاصية لذا يجب مراعاة ذلك في التصميم المتجاوب.
</p>

<pre class="html ipsCode prettyprint">
&lt;div calss="row"&gt; 
  &lt;div class="col-xs-2 col-md-offset-1"&gt; 
    &lt;div class="well"&gt; 
      &lt;h3&gt;تمت الإزاحة بمقدار عمود واحد من أصل 12&lt;/h3&gt; 
      &lt;h5&gt;العمود الأول في الصف&lt;/h5&gt; 
    &lt;/div&gt; 
  &lt;/div&gt; 
  &lt;div class="col-xs-6 col-md-offset-3"&gt; 
    &lt;div class="well"&gt; 
      &lt;h3&gt;وهذا العمود تمت إزاحته أيضا&lt;/h3&gt; 
      &lt;h5&gt;لا نستطيع إضافة أي عمود داخل هذا الصف لإن مجموع أحجام الأعمدة ومجموع الإزاحة = 12&lt;/h5&gt; 
      &lt;h6&gt;العمود الثاني في الصف&lt;/h6&gt; 
    &lt;/div&gt; 
  &lt;/div&gt;
&lt;/div&gt;</pre>

<p>
	وتكون المخرجات بهذا الشكل:
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_03/offset.png.28af1cca85801964c5570586a0fa3ef9.png" rel="" data-fileid="837"><img alt="offset.thumb.png.11dfa196ed6decfda54e713" class="ipsImage ipsImage_thumbnailed" data-fileid="837" src="https://academy.hsoub.com/uploads/monthly_2015_03/offset.thumb.png.11dfa196ed6decfda54e71341bb47387.png"></a>
</p>

<h3>
	أعمدة داخل أخرى
</h3>

<p style="text-align:justify;">
	يوفر Bootstsrap3 ميزة أخرى يمكن إضافتها في النظام الشبكي وهي ميزة تداخل الأعمدة، أي نضع عدة أعمدة داخل عمود واحد. في البداية لا بد من إضافة صف يضم الأعمدة الداخلية، وفي هذا الصف يتاح استخدام 12 عمودًا داخليّا أو أعمدة مجموع أحجامها مساوٍ لـ 12 عمودًا كما هو الحال في الصف الخارجي وليس بالضرورة استخدامها جميعا:
</p>

<p style="text-align:justify;">
	مثال يوضح تداخل الأعمدة في النظام الشبكي:
</p>

<pre class="html ipsCode prettyprint">
&lt;div class="row"&gt; 
  &lt;div class="col-md-6"&gt; 
    &lt;div class="well"&gt; 
      &lt;h5&gt;العمود الخارجي&lt;/h5&gt;
      &lt;div class="row"&gt; 
        &lt;div class="col-sm-3 col-md-6 col-lg-4"&gt; 
          &lt;div style="Background-color:Gray;"&gt; 
            &lt;h5&gt;العمود الداخلي 1&lt;/h5&gt; 
            &lt;h3&gt;أبجد هوز أبجد هوز أبجد هوز &lt;/h3&gt; 
          &lt;/div&gt; 
        &lt;/div&gt; 
        &lt;div class="col-sm-9 col-md-6 col-lg-8"&gt; 
          &lt;div style="Background-color:Gray;"&gt; 
            &lt;h5&gt;العمود الداخلي 2&lt;/h5&gt; 
            &lt;h3&gt;أبجد هوز أبجد هوز أبجد هوز &lt;/h3&gt; 
          &lt;/div&gt; 
        &lt;/div&gt; 
      &lt;/div&gt; 
    &lt;/div&gt; 
  &lt;/div&gt;
&lt;/div&gt;</pre>

<p>
	وتكون المخرجات بهذا الشكل:
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_03/nesting.png.92bb09be2f416ac5048a7dce875d1087.png" rel="" data-fileid="836"><img alt="nesting.thumb.png.0a534750ebbaa5733fe731" class="ipsImage ipsImage_thumbnailed" data-fileid="836" src="https://academy.hsoub.com/uploads/monthly_2015_03/nesting.thumb.png.0a534750ebbaa5733fe73122c004ab1e.png"></a>
</p>

<h3>
	ترتيب الأعمدة
</h3>

<p style="text-align:justify;">
	بإمكانك ترتيب الأعمدة في النظام الشبكي باستخدام الصنف <span style="font-family:'courier new', courier, monospace;">col-md-pull-*</span> والصنف <span style="font-family:'courier new', courier, monospace;">col-md-push-*</span>، وترتيب الأعمدة هنا يعني أنك تكتب الشيفرة بترتيب معين ويكون الناتج بترتيب مغاير، أي أن العمود الأول في الشيفرة سيصبح الثاني والعكس صحيح، ويجب مراعاة حجم الأعمدة فإذا كان حجم العمود الأول 4 والعمود الثاني 8 فيجب أن يكون العكس في الصنف المستخدم للترتيب، كما في المثال التالي:
</p>

<pre class="html ipsCode prettyprint">
&lt;div class="row"&gt; 
  &lt;div class="col-md-4 col-md-push-8"&gt; 
    &lt;div class="well"&gt; 
      &lt;h4&gt;كان هذا العمود في الجهة اليمنىh4&gt;
    &lt;/div&gt; 
  &lt;/div&gt; 
  &lt;div class="col-md-8 col-md-pull-4"&gt; 
    &lt;div class="well"&gt; 
      &lt;h4&gt;كان هذا العمود في الجهة اليسرى وأثناء العرض أصبح في الجهة اليسرى &lt;/h4&gt; 
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;</pre>

<p>
	وتكون المخرجات بهذا الشكل:
</p>

<p style="text-align:center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2015_03/push.png.76227765645eb13d70a7f37a92460d6f.png" rel="" data-fileid="838"><img alt="push.thumb.png.53236acb371d97cf23565e0f6" class="ipsImage ipsImage_thumbnailed" data-fileid="838" src="https://academy.hsoub.com/uploads/monthly_2015_03/push.thumb.png.53236acb371d97cf23565e0f6edb83d4.png"></a>
</p>

<p style="text-align:justify;">
	وبهذا نكون قد أخذنا مقدمة تعريفية حول إطار العمل Bootstrap وكيفية استخدام النظام الشبكي.
</p>

<p><a href="https://academy.hsoub.com/uploads/monthly_2015_03/express.png.68bd4e96d0bcdef509553ecc2e0ca12c.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="136" src="https://academy.hsoub.com/uploads/monthly_2015_03/express.thumb.png.3de931e612d9a6ed8ff7378333f13216.png" class="ipsImage ipsImage_thumbnailed" alt="express.png"></a></p>]]></description><guid isPermaLink="false">51</guid><pubDate>Fri, 27 Mar 2015 07:56:00 +0000</pubDate></item></channel></rss>
