<?xml version="1.0"?>
<rss version="2.0"><channel><title>&#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629;: CSS</title><link>https://academy.hsoub.com/programming/css/page/4/?d=2</link><description>&#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629;: CSS</description><language>ar</language><item><title>&#x646;&#x645;&#x627;&#x630;&#x62C; &#x62A;&#x635;&#x645;&#x64A;&#x645; &#x627;&#x644;&#x648;&#x64A;&#x628; &#x627;&#x644;&#x645;&#x62A;&#x62C;&#x627;&#x648;&#x628;</title><link>https://academy.hsoub.com/programming/css/%D9%86%D9%85%D8%A7%D8%B0%D8%AC-%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-r1500/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_03/62370f7fe03b1_----.png.85f5c5c7e674aac09e13c3a8a5fe4117.png" /></p>

<p>
	تتطور نماذج <a href="https://academy.hsoub.com/programming/css/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D9%81%D9%8A-%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-%D8%A7%D9%84%D8%B9%D9%86%D8%A7%D8%B5%D8%B1-%D8%A7%D9%84%D8%B2%D8%A7%D8%A6%D9%81%D8%A9-%D9%88%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-%D9%88%D8%BA%D9%8A%D8%B1%D9%87%D8%A7-r787/" rel="">تصميم الويب المتجاوب</a> بصورةٍ متسارعة، ولكن يعمل عددٌ قليلٌ منها فقط جيدًا على الحواسيب المكتبية وعلى الأجهزة المحمولة معًا.
</p>

<p>
	يُمكن تصنيف معظم التخطيطات المُستخدمة في صفحات الويب المتجاوب إلى خمس فئات: المُنساب عمومًا mostly fluid؛ وإفلات العمود column drop؛ والتخطيط المُزاح layout shifter؛ والتعديلات الطفيفة tiny tweaks؛ وخارج اللوحة off canvas. مع الإشارة إلى أنه يُمكن للصفحة استخدام أكثر من نموذج معًا، مثل استخدام "إفلات العمود" مع "خارج اللوحة". تُشكّل هذه الفئات، والتي عرّفها أولًا لوك روبلسكي <a href="http://www.lukew.com/ff/entry.asp?1514" rel="external nofollow">Luke Wroblewski</a>)، نقطة انطلاقٍ أساسية لأي صفحةٍ متجاوبة.
</p>

<p>
	كُتبت جميع الأمثلة التالية بلغةٍ ترميزية باستخدام الصندوق المرن flexbox بهدف التبسيط وسهولة الفهم، وذلك مع حاويةٍ رئيسة <code>div</code> تضم ثلاث أو خمس حاويات <code>div</code> ثانوية، وبدءًا من العرض الأصغر، ومن ثم أُضيفت نقاطٌ حدّية عند الضرورة. تدعم المتصفحات الحديثة <a href="https://caniuse.com/?search=flexbox" rel="external nofollow">نمط تخطيط الصندوق المرن</a> إلا أنه ما زال يتطلب بعض التعديلات من قبل المصنعين وصولًا للدعم الأمثل له.
</p>

<h2>
	النموذج المنساب عموما Mostly Fluid
</h2>

<p>
	يتكون النموذج المُنساب عمومًا من شبكةٍ انسيابية بصورةٍ أساسية؛ حيث تُحافظ هذه الشبكة على حجمها على الشاشات المتوسطة والكبيرة مع ضبط الهوامش على الشاشات الأوسع؛ بينما تتسبب بإعادة تدفق المحتوى الرئيسي مع تكديس الأعمدة عموديًا على الشاشات الصغيرة. من الميزات الأساسية لهذا النموذج عدم الحاجة إلا لنقطةٍ حدّيةٍ واحدة بين الشاشات الصغيرة والشاشات الكبيرة كما يُبين <a href="https://googlesamples.github.io/web-fundamentals/fundamentals/design-and-ux/responsive/mostly-fluid.html" rel="external nofollow">المثال التالي</a>:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="94240" href="https://academy.hsoub.com/uploads/monthly_2022_03/020mostly-fluid.png.818ca57fdf0eac6dfa9eed9953b8d00d.png" rel=""><img alt="020mostly-fluid.png" class="ipsImage ipsImage_thumbnailed" data-fileid="94240" data-unique="5mnsqmwnq" src="https://academy.hsoub.com/uploads/monthly_2022_03/020mostly-fluid.thumb.png.cb552342582521750b5228014acd1f8f.png" style="width: 600px; height: auto;"></a>
</p>

<p>
	تُكدَّس كل حاوية <code>div</code> عموديًا في العرض الأصغر؛ وعندما يتجاوز عرض الشاشة <code>600px</code>، تُحافظ الحاوية <code>div</code> الأولى على العرض <code>width: 100%</code>؛ بينما تظهر الحاويات الأربع <code>div</code> الثانوية مثل عمودين أسفل الحاوية الأولى. عندما يتجاوز عرض الشاشة <code>800px</code>، يُصبح عرض الحاوية الأساسية <code>div</code> ثابتًا مع توسيطها على الشاشة.
</p>

<p>
	من المواقع التي تستخدم هذا النموذج:
</p>

<ul>
<li>
		<a href="http://mediaqueri.es/ala/" rel="external nofollow">A List Apart</a>.
	</li>
	<li>
		<a href="http://mediaqueri.es/" rel="external nofollow">Media Queries</a>.
	</li>
	<li>
		<a href="http://simplebits.com/" rel="external nofollow">SimpleBits</a>.
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_4819_9" style="">
<span class="pun">.</span><span class="pln">container </span><span class="pun">{</span><span class="pln">
  display</span><span class="pun">:</span><span class="pln"> </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">flex</span><span class="pun">;</span><span class="pln">
  display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">flex</span><span class="pun">-</span><span class="pln">flow</span><span class="pun">:</span><span class="pln"> row wrap</span><span class="pun">;</span><span class="pln">
  flex</span><span class="pun">-</span><span class="pln">flow</span><span class="pun">:</span><span class="pln"> row wrap</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">c1</span><span class="pun">,</span><span class="pln"> </span><span class="pun">.</span><span class="pln">c2</span><span class="pun">,</span><span class="pln"> </span><span class="pun">.</span><span class="pln">c3</span><span class="pun">,</span><span class="pln"> </span><span class="pun">.</span><span class="pln">c4</span><span class="pun">,</span><span class="pln"> </span><span class="pun">.</span><span class="pln">c5 </span><span class="pun">{</span><span class="pln">
  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="pun">}</span><span class="pln">

</span><span class="lit">@media</span><span class="pln"> </span><span class="pun">(</span><span class="pln">min</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">600px</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">c2</span><span class="pun">,</span><span class="pln"> </span><span class="pun">.</span><span class="pln">c3</span><span class="pun">,</span><span class="pln"> </span><span class="pun">.</span><span class="pln">c4</span><span class="pun">,</span><span class="pln"> </span><span class="pun">.</span><span class="pln">c5 </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">
  </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="lit">@media</span><span class="pln"> </span><span class="pun">(</span><span class="pln">min</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">800px</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">c1 </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">60</span><span class="pun">%;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">c2 </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">40</span><span class="pun">%;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
</span><span class="com">/*لا يعمل استخدام 33.33 دومًا بسبب التقريب*/</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">c3</span><span class="pun">,</span><span class="pln"> </span><span class="pun">.</span><span class="pln">c4 </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">33</span><span class="pun">%;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">c5 </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">34</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="lit">@media</span><span class="pln"> </span><span class="pun">(</span><span class="pln">min</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">800px</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">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">800px</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="kwd">auto</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="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></pre>

<h2>
	نموذج إفلات العمود Column drop
</h2>

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

<p>
	يُبين <a href="https://googlesamples.github.io/web-fundamentals/fundamentals/design-and-ux/responsive/column-drop.html" rel="external nofollow">المثال التالي</a> استخدام هذا النموذج:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="94242" href="https://academy.hsoub.com/uploads/monthly_2022_03/021column-drop.png.27b368dbca2fe28baa8743be8a224fc4.png" rel=""><img alt="021column-drop.png" class="ipsImage ipsImage_thumbnailed" data-fileid="94242" data-unique="9h29lpjo2" src="https://academy.hsoub.com/uploads/monthly_2022_03/021column-drop.png.27b368dbca2fe28baa8743be8a224fc4.png" style="width: 600px; height: auto;"></a>
</p>

<p>
	وكما الحال في النموذج المُنساب عمومًا، يُكدّس المحتوى في العرض الأصغر؛ إلا أنه عندما يتجاوز عرض الشاشة <code>600px</code>، تأخذ الحاوية الأولى والثانية العرض الكامل للشاشة؛ أما عند تجاوز <code>800px</code>، تأخذ جميع الحاويات الثلاث كامل عرض الشاشة. تُحدّد خاصية الترتيب order في <a href="https://academy.hsoub.com/programming/css/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A3%D9%88%D8%B1%D8%A7%D9%82-%D8%A7%D9%84%D8%A3%D9%86%D9%85%D8%A7%D8%B7-%D8%A7%D9%84%D9%85%D8%AA%D8%AA%D8%A7%D9%84%D9%8A%D8%A9-css-r246/" rel="">أنماط CSS</a> ترتيب الحاويات.
</p>

<p>
	من المواقع التي تستخدم هذا النموذج:
</p>

<ul>
<li>
		<a href="https://modernizr.com/" rel="external nofollow">Modernizr</a>.
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_4819_13" style="">
<span class="pun">.</span><span class="pln">container </span><span class="pun">{</span><span class="pln">
  display</span><span class="pun">:</span><span class="pln"> </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">flex</span><span class="pun">;</span><span class="pln">
  display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">flex</span><span class="pun">-</span><span class="pln">flow</span><span class="pun">:</span><span class="pln"> row wrap</span><span class="pun">;</span><span class="pln">
  flex</span><span class="pun">-</span><span class="pln">flow</span><span class="pun">:</span><span class="pln"> row wrap</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">c1</span><span class="pun">,</span><span class="pln"> </span><span class="pun">.</span><span class="pln">c2</span><span class="pun">,</span><span class="pln"> </span><span class="pun">.</span><span class="pln">c3 </span><span class="pun">{</span><span class="pln">
  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="pun">}</span><span class="pln">

</span><span class="lit">@media</span><span class="pln"> </span><span class="pun">(</span><span class="pln">min</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">600px</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">c1 </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">60</span><span class="pun">%;</span><span class="pln">
    </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">order</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2</span><span class="pun">;</span><span class="pln">
    order</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="pun">.</span><span class="pln">c2 </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">40</span><span class="pun">%;</span><span class="pln">
    </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">order</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
    order</span><span class="pun">:</span><span class="pln"> </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">c3 </span><span class="pun">{</span><span class="pln">
    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="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">order</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3</span><span class="pun">;</span><span class="pln">
    order</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3</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="lit">@media</span><span class="pln"> </span><span class="pun">(</span><span class="pln">min</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">800px</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">c2 </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">20</span><span class="pun">%;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="pun">.</span><span class="pln">c3 </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">20</span><span class="pun">%;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

<h2>
	نموذج التخطيط المزاح Layout shifter
</h2>

<p>
	يُعدّ هذا النموذج أكثر النماذج استجابةً مع عدّة نقاطٍ حدّية تُحدّد حسب عرض الشاشة؛ حيث يكمن الفرق الجوهري في هذا النموذج بطريقة تحريك المحتوى عوضًا عن إعادة تدفق المحتوى وإفلات الأعمدة أسفل بعضها بعضًا. يتطلب هذا النموذج تحديد مجموعةٍ من النقاط الحدّية، مما يُصعّب عمليات التعديل اللاحقة؛ إذ قد تتطلب كل نقطةٍ حدّية إجراء تغييرات على العناصر وليس على تخطيط المحتوى العام فقط. يُبيّن <a href="https://googlesamples.github.io/web-fundamentals/fundamentals/design-and-ux/responsive/layout-shifter.html" rel="external nofollow">المثال التالي</a> استخدام هذا النموذج:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="94244" href="https://academy.hsoub.com/uploads/monthly_2022_03/022layout-shifter.png.9b48c1c6b0b9e5126aab76462f44a94e.png" rel=""><img alt="022layout-shifter.png" class="ipsImage ipsImage_thumbnailed" data-fileid="94244" data-unique="nuuj90vdb" src="https://academy.hsoub.com/uploads/monthly_2022_03/022layout-shifter.thumb.png.9e7c5d94305a1e49223038f4ed3ab3f5.png" style="width: 600px; height: auto;"></a><a class="ipsAttachLink ipsAttachLink_image" href="" rel=""><img alt="imageproxy.php?img=&amp;key=e4ac65570db3469d" class="ipsImage ipsImage_thumbnailed" data-fileid="o_1fujh8tt28q341g17rs8np1rcau" data-unique="d5vtqdfrk" src=""></a>
</p>

<p>
	حيث يُكدَّس المحتوى عموديًا في الشاشات الأصغر، إلا أنه يتغير جذريًا على الشاشات الأكبر؛ إذ تُوضع حاوية <code>div</code> على اليسار وتُكدَّس حاويتان على يمينها.
</p>

<p>
	من المواقع التي تستخدم هذا النموذج:
</p>

<ul>
<li>
		<a href="http://www.anderssonwise.com/" rel="external nofollow">Andersson-Wise Architects</a>.
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_4819_17" style="">
<span class="pun">.</span><span class="pln">container </span><span class="pun">{</span><span class="pln">
  display</span><span class="pun">:</span><span class="pln"> </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">flex</span><span class="pun">;</span><span class="pln">
  display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">flex</span><span class="pun">-</span><span class="pln">flow</span><span class="pun">:</span><span class="pln"> row wrap</span><span class="pun">;</span><span class="pln">
  flex</span><span class="pun">-</span><span class="pln">flow</span><span class="pun">:</span><span class="pln"> row wrap</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">c1</span><span class="pun">,</span><span class="pln"> </span><span class="pun">.</span><span class="pln">c2</span><span class="pun">,</span><span class="pln"> </span><span class="pun">.</span><span class="pln">c3</span><span class="pun">,</span><span class="pln"> </span><span class="pun">.</span><span class="pln">c4 </span><span class="pun">{</span><span class="pln">
  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="pun">}</span><span class="pln">

</span><span class="lit">@media</span><span class="pln"> </span><span class="pun">(</span><span class="pln">min</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">600px</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">c1 </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">25</span><span class="pun">%;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="pun">.</span><span class="pln">c4 </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">75</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="lit">@media</span><span class="pln"> </span><span class="pun">(</span><span class="pln">min</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">800px</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">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">800px</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="kwd">auto</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="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></pre>

<h3>
	نموذج التعديلات الطفيفة Tiny tweaks
</h3>

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

<p>
	يُبين <a href="https://googlesamples.github.io/web-fundamentals/fundamentals/design-and-ux/responsive/tiny-tweaks.html" rel="external nofollow">المثال التالي</a> استخدام هذا النموذج:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="94246" href="https://academy.hsoub.com/uploads/monthly_2022_03/023tiny-tweaks.png.8b5d06339018d6f699885cf94f53e97c.png" rel=""><img alt="023tiny-tweaks.png" class="ipsImage ipsImage_thumbnailed" data-fileid="94246" data-unique="uin19ou6k" src="https://academy.hsoub.com/uploads/monthly_2022_03/023tiny-tweaks.thumb.png.876a79b99fc26c36df756d1b471da337.png" style="width: 600px; height: auto;"></a>
</p>

<p>
	عمليًا، وكما يوحي اسم هذا النموذج، لا يتغير الكثير مع تغير حجم الشاشة؛ فكلما زاد عرض الشاشة، كبُر حجم الخط وزادت مساحة الحشوة padding.
</p>

<p>
	من المواقع التي تستخدم هذا النموذج:
</p>

<ul>
<li>
		<a href="http://gingerwhale.com/" rel="external nofollow">Ginger Whale</a>.
	</li>
	<li>
		<a href="http://futurefriendlyweb.com/" rel="external nofollow">Future Friendly</a>.
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_4819_21" style="">
<span class="pun">.</span><span class="pln">c1 </span><span class="pun">{</span><span class="pln">
  padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10px</span><span class="pun">;</span><span class="pln">
  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="pun">}</span><span class="pln">

</span><span class="lit">@media</span><span class="pln"> </span><span class="pun">(</span><span class="pln">min</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="pun">{</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">c1 </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="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.5em</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="lit">@media</span><span class="pln"> </span><span class="pun">(</span><span class="pln">min</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">800px</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">c1 </span><span class="pun">{</span><span class="pln">
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">40px</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">2em</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

<h2>
	نموذج خارج اللوحة Off canvas
</h2>

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

<p>
	يُبين <a href="https://googlesamples.github.io/web-fundamentals/fundamentals/design-and-ux/responsive/off-canvas.html" rel="external nofollow">المثال التالي</a> استخدام هذا النموذج:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="94248" href="https://academy.hsoub.com/uploads/monthly_2022_03/024off-canvas.png.9812f94e13173775f86b78382160f373.png" rel=""><img alt="024off-canvas.png" class="ipsImage ipsImage_thumbnailed" data-fileid="94248" data-unique="xtbvwb22z" src="https://academy.hsoub.com/uploads/monthly_2022_03/024off-canvas.png.9812f94e13173775f86b78382160f373.png" style="width: 600px; height: auto;"></a>
</p>

<p>
	عوضًا عن تكديس المحتوى عموديًا، يَستخدم هذا المثال سمة التحويل لإخفاء حاويتين بوضعهما خارج الشاشة:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_4819_24" style="">
<span class="pln"> </span><span class="str">'transform: translate(-250px, 0)'</span><span class="pln"> </span></pre>

<p>
	تُستخدم <a href="https://wiki.hsoub.com/JavaScript" rel="external">JavaScript</a> لإظهار الحاويات عن طريق إضافة الصف class المُسمى <code>open</code> إلى العنصر لجعله مرئيًا. ومع اتساع عرض الشاشة، تُزال مواضع العناصر خارج الشاشة فتعود هذه العناصر لتظهر ضمن إطار العرض المرئي.
</p>

<p>
	بما أن Safari for iOS 6 و Android Browser لا يدعمان <code>flex-flow: row nowrap</code> من <code>flexbox</code>، استُخدم التوضُّع المُطلق في هذا المثال.
</p>

<p>
	من المواقع التي تستخدم هذا النموذج:
</p>

<ul>
<li>
		<a href="http://www.html5rocks.com/en/tutorials/developertools/async-call-stack/" rel="external nofollow">HTML5Rocks Articles</a>.
	</li>
	<li>
		<a href="https://www.google.com/nexus/" rel="external nofollow">Google Nexus</a>.
	</li>
	<li>
		<a href="https://m.facebook.com/" rel="external nofollow">Facebook's Mobile Site</a>.
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_4819_27" style="">
<span class="pln">body </span><span class="pun">{</span><span class="pln">
  overflow</span><span class="pun">-</span><span class="pln">x</span><span class="pun">:</span><span class="pln"> hidden</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">
  display</span><span class="pun">:</span><span class="pln"> block</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">c1</span><span class="pun">,</span><span class="pln"> </span><span class="pun">.</span><span class="pln">c3 </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">
  width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">250px</span><span class="pun">;</span><span class="pln">
  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="com">/*
    حيلة لتحسين الأداء على المتصفح كروم 
     See: http://aerotwist.com/blog/on-translate3d-and-layer-creation-hacks/
     #perfmatters
  */</span><span class="pln">
  </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">backface</span><span class="pun">-</span><span class="pln">visibility</span><span class="pun">:</span><span class="pln"> hidden</span><span class="pun">;</span><span class="pln">
  backface</span><span class="pun">-</span><span class="pln">visibility</span><span class="pun">:</span><span class="pln"> hidden</span><span class="pun">;</span><span class="pln"> 

  </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">transition</span><span class="pun">:</span><span class="pln"> </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">transform </span><span class="lit">0.4s</span><span class="pln"> ease</span><span class="pun">-</span><span class="kwd">out</span><span class="pun">;</span><span class="pln">
  transition</span><span class="pun">:</span><span class="pln"> transform </span><span class="lit">0.4s</span><span class="pln"> ease</span><span class="pun">-</span><span class="kwd">out</span><span class="pun">;</span><span class="pln">

  z</span><span class="pun">-</span><span class="pln">index</span><span class="pun">:</span><span class="pln"> </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">c1 </span><span class="pun">{</span><span class="pln">
  </span><span class="com">/*
  حيلة لتحسين الأداء على المتصفحات القديمة من  كروم
  Using translate3d as a trick to improve performance on older versions of Chrome
  See: http://aerotwist.com/blog/on-translate3d-and-layer-creation-hacks/
  #perfmatters
  */</span><span class="pln">
  </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">transform</span><span class="pun">:</span><span class="pln"> translate</span><span class="pun">(-</span><span class="lit">250px</span><span class="pun">,</span><span class="lit">0</span><span class="pun">);</span><span class="pln">
  transform</span><span class="pun">:</span><span class="pln"> translate</span><span class="pun">(-</span><span class="lit">250px</span><span class="pun">,</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">c2 </span><span class="pun">{</span><span class="pln">
  width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</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">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">c3 </span><span class="pun">{</span><span class="pln">
  left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">c1</span><span class="pun">.</span><span class="pln">open </span><span class="pun">{</span><span class="pln">
  </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">transform</span><span class="pun">:</span><span class="pln"> translate</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="lit">0</span><span class="pun">);</span><span class="pln">
  transform</span><span class="pun">:</span><span class="pln"> translate</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</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">c3</span><span class="pun">.</span><span class="pln">open </span><span class="pun">{</span><span class="pln">
  </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">transform</span><span class="pun">:</span><span class="pln"> translate</span><span class="pun">(-</span><span class="lit">250px</span><span class="pun">,</span><span class="lit">0</span><span class="pun">);</span><span class="pln">
  transform</span><span class="pun">:</span><span class="pln"> translate</span><span class="pun">(-</span><span class="lit">250px</span><span class="pun">,</span><span class="lit">0</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="lit">@media</span><span class="pln"> </span><span class="pun">(</span><span class="pln">min</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="pun">{</span><span class="pln">
   </span><span class="com">/* استخدام الصندوق المرن إذا كان عرض الشاشة أكبر من 500 بكسل */</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">container </span><span class="pun">{</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">flex</span><span class="pun">;</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">flex</span><span class="pun">-</span><span class="pln">flow</span><span class="pun">:</span><span class="pln"> row nowrap</span><span class="pun">;</span><span class="pln">
    flex</span><span class="pun">-</span><span class="pln">flow</span><span class="pun">:</span><span class="pln"> row 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">c1 </span><span class="pun">{</span><span class="pln">
    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">webkit</span><span class="pun">-</span><span class="pln">transition</span><span class="pun">:</span><span class="pln"> none </span><span class="lit">0s</span><span class="pln"> ease</span><span class="pun">-</span><span class="kwd">out</span><span class="pun">;</span><span class="pln">
    transition</span><span class="pun">:</span><span class="pln"> none </span><span class="lit">0s</span><span class="pln"> ease</span><span class="pun">-</span><span class="kwd">out</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">transform</span><span class="pun">:</span><span class="pln"> translate</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="lit">0</span><span class="pun">);</span><span class="pln">
    transform</span><span class="pun">:</span><span class="pln"> translate</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</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">c2 </span><span class="pun">{</span><span class="pln">
    position</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">static</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="lit">@media</span><span class="pln"> </span><span class="pun">(</span><span class="pln">min</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">800px</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">
    overflow</span><span class="pun">-</span><span class="pln">x</span><span class="pun">:</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">c3 </span><span class="pun">{</span><span class="pln">
    position</span><span class="pun">:</span><span class="pln"> relative</span><span class="pun">;</span><span class="pln">
    left</span><span class="pun">:</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">webkit</span><span class="pun">-</span><span class="pln">transition</span><span class="pun">:</span><span class="pln"> none </span><span class="lit">0s</span><span class="pln"> ease</span><span class="pun">-</span><span class="kwd">out</span><span class="pun">;</span><span class="pln">
    transition</span><span class="pun">:</span><span class="pln"> none </span><span class="lit">0s</span><span class="pln"> ease</span><span class="pun">-</span><span class="kwd">out</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">transform</span><span class="pun">:</span><span class="pln"> translate</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="lit">0</span><span class="pun">);</span><span class="pln">
    transform</span><span class="pun">:</span><span class="pln"> translate</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</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>
	ترجمة -وبتصرف- للمقالة <a href="https://developers.google.com/web/fundamentals/design-and-ux/responsive/patterns" rel="external nofollow">Responsive Web Design Patterns</a> للمؤلف: Pete LePage.
</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-%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>
	</li>
	<li>
		<a href="https://academy.hsoub.com/design/general/%d9%85%d8%a7-%d9%87%d9%88-%d8%a7%d9%84%d9%81%d8%b1%d9%82-%d8%a8%d9%8a%d9%86-%d8%a7%d9%84%d8%aa%d8%b5%d9%85%d9%8a%d9%85-%d8%a7%d9%84%d9%85%d8%aa%d8%ac%d8%a7%d9%88%d8%a8-responsive-web-design-%d9%88%d8%a7%d9%84%d8%aa%d8%b5%d9%85%d9%8a%d9%85-%d8%a7%d9%84%d9%85%d8%aa%d9%84%d8%a7%d8%a6%d9%85-adaptive-web-design-r119/" rel="">ما هو الفرق بين التصميم المتجاوب (Responsive Web Design) والتصميم المتلائم (Adaptive Web Design)</a>
	</li>
	<li>
		<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%B4%D8%A7%D9%85%D9%84-%D9%84%D8%B4%D8%B1%D8%AD-%D8%A7%D9%84%D9%86%D9%82%D8%A7%D8%B7-%D8%A7%D9%84%D8%AD%D8%AF%D9%8A%D8%A9-%D9%84%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%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%D8%A9-r861/" rel="">الدليل الشامل لشرح النقاط الحدية لصفحات الويب المتجاوبة</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1500</guid><pubDate>Sun, 20 Mar 2022 11:43:35 +0000</pubDate></item><item><title>&#x645;&#x642;&#x62F;&#x645;&#x629; &#x644;&#x644;&#x62E;&#x637;&#x648;&#x637; &#x627;&#x644;&#x642;&#x627;&#x628;&#x644;&#x629; &#x644;&#x644;&#x62A;&#x63A;&#x64A;&#x64A;&#x631; &#x641;&#x64A; &#x627;&#x644;&#x648;&#x64A;&#x628;</title><link>https://academy.hsoub.com/programming/css/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D9%84%D9%84%D8%AE%D8%B7%D9%88%D8%B7-%D8%A7%D9%84%D9%82%D8%A7%D8%A8%D9%84%D8%A9-%D9%84%D9%84%D8%AA%D8%BA%D9%8A%D9%8A%D8%B1-%D9%81%D9%8A-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-r1506/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_03/6239966a3d5c3_.png.1efb05587204ab68db02ce5b553127aa.png" /></p>

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

<h2>
	التوافق مع المتصفحات
</h2>

<p>
	ابتداءً من شهر مايو من العام 2020 بدء دعم الخطوط القابلة للتغيير في معظم المتصفحات، يمكنك التأكد من توافق متصفحك معها من موقع <a href="https://caniuse.com/variable-fonts" rel="external nofollow">can i use variable-fonts</a>.
</p>

<h2>
	مقدمة
</h2>

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

<p>
	هناك مفهومين آخرين يغفل البعض دائمًا عن التمييز بينهما، وهما التنسيق style وعائلة الخط family، فالتنسيق هو خاصية واحدة مفردة من typeface، أما العائلة فهي مجموعة كاملة من التنسيقات.
</p>

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="94469" href="https://academy.hsoub.com/uploads/monthly_2022_03/1.png.7638492fd173a04af19739639072b8e0.png" rel=""><img alt="1.png" class="ipsImage ipsImage_thumbnailed" data-fileid="94469" data-unique="fj6m06hul" src="https://academy.hsoub.com/uploads/monthly_2022_03/1.thumb.png.71303f0b3c1b169c012cbc616db8b5e0.png" style="width: 450px; height: auto;"></a>
</p>

<h2>
	تحديات أمام المصممين والمطورين
</h2>

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

<p>
	يواجه <a href="https://academy.hsoub.com/freelance/jobs/%D8%A7%D9%84%D9%81%D8%B1%D9%82-%D8%A8%D9%8A%D9%86-%D9%85%D8%B5%D9%85%D9%85-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-%D9%88%D9%85%D8%B7%D9%88%D8%B1-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-%D9%88%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D9%85%D8%B9%D8%B1%D9%81%D8%A9-%D8%A7%D9%84%D8%A3%D9%86%D8%B3%D8%A8-%D8%A8%D9%8A%D9%86%D9%87%D9%85%D8%A7-r408/" rel="">مصممي ومطوري الويب</a> قيودًا مختلفةً عن تلك التي يواجهها مصممو المطبوعات، وأهم هذه القيود هي الزيادة في تكلفة بيانات الإنترنت التي تستهلكها التصميمات على الويب، وقد كان هذا هو أكبر العوائق أمام الحصول على تصميمات خطيه وغنية بالتفاصيل في عالم الويب، في خطوط الويب التقليدية يحتاج المستخدم لتنزيل ملف خاص لكل تنسيق من تنسيقات الخط، ويعمل هذا على تأخير ظهور الصفحة أمام مستخدمي الموقع، إذا ما أردت استخدام الخط الغامق والخط العادي إضافةً للخط المائل في لكل منهما سيصل حجم ملفات هذه التنسيقات الى 500 كيلوبايت أو أكثر من البيانات الواجب تنزيلها لتشغيل الموقع، وذلك دون الأخذ بالحسبان الوقت اللازم لعرض الخطوط في الموقع، والحلول البديلة عند فشل عملية الحصول على الخطوط، والتأثيرات الجانبية التي لا نرغب بحصولها مثل FOIT و FOUT.
</p>

<p>
	توفر العديد من عائلات الخطوط مجموعةً كبيرةً جدًا من التنسيقات، فهناك <a href="https://academy.hsoub.com/programming/css/%D8%AA%D9%86%D8%B3%D9%8A%D9%82-%D9%86%D8%B5%D9%88%D8%B5-%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-r251/" rel="">تنسيق الخط </a>الرفيع والخط الغامق والخط ذو العرض الواسع والضيق وتشكيلة كبيرة ومتنوعة من التنسيقات الأخرى، وحتى أحجام الخطوط الخاصة التي صُمّمت لتتلاءم مع أحجام كبيرة أو صغيرة من النصوص، ونظرًا لأن كل تنسيق أو مزيج من التنسيقات يحتاج ملفًا خاصًا لنستطيع استخدامه، يتجنب مطورو الويب استخدام إمكانيات الخطوط هذه، وهو ما يترتب عنه تجربة قراءة سيئة.
</p>

<h2>
	تركيبة الخطوط المتغيرة
</h2>

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

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

<p>
	يمكننا الحصول على أي تنسيق فردي من خلال المحور، ويسمى هذا التنسيق الفردي بعد تحديد مكان له على المحور بالكائن، حيث بعض هذه الكائنات تم تسميتها باسم مطور الخط، على سبيل المثال الموقع 600 على محور الوزن تم تسميته بـ SemiBold.
</p>

<p>
	يمتلك الخط المتغير Roboto Flex ثلاث تنسيقات رئيسية على محور الوزن، إذ يقع التنسيق العادي في منتصف المحور، ويقع التنسيقين الآخرين على الطرفين، أحدهما التنسيق الخفيف أو الفاتح lighter، والآخر هو الثقيل أو الغامق heavier، يمكن الاختيار من بين 900 كائن يمثلون التنسيقات الثلاثة.
</p>

<p style="text-align: center;">
	<img alt="Roboto Flex.png" class="ipsImage ipsImage_thumbnailed" data-fileid="94482" data-unique="g634w6xd1" src="https://academy.hsoub.com/uploads/monthly_2022_03/62397b4b4dd1e_RobotoFlex.png.335539c68a4f91b7268763de140aeae0.png" style="width: 600px; height: auto;"></p>

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="94564" href="https://academy.hsoub.com/uploads/monthly_2022_03/roboto-dance.gif.44f4d61963781e449c9b6fec215b31c7.gif" rel=""><img alt="roboto-dance.gif" class="ipsImage ipsImage_thumbnailed" data-fileid="94564" data-unique="489gtbizq" src="https://academy.hsoub.com/uploads/monthly_2022_03/roboto-dance.thumb.gif.bfb2c12fddea98f742686e5bb7b6dc66.gif" style="width: 750px; height: auto;"></a>
</p>

<p>
	يعني هذا أننا بتنا نمتلك الآلاف من <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%85%D9%82%D8%AF%D9%85%D8%A9-%D8%A5%D9%84%D9%89-%D8%AA%D9%86%D8%B3%D9%8A%D9%82%D8%A7%D8%AA-css-r272/" rel="">التنسيقات</a> في ملف واحد، قد يكون الرقم مبالغًا به لكن من خلال هذا الكم من التنسيقات التي يمكننا الحصول عليها يمكننا تحسين تجربة القراءة بشكل ملحوظ، ودون تأثير هذا الكم من التنسيقات على الأداء أو حتى على تكلفة البيانات، أصبح بإمكان مطوري الويب استخدام التنسيقات التي يرونها مناسبةً حسب حاجة التصميم بغض النظر عن كثرة التنسيقات المطلوبة أو قلتها.
</p>

<h3>
	الخط المائل Italics
</h3>

<p>
	تتعامل الخطوط القابلة للتغيير مع تنسيق الخط المائل بآلية مثيرة للاهتمام، فهي تتعامل بأسلوبين مختلفين، الأول مع أنواع الخطوط التي تشبه Helvetica or Roboto، وهي أنواع تمتلك خطوط انحناء تدعم اشتقاق تنسيق الخط المائل منها، لذلك يمكن الحصول على الخط العادي (والمسمى بالروماني) من هذه الخطوط، ويمكن الانتقال من الروماني للمائل باستخدام محور الميلان Slant axis؛ أما النوع الثاني من الخطوط مثل Garamond, Baskerville, or Bodoni، فهي خطوط تمتلك رسمًا خاصًا بالحرف بتنسيقه المائل، وآخر للخط الروماني القائم، ولا يمكن الحصول على تنسيق الخط المائل من الخط الروماني القائم، على سبيل المثال: خط الانحناء الخاص برسم حرف n الصغير بالخط الروماني القائم لا يتوافق مع خط الانحناء الخاص بالحرف n المائل، لذلك بدلًا من استخدام خط انحناء الرسم القائم للانتقال للرسم المائل، سنستخدم محور الميلان Slant axis للانتقال من خط انحناء تنسيق الخط الروماني القائم إلى خط انحناء تنسيق الخط المائل.
</p>

<p style="text-align: center;">
	<img alt="italic.png" class="ipsImage ipsImage_thumbnailed" data-fileid="94476" data-unique="01w2juria" src="https://academy.hsoub.com/uploads/monthly_2022_03/italic.png.b1c48d5415140edd9f835831554a288a.png" style="width: 450px; height: auto;"></p>

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

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

<p>
	باختصار، عندما تسمح <a href="https://academy.hsoub.com/design/general/%D9%83%D9%8A%D9%81-%D8%AA%D8%AE%D8%AA%D8%A7%D8%B1-%D8%A7%D9%84%D8%AE%D8%B7-%D8%A7%D9%84%D9%85%D8%AB%D8%A7%D9%84%D9%8A-%D9%84%D9%85%D8%AA%D8%B7%D9%84%D8%A8%D8%A7%D8%AA%D9%83-r132/" rel="">خطوط </a>الانحناء بذلك، سييكون من الممكن <a href="https://academy.hsoub.com/design/general/%D8%AF%D9%84%D9%8A%D9%84%D9%83-%D8%A5%D9%84%D9%89-%D8%AA%D8%B5%D9%85%D9%8A%D9%85-%D8%A7%D9%84%D8%AE%D8%B7%D9%88%D8%B7-r639/" rel="">لمصممي الخطوط</a> إنشاء خطوط يمكنها استمداد تنسيقات أخرى غير التنسيقات الافتراضية في أبعاد مساحة التصميم، بحيث تمنح هذه المزايا المصمم إمكانية التحكم في كيفية الطباعة.
</p>

<h2>
	تعريفات المحاور
</h2>

<p>
	توجد خمسة محاورًا أساسيةً معتمدةً يمكنها التحكم في كل سمات الخطوط التي نعرفها، وهذه المحاور هي: محور العرض width، ومحور الوزن أو الحجم weight، ومحور الحجم البصري optical- size، والمحور slant، والمحور italics؛ وبالإضافة إلى هذه المحاور الأساسية، يمكن لمصمم الخطوط إنشاء المحاور التي يحتاجها ليتحكم بكل جانب من جوانب تصميم الخط، مثل حجم أطراف الحروف وطول الحواف وارتفاع الحرف وحجم النقطة الموجودة فوق حرف i.
</p>

<p>
	تتحكم المحاور في نفس الميزات، لكنها على الرغم من ذلك يمكنها استخدام قيم مختلفة للتحكم من نوع خط لآخر، ففي الخطين المتغيرين Hepta Slab وOswald، هناك محور وحيد هو محور الوزن، لكن كلًا من هذين الخطين يمتلك نطاق قيم خاص به، فقد بفي الخط Oswald على نفس نطاق القيم التي كان يمتلكها قبل انتقاله ليصبح خطًا متغيرًا، أما الخط Hepta Slab فتبدأ قيمته من 1 وتصل إلى 900.
</p>

<p>
	المحاور الخمسة الأساسية لديها أسماء مختصرة مكونة من أربع أحرف صغيرة، وتستخدم هذه الأسماء المختصرة لضبط قيم المحاور في أكواد الـ <a href="https://wiki.hsoub.com/CSS" rel="external">CSS</a>.
</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>
				<strong>اسم المحور</strong>
			</th>
			<th>
				<strong>قيمة المحور في css</strong>
			</th>
		</tr></thead>
<tbody>
<tr>
<td>
				Weight
			</td>
			<td>
				wght
			</td>
		</tr>
<tr>
<td>
				Width
			</td>
			<td>
				wdth
			</td>
		</tr>
<tr>
<td>
				Slant
			</td>
			<td>
				slnt
			</td>
		</tr>
<tr>
<td>
				Optical Size
			</td>
			<td>
				opsz
			</td>
		</tr>
<tr>
<td>
				Italics
			</td>
			<td>
				ital
			</td>
		</tr>
</tbody>
</table>
<p>
	ولأن المطول يحدد المحاور التي يمتلكها الخط والقيم التي تقبلها الخطوط، فيجب أن توفر توثيقات الخطوط هذه المعلومات اللازمة، أو يمكن تفحص خصائص الخط باستخدام أداة مناسبة مثل أداة Wakamai Fondue.
</p>

<h2>
	الفوائد وحالات الاستخدام
</h2>

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

<h3>
	تعبير مدهش
</h3>

<p style="text-align: center;">
	<img alt="GRASS.png" class="ipsImage ipsImage_thumbnailed" data-fileid="94475" data-unique="6t8u1c6ld" src="https://academy.hsoub.com/uploads/monthly_2022_03/GRASS.png.30c1b593979ef9162dc09f26c2c5f4ef.png" style="width: 450px; height: auto;"></p>

<p>
	يظهر واحد من الأمثلة الرائعة على التعابير الفنية بالأعلى، وهو أحد نتائج استكشاف خصائص الخط <a href="https://codepen.io/mandymichael/pen/YYaWop" rel="external nofollow">Decovar من قبل Mandy Michael</a>.
</p>

<h3>
	الرسوم المتحركة
</h3>

<p style="text-align: center;">
	<img alt="animation.gif" class="ipsImage ipsImage_thumbnailed" data-fileid="94562" data-unique="ph09rs1io" src="https://academy.hsoub.com/uploads/monthly_2022_03/animation.gif.34cf92de8b9e3e49808df036f13006e4.gif" style="width: 480px; height: auto;"></p>

<p>
	تتيح الخطوط المتغيرة استخدام الحروف الرسومية المتحركة، حيث يمثل المثال بالأعلى استخدام محاور التنسيق مع نوع الخط Zycon.
</p>

<p>
	يُعَد Anicons هو أول خط يختص بالرموز المتحركة والملونة في نفس الوقت يعتمد على أيقونات الـ Material Design، كما أنه يُعَد تجربةً مميزةً جمعت بين تقنيتين من تقنيات الخطوط، وهما تقنية الخطوط المتغيرة وتقنية الخطوط الملونة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="94561" href="https://academy.hsoub.com/uploads/monthly_2022_03/anicons-animation.gif.97775ce2e4a9b42654ab6499d87cbfa0.gif" rel=""><img alt="anicons-animation.gif" class="ipsImage ipsImage_thumbnailed" data-fileid="94561" data-unique="47titx9ge" src="https://academy.hsoub.com/uploads/monthly_2022_03/anicons-animation.thumb.gif.d5f99a9b394210d8dd9a7d9c5013c3d4.gif" style="width: 700px; height: auto;"></a>
</p>

<h3>
	خفة ومهارة
</h3>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="94563" href="https://academy.hsoub.com/uploads/monthly_2022_03/larger-widths.gif.8ccf2a9545dca9d3cc2f85cd4e761747.gif" rel=""><img alt="larger-widths.gif" class="ipsImage ipsImage_thumbnailed" data-fileid="94563" data-unique="79jo93f3o" src="https://academy.hsoub.com/uploads/monthly_2022_03/larger-widths.thumb.gif.9b45613e29fb9eacc613220465277189.gif" style="width: 550px; height: auto;"></a>
</p>

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

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

<h2>
	الخطوط المتغيرة في css
</h2>

<h3>
	تحميل ملفات الخطوط المتغيرة
</h3>

<p>
	تحمّل الخطوط المتغيرة في <a href="https://academy.hsoub.com/devops/servers/%D8%A7%D9%84%D9%81%D8%B1%D9%82-%D8%A8%D9%8A%D9%86-%D8%B5%D9%81%D8%AD%D8%A9-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-%D9%88%D9%85%D9%88%D9%82%D8%B9-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-%D9%88%D8%AE%D8%A7%D8%AF%D9%85-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-%D9%88%D9%85%D8%AD%D8%B1%D9%83-%D8%A7%D9%84%D8%A8%D8%AD%D8%AB-r572/" rel="">صفحات الويب</a> باستخدام نفس الطريقة المستعملة لتحميل الخطوط التقليدية، وذلك باستخدام font-face@، مع وجود تحسينين جديدين:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8951_11" style="">
<span class="lit">@font</span><span class="pun">-</span><span class="pln">face </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">'Roboto Flex'</span><span class="pun">;</span><span class="pln">
    src</span><span class="pun">:</span><span class="pln"> url</span><span class="pun">(</span><span class="str">'RobotoFlex-VF.woff2'</span><span class="pun">)</span><span class="pln"> format</span><span class="pun">(</span><span class="str">'woff2 supports variations'</span><span class="pun">),</span><span class="pln">
       url</span><span class="pun">(</span><span class="str">'RobotoFlex-VF.woff2'</span><span class="pun">)</span><span class="pln"> format</span><span class="pun">(</span><span class="str">'woff2-variations'</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"> </span><span class="lit">100</span><span class="pln"> </span><span class="lit">1000</span><span class="pun">;</span><span class="pln">
    font</span><span class="pun">-</span><span class="pln">stretch</span><span class="pun">:</span><span class="pln"> </span><span class="lit">25</span><span class="pun">%</span><span class="pln"> </span><span class="lit">151</span><span class="pun">%;</span><span class="pln">
</span><span class="pun">}</span></pre>

<ol>
<li>
		تنسيق الملف source format: نحن لا نريد من المتصفح تنزيل الخط إذا كان لا يدعم الخطوط المتغيرة، لذلك نضيف التنسيق المطلوب في format، إذ يكون الوصف الأول خاصًا بالتنسيق المستقبلي للخطوط، وهو <code>woff2 supports variations</code>؛ أما في الوصف الثاني format، فنضيف الوصف <code>woff2-variations</code>، وهو خاص بالتنسيق الحالي للخطوط والذي سينتهي قريبًا، إذا كان المتصفح يدعم الخطوط المتغيرة ويدعم التنسيق المستقبلي لملف الخطوط، فسيستخدم التعريف الأول؛ أما إذا كان يدعم الخطوط المتغير والتنسيق الحالي لملف الخطوط، فكلا التنسيقين يشيران إلى نفس ملف الخط.
	</li>
	<li>
		نطاق القيم التي تقبلها التنسيقات: سوف تلاحظ عند النظر لكود تحميل ملف الخط المتغير أننا أضفنا قيمتين للخط، إذ أن القيمة الأولى هي وزن الخط، والثانية هي لتمدد الخط. وبدلًا من تعريف القيم التي يقبلها الخط لخاصية الحجم على سبيل المثال <code>;font-weight:500</code>، سنخبر المتصفح أن الملف يدعم القيم التي تقع ضمن هذا النطاق على سبيل المثال:
	</li>
</ol>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8951_13" style="">
<span class="pln">font</span><span class="pun">-</span><span class="pln">weight</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pln"> </span><span class="lit">1000</span><span class="pun">;</span></pre>

<p>
	يسمح الخط Roboto Flex باستخدام القيم من 100 إلى 1000 على محور الحجم، وتعين <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> قيم المحور مباشرةً لخاصية <code>font-weight</code>، وذلك من خلال تحديد النطاق المسموح به في <code>font-face@</code>، أي أن أيّ قيمة تخرج عن النطاق المسموح به تضبط قيمتها لأقرب قيمة صالحة، وتعين قيم محور العرض إلى خاصية التمدد <code>font-stretch</code> بنفس الطريقة التي استخدمناها بالأعلى لتعيين قيم محور الوزن أو الحجم لخاصية حجم الخط font-weight؛ أما في حال استخدام خطوط جوجل، فستهتم جوجل بكل شيء ليس تنسيق المصدر وتحديد النطاقات المناسبة فقط، ولكن ستتولى جوجل إرسال خطوط بديلة أيضًا في حالة عدم دعم المتصفح للخطوط المتغيرة.
</p>

<h3>
	استخدام الأوزان والعرض
</h3>

<p>
	تُعد المحاور التي يمكن تعيين قيمها في الوقت الحالي من خلال خصائصًا في <a href="https://academy.hsoub.com/programming/css/%d8%aa%d8%b9%d8%b1%d9%91%d9%81-%d8%b9%d9%84%d9%89-%d8%a3%d8%b3%d8%a7%d8%b3%d9%8a%d8%a7%d8%aa-css-r70/" rel="">CSS</a> هي محور الوزن أو الحجم <code>wght</code>، ويمكن تعيين قيمته في css من خلال خاصية <code>font-weight</code> ومحور العرض <code>wdth</code>، وتُعين قيمته في css من خلال خاصية <code>font-stretch</code>.
</p>

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

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8951_15" style="">
<span class="pun">.</span><span class="pln">kinda</span><span class="pun">-</span><span class="pln">light </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"> </span><span class="lit">125</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="kwd">super</span><span class="pun">-</span><span class="pln">heavy </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"> </span><span class="lit">1000</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="94568" href="https://academy.hsoub.com/uploads/monthly_2022_03/roboto-flex-weight.gif.a3ae680fbfac2a8075e7672e9266efba.gif" rel=""><img alt="roboto-flex-weight.gif" class="ipsImage ipsImage_thumbnailed" data-fileid="94568" data-unique="vyhho2k75" src="https://academy.hsoub.com/uploads/monthly_2022_03/roboto-flex-weight.thumb.gif.7e17a2a8b97a85566687debeb80afa59.gif" style="width: 600px; height: auto;"></a>
</p>

<p>
	ويمكن تعيين قيمة الخاصية <code>font-stretch</code> بنفس الآلية بالكلمات المفتاحية، مثل <code>condensed</code> و<code>ultra-expanded</code> أو من خلال القيم المئوية.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8951_17" style="">
<span class="pun">.</span><span class="pln">kinda</span><span class="pun">-</span><span class="pln">narrow </span><span class="pun">{</span><span class="pln">
  font</span><span class="pun">-</span><span class="pln">stretch</span><span class="pun">:</span><span class="pln"> </span><span class="lit">33.3</span><span class="pun">%;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="kwd">super</span><span class="pun">-</span><span class="pln">wide </span><span class="pun">{</span><span class="pln">
  font</span><span class="pun">-</span><span class="pln">stretch</span><span class="pun">:</span><span class="pln"> </span><span class="lit">151</span><span class="pun">%;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="94567" href="https://academy.hsoub.com/uploads/monthly_2022_03/roboto-flex-width.gif.bb27ee7079402ec34ba15a9d3edb8655.gif" rel=""><img alt="roboto-flex-width.gif" class="ipsImage ipsImage_thumbnailed" data-fileid="94567" data-unique="dcm4y9rk8" src="https://academy.hsoub.com/uploads/monthly_2022_03/roboto-flex-width.thumb.gif.f51c1a98e40bce479785321e14eed56a.gif" style="width: 600px; height: auto;"></a>
</p>

<h3>
	استخدام محور الإمالة slnt ومحور الخطوط المائلة ital
</h3>

<p>
	يختص المحور<code>ital</code> بالخطوط التي تحتوي على التنسيق العادي regular style والتنسيق المائل italic style، وبهذا تتلخص وظيفة المحور في الانتقال من تنسيق لآخر، أي أنه يعمل مثل مفتاح التشغيل، فالقيمة صفر تعني أن التنسيق عادي، والقيمة واحد تعني أن التنسيق مائل. على عكس المحاور الأخرى لا يمكن التنقل على طول المحور إما صفر أو واحد فقط. على سبيل المثال، القيمة 0.5 لن تمنحك نصف إمالة.
</p>

<p>
	يختص المحور <code>slnt</code> بإمالة الحروف، ويختلف عن المحور <code>ital</code> في أن إمالته للحرف ليست تنسيقًا جديدًا، بل هو فقط عملية إمالة للتنسيق العادي regular style، القيمة الافتراضية للخط العادي هي صفر، والتي تعني هنا أن الخط قائم ومعتدل الشكل. يوفر الخط Roboto Flex إمكانية الإمالة، وأقصى قيمة إمالة يوفرها، هي -10 درجات، وهذا يعني أن الحروف ستبدأ بالميلان الى اليمين عند الانتقال من 0 الى -10.
</p>

<p>
	سيكون من البديهي تعيين قيم هذه المحاور من خلال خاصية تنسيق الخطوط في css، ولكن حتى هذه اللحظة من شهر أبريل (نيسان) من عام 2020 لا يزال العمل قائمًا على كيفية استخدام هذه المحاور، وضبط قيمها من خلال خصائص css، وإلى حل هذه المشكلة، سيتوجب علينا التعامل مع هذه المحاور بنفس طريقة التعامل مع المحاور الخاصة، إذ يتوجب تعيين قيمها من خلال الخاصية font-variation-settings.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8951_20" style="">
<span class="pln">i</span><span class="pun">,</span><span class="pln"> em</span><span class="pun">,.</span><span class="pln">italic </span><span class="pun">{</span><span class="pln">
    </span><span class="com">/* Should be font-style: italic; */</span><span class="pln">
    font</span><span class="pun">-</span><span class="pln">variation</span><span class="pun">-</span><span class="pln">settings</span><span class="pun">:</span><span class="pln"> </span><span class="str">'ital'</span><span class="pln"> </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">slanted </span><span class="pun">{</span><span class="pln">
    </span><span class="com">/* Should be font-style: oblique 10deg; */</span><span class="pln">
    font</span><span class="pun">-</span><span class="pln">variation</span><span class="pun">-</span><span class="pln">settings</span><span class="pun">:</span><span class="pln"> </span><span class="str">'slnt'</span><span class="pln"> </span><span class="lit">10</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="94566" href="https://academy.hsoub.com/uploads/monthly_2022_03/roboto-flex-slant.gif.55215d774c9fdac71af8ca30d08b29de.gif" rel=""><img alt="roboto-flex-slant.gif" class="ipsImage ipsImage_thumbnailed" data-fileid="94566" data-unique="jmeggz02a" src="https://academy.hsoub.com/uploads/monthly_2022_03/roboto-flex-slant.thumb.gif.b9ff70ab71dc4c40392e11368243f129.gif" style="width: 600px; height: auto;"></a>
</p>

<h3>
	استخدام محور الحجم البصري
</h3>

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

<p style="text-align: center;">
	<img alt="op-si.png" class="ipsImage ipsImage_thumbnailed" data-fileid="94480" data-unique="2taz56qkr" src="https://academy.hsoub.com/uploads/monthly_2022_03/op-si.png.8dc0c1e8ff321939e0965d1dbd9eb0f5.png" style="width: 750px; height: auto;"></p>

<p>
	أُنشئت خاصية جديدة لتمثيل هذا المحور هي font-optical-sizing، حيث القيمة الافتراضية لهذه الخاصية هي auto. تعمل هذه القيمة على ترك مهمة تحديد الحجم البصري للمتصفح، ويعين المتصفح قيمة هذا المحور وفقًا لحجم الخط font-size، ما يعني أن المتصفح سيختار أفضل قيمة تلقائيًا، لكن إذا أردت إيقاف هذه الخاصية font-optical-sizing، فيمكنك تعديل القيمة auto لتصبح none؛ وإذا أردت منع الحجم البصري من العمل بالتوافق مع حجم الخط، فيمكنك ضبط قيمة المحور<code>opsz</code> يدويًا.
</p>

<p>
	يعمل كود css التالي على تعيين حجم الخط ليكون كبيرًا جدًا، ولكن بحجم بصري صغير كما لو كان بحجم 8px.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8951_23" style="">
<span class="pun">.</span><span class="pln">small</span><span class="pun">-</span><span class="pln">yet</span><span class="pun">-</span><span class="pln">large </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">100px</span><span class="pun">;</span><span class="pln">
  font</span><span class="pun">-</span><span class="pln">variation</span><span class="pun">-</span><span class="pln">settings</span><span class="pun">:</span><span class="pln"> </span><span class="str">'opsz'</span><span class="pln"> </span><span class="lit">8</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<h3>
	استخدام المحاور الخاصة
</h3>

<p>
	على عكس المحاور الأساسية المعتمدة، لا تُسند المحاور الخاصة لخصائص في لغة التنسيق css، بل تُستعمل من خلال خاصية font-variation-settings. تكون اختصارات أسماء المحاور الخاصة بالحروف الكبيرة، لتُميَّز عن المحاور الأساسية.
</p>

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="94565" href="https://academy.hsoub.com/uploads/monthly_2022_03/roboto-flex-grade.gif.d4b286f6b503e964950703f58c04ad3e.gif" rel=""><img alt="roboto-flex-grade.gif" class="ipsImage ipsImage_thumbnailed" data-fileid="94565" data-unique="bf4ovkaw8" src="https://academy.hsoub.com/uploads/monthly_2022_03/roboto-flex-grade.thumb.gif.b0cbb0ee159b030d6f12a7a07a6c644d.gif" style="width: 600px; height: auto;"></a>
</p>

<p>
	لأن محور التدرج هو محور خاص وله نطاق قيم محدد من 1 الى -1، سنحتاج الى استخدام خاصية font-variation-settings لتمثيل قيمته.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8951_25" style="">
<span class="pun">.</span><span class="pln">grade</span><span class="pun">-</span><span class="pln">light </span><span class="pun">{</span><span class="pln">
    font</span><span class="pun">-</span><span class="pln">variation</span><span class="pun">-</span><span class="pln">settings</span><span class="pun">:</span><span class="pln"> </span><span class="str">`GRAD`</span><span class="pln"> </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">grade</span><span class="pun">-</span><span class="pln">normal </span><span class="pun">{</span><span class="pln">
    font</span><span class="pun">-</span><span class="pln">variation</span><span class="pun">-</span><span class="pln">settings</span><span class="pun">:</span><span class="pln"> </span><span class="str">`GRAD`</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">grade</span><span class="pun">-</span><span class="pln">heavy </span><span class="pun">{</span><span class="pln">
    font</span><span class="pun">-</span><span class="pln">variation</span><span class="pun">-</span><span class="pln">settings</span><span class="pun">:</span><span class="pln"> </span><span class="str">`GRAD`</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<h3>
	الخطوط المتغيرة في موقع جوجل للخطوط
</h3>

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

<p>
	من أجل استخدام كل المحاور المتاحة وكل القيم المسموحة في خطوط جوجل، يجب عليك الاتصال يدويًا بـ <a href="https://fonts.google.com/variablefonts" rel="external nofollow"><abbr title="Application Programming Interface | واجهة برمجية">API</abbr> خطوط جوجل</a>، حيث يعطي نظرةً عامةً حول الخطوط في جوجل ويسرد بيانات المحاور والقيم الخاصة بها.
</p>

<p>
	وتوفر الأداة <a href="https://github.com/RoelN/google-variable-fonts-links" rel="external nofollow">Google Variable Fonts Links</a> أحدث روابط الخطوط المتغيرة.
</p>

<h2>
	توريث إعدادات الخاصية Font-variation-settings
</h2>

<p>
	إلى أن يأتي الوقت الذي ستُدعَم فيه جميع المحاور بخصائص في css، ستحتاج في الوقت الحالي إلى الاعتماد على الخاصية <code>font-variation-settings</code>، وإذا كان الخط يدعم المحاور الخاصة، فستحتاج إلى استخدام الخاصية <code>font-variation-settings</code>.
</p>

<p>
	مع ذلك، تحتوي الخاصية <code>font-variation-settings</code> على بعض العيوب، ومن بين هذه العيوب، نجد أن أي محور لم تُعيَن قيمته سيضبط على القيم الافتراضية؛ أما المحاور التي عُيّنت قيمها سابقًا، فلا تورّث، وهذا يعني أن الخاصية عند إعادة استخدامها لن تعمل كما هو متوقع منها :
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8951_27" style="">
<span class="tag">&lt;span</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"slanted grade-light"</span><span class="tag">&gt;</span><span class="pln">
    I should be slanted and have a light grade
</span><span class="tag">&lt;/span&gt;</span></pre>

<p>
	سينفذ المتصفح في البداية الشيفرة التالية:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8951_29" style="">
<span class="pln"> </span><span class="str">`font-variation-settings: 'slnt' 10`</span><span class="pln"> </span><span class="pun">من</span><span class="pln"> </span><span class="pun">كلاس</span><span class="pln"> </span><span class="str">`slanted`</span></pre>

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

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8951_31" style="">
<span class="pln"> </span><span class="str">`font-variation-settings: 'GRAD' -1`</span><span class="pln"> </span><span class="pun">من</span><span class="pln"> </span><span class="pun">كلاس</span><span class="pln"> </span><span class="str">`grade-light`</span></pre>

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

<p>
	لحسن الحظ، يمكننا التغلب على هذه المشكلة باستخدام المتغيرات في css:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8951_33" style="">
<span class="com">/* Set the default values */</span><span class="pln">
</span><span class="pun">:</span><span class="pln">root </span><span class="pun">{</span><span class="pln">
    </span><span class="pun">--</span><span class="pln">slnt</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">GRAD</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">/* Change value for these elements and their children */</span><span class="pln">
</span><span class="pun">.</span><span class="pln">slanted </span><span class="pun">{</span><span class="pln">
    </span><span class="pun">--</span><span class="pln">slnt</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">grade</span><span class="pun">-</span><span class="pln">light </span><span class="pun">{</span><span class="pln">
    </span><span class="pun">--</span><span class="pln">grad</span><span class="pun">:</span><span class="pln"> </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">grade</span><span class="pun">-</span><span class="pln">normal </span><span class="pun">{</span><span class="pln">
    </span><span class="pun">--</span><span class="pln">grad</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">grade</span><span class="pun">-</span><span class="pln">heavy </span><span class="pun">{</span><span class="pln">
    </span><span class="pun">--</span><span class="pln">grad</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">/* Apply whatever value is kept in the CSS variables */</span><span class="pln">
</span><span class="pun">.</span><span class="pln">slanted</span><span class="pun">,</span><span class="pln">
</span><span class="pun">.</span><span class="pln">grade</span><span class="pun">-</span><span class="pln">light</span><span class="pun">,</span><span class="pln">
</span><span class="pun">.</span><span class="pln">grade</span><span class="pun">-</span><span class="pln">normal</span><span class="pun">,</span><span class="pln">
</span><span class="pun">.</span><span class="pln">grade</span><span class="pun">-</span><span class="pln">heavy </span><span class="pun">{</span><span class="pln">
    font</span><span class="pun">-</span><span class="pln">variation</span><span class="pun">-</span><span class="pln">settings</span><span class="pun">:</span><span class="pln"> </span><span class="str">'slnt'</span><span class="pln"> </span><span class="kwd">var</span><span class="pun">(--</span><span class="pln">slnt</span><span class="pun">),</span><span class="pln"> </span><span class="str">'GRAD'</span><span class="pln"> </span><span class="kwd">var</span><span class="pun">(--</span><span class="pln">GRAD</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	ستعمَّم قيم متغيرات الـ CSS، وهذا يعني أنه إذا عيّن العنصر أو والده قيمة slnt على 10، فسيحتفظ بهذه القيمة حتى وإن عُينت أي قيمة لـ GRAD.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8951_35" style="">
<span class="lit">@keyframes</span><span class="pln"> width</span><span class="pun">-</span><span class="pln">animation </span><span class="pun">{</span><span class="pln">
   </span><span class="kwd">from</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="pun">--</span><span class="pln">wdth</span><span class="pun">:</span><span class="pln"> </span><span class="lit">25</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
   to   </span><span class="pun">{</span><span class="pln"> </span><span class="pun">--</span><span class="pln">wdth</span><span class="pun">:</span><span class="pln"> </span><span class="lit">151</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	ستُرسل قيم محور العرض الخاص بشيفرة الرسوم المتحركة مباشرةً إلى الخاصية font-variation-settings.
</p>

<h2>
	ثمار استخدام هذه الخطوط على الأداء
</h2>

<p>
	تسمح لنا خطوط OpenType بتخزين أشكال مختلفة من نفس العائلة في ملف خط واحد. لقد أجرت خطوط Monotype تجربةً دمجت من خلالها 12 رسمًا للحروف، وهناك لكل رسم ثمانية أوزان مختلفة لكل وزن ثلاث قيم في محور العرض، إذ تحتوي على الرسمين الروماني القائم والإيطالي المائل، لينتج عن هذه التجربة تخزين ثمانية وأربعين خطًا مختلفًا في ملف واحد، وهو ما يعني جمع ثماني وأربعين ملف خط في ملف واحد، بالتالي، فباستخدامنا للخطوط المتغيرة، نكون قد وفرنا 88% من حجم الملفات الـ 48.
</p>

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

<p>
	في الجهة المقابلة، سيتسبب <a href="https://academy.hsoub.com/files/14-%D8%A7%D9%84%D8%AA%D8%AD%D8%B1%D9%8A%D9%83-%D8%B9%D8%A8%D8%B1-css/" rel="">تحريك</a> الخط كما في الرسوم المتحركة بمشاكل في الأداء على الرغم من أن هذه المشاكل ستُحل بمجرد اكتمال دعم الخطوط المتغيرة في المتصفحات. يمكن تقليل تبعات هذا الاستخدام من خلال تحريك النصوص التي تظهر في الوقت الحالي فقط، وإيقاف النصوص التي لم يصل إليها المستخدم بعد، هذه الشيفرة مقتطفة من موقع <a href="https://abcdinamo.com/news/using-variable-fonts-on-the-web" rel="external nofollow">Dinamo</a>، إذ تعمل هذه الشيفرة على إيقاف الرسوم المتحركة مؤقتًا في العناصر التي لا تُعرَض حاليًا على الشاشة من خلال إضافة الصف vf-animation:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8951_37" style="">
<span class="kwd">var</span><span class="pln"> observer </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">IntersectionObserver</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">entries</span><span class="pun">,</span><span class="pln"> observer</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  entries</span><span class="pun">.</span><span class="pln">forEach</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">entry</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="com">// Pause/Play the animation</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">entry</span><span class="pun">.</span><span class="pln">isIntersecting</span><span class="pun">)</span><span class="pln"> entry</span><span class="pun">.</span><span class="pln">target</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">animationPlayState </span><span class="pun">=</span><span class="pln"> </span><span class="str">"running"</span><span class="pln">
    </span><span class="kwd">else</span><span class="pln"> entry</span><span class="pun">.</span><span class="pln">target</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">animationPlayState </span><span class="pun">=</span><span class="pln"> </span><span class="str">"paused"</span><span class="pln">
  </span><span class="pun">});</span><span class="pln">
</span><span class="pun">});</span><span class="pln">

</span><span class="kwd">var</span><span class="pln"> variableTexts </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelectorAll</span><span class="pun">(</span><span class="str">".vf-animation"</span><span class="pun">);</span><span class="pln">
variableTexts</span><span class="pun">.</span><span class="pln">forEach</span><span class="pun">(</span><span class="kwd">function</span><span class="pun">(</span><span class="pln">el</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> observer</span><span class="pun">.</span><span class="pln">observe</span><span class="pun">(</span><span class="pln">el</span><span class="pun">);</span><span class="pln"> </span><span class="pun">});</span></pre>

<p>
	إذا كانت تأثيرات الخط تعمل بناءً على <a href="https://academy.hsoub.com/marketing/social-media/%D8%A7%D9%84%D9%85%D9%82%D8%A7%D9%8A%D9%8A%D8%B3-%D8%A7%D9%84%D8%B3%D8%A8%D8%B9%D8%A9-%D8%A7%D9%84%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A9-%D9%84%D9%82%D9%8A%D8%A7%D8%B3-%D8%AA%D9%81%D8%A7%D8%B9%D9%84-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85%D9%8A%D9%86-%D8%B9%D9%84%D9%89-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D8%A7%D8%AA-%D8%A7%D9%84%D8%A7%D8%AC%D8%AA%D9%85%D8%A7%D8%B9%D9%8A%D8%A9-r156/" rel="">تفاعل من المستخدم</a>، فستكون فكرةً رائعةً أن نوقف مفعول أحداث الإدخال أو تقييدها، سيعمل هذا على منع المتصفحات من عرض كائنات الخطوط المتغيرة التي تغيرت بشكل بسيط عن الكائنات السابقة والعين البشرية لن تلاحظ فرقًا يذكر.
</p>

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

<pre class="ipsCode prettyprint lang-py prettyprinted" id="ips_uid_8951_39" style="">
<span class="pun">&lt;</span><span class="pln">link rel</span><span class="pun">=</span><span class="str">"preconnect"</span><span class="pln"> href</span><span class="pun">=</span><span class="str">"https://fonts.gstatic.com"</span><span class="pln"> </span><span class="pun">/&gt;</span></pre>

<p>
	تصلح هذه الإرشادات مع شبكات توفير المحتوى CDNS الأخرى، وكلما سمحت للمتصفح بإنشاء الاتصال مبكرًا، كانت عملية جلب الخطوط أسرع. يمكن أن تجد المزيد من <a href="https://csswizardry.com/2020/05/the-fastest-google-fonts/" rel="external nofollow">نصائح تحسين الأداء عند جلب خطوط جوجل هنا</a>.
</p>

<h2>
	الإجراءات الاحتياطية ودعم المتصفحات
</h2>

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

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8951_41" style="">
<span class="com">/* Set up Roboto for old browsers, only regular + bold */</span><span class="pln">
</span><span class="lit">@font</span><span class="pun">-</span><span class="pln">face </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="typ">Roboto</span><span class="pun">;</span><span class="pln">
  src</span><span class="pun">:</span><span class="pln"> url</span><span class="pun">(</span><span class="str">'Roboto-Regular.woff2'</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"> normal</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="lit">@font</span><span class="pun">-</span><span class="pln">face </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="typ">Roboto</span><span class="pun">;</span><span class="pln">
  src</span><span class="pun">:</span><span class="pln"> url</span><span class="pun">(</span><span class="str">'Roboto-Bold.woff2'</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">

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="typ">Roboto</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="kwd">super</span><span class="pun">-</span><span class="pln">bold </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="com">/* Set up Roboto for modern browsers, all weights */</span><span class="pln">
</span><span class="lit">@supports</span><span class="pln"> </span><span class="pun">(</span><span class="pln">font</span><span class="pun">-</span><span class="pln">variation</span><span class="pun">-</span><span class="pln">settings</span><span class="pun">:</span><span class="pln"> normal</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="lit">@font</span><span class="pun">-</span><span class="pln">face </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">'Roboto'</span><span class="pun">;</span><span class="pln">
    src</span><span class="pun">:</span><span class="pln"> url</span><span class="pun">(</span><span class="str">'RobotoFlex-VF.woff2'</span><span class="pun">)</span><span class="pln"> format</span><span class="pun">(</span><span class="str">'woff2 supports variations'</span><span class="pun">),</span><span class="pln">
         url</span><span class="pun">(</span><span class="str">'RobotoFlex-VF.woff2'</span><span class="pun">)</span><span class="pln"> format</span><span class="pun">(</span><span class="str">'woff2-variations'</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"> </span><span class="lit">100</span><span class="pln"> </span><span class="lit">1000</span><span class="pun">;</span><span class="pln">
    font</span><span class="pun">-</span><span class="pln">stretch</span><span class="pun">:</span><span class="pln"> </span><span class="lit">25</span><span class="pun">%</span><span class="pln"> </span><span class="lit">151</span><span class="pun">%;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="kwd">super</span><span class="pun">-</span><span class="pln">bold </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"> </span><span class="lit">1000</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

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

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8951_43" style="">
<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=Oswald:wght@200..700&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>
	يمكن للمتصفحات الحديثة التي يمكنها التعامل مع الخطوط المتغيرة استخدام الخطوط بسهولة وتستطيع استخدام كل قيم الأوزان التي يمكن استخدامها بين 200 الى 700؛ أما في المتصفحات القديمة، فسنضطر إلى تحميل ستة ملفات ملف للوزن 200 وآخر للوزن 300 وعلى هذا المنوال.
</p>

<p>
	ترجمة وبتصرف للمقال <a href="https://web.dev/variable-fonts//" rel="external nofollow">Introduction to variable fonts on the web web.dev</a> من موقع <a href="https://web.dev/" rel="external nofollow">web.dev</a>.
</p>

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

<ul>
<li>
		<a href="https://academy.hsoub.com/design/general/%d9%85%d8%af%d8%ae%d9%84-%d8%a5%d9%84%d9%89-%d8%b9%d8%a7%d9%84%d9%85-%d8%a7%d9%84%d8%ae%d9%8f%d8%b7%d9%88%d8%b7-r23/" rel="">مدخل إلى عالم الخُطوط</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/devops/general/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%A7%D8%B3%D8%AA%D8%B6%D8%A7%D9%81%D8%A9-%D8%AE%D8%B7%D9%88%D8%B7%D9%83-%D8%A7%D9%84%D8%AE%D8%A7%D8%B5%D8%A9-%D8%B9%D9%84%D9%89-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-r453/" rel="">كيفية استضافة خطوطك الخاصة على الويب</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/css/symbol-fonts-%d8%aa%d8%b9%d8%b1%d9%81-%d8%b9%d9%84%d9%89-%d8%ae%d8%b7%d9%88%d8%b7-%d8%a7%d9%84%d8%a3%d9%8a%d9%82%d9%88%d9%86%d8%a7%d8%aa%d8%8c-%d8%a7%d8%b3%d8%aa%d8%b9%d9%85%d8%a7%d9%84%d8%a7%d8%aa%d9%87%d8%a7%d8%8c-%d9%85%d8%a7-%d9%84%d9%87%d8%a7-%d9%88%d9%85%d8%a7-%d8%b9%d9%84%d9%8a%d9%87%d8%a7-r9/" rel="">Symbol Fonts: تعرف على خطوط الأيقونات، استعمالاتها، ما لها وما عليها</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1506</guid><pubDate>Sat, 26 Mar 2022 16:07:00 +0000</pubDate></item><item><title>&#x623;&#x633;&#x627;&#x633;&#x64A;&#x627;&#x62A; &#x62A;&#x635;&#x645;&#x64A;&#x645; &#x627;&#x644;&#x648;&#x64A;&#x628; &#x627;&#x644;&#x645;&#x62A;&#x62C;&#x627;&#x648;&#x628;</title><link>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/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_03/623705709bdf3_----.png.38a6bd9a4765614694d2fa4afbf197d8.png" /></p>

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

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

<p>
	يُلبّي <a href="https://academy.hsoub.com/programming/css/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D9%81%D9%8A-%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-%D8%A7%D9%84%D8%B9%D9%86%D8%A7%D8%B5%D8%B1-%D8%A7%D9%84%D8%B2%D8%A7%D8%A6%D9%81%D8%A9-%D9%88%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-%D9%88%D8%BA%D9%8A%D8%B1%D9%87%D8%A7-r787/" rel="">تصميم الويب المتجاوب</a> احتياجات المستخدمين ويتكيف مع قدرات أجهزتهم؛ وقد وضع إيثان ماركوت Ethan Marcotte أساسياته في <a href="https://alistapart.com/article/responsive-web-design/" rel="external nofollow">مقالته</a> في موقع alistapart؛ وهو موقعٌ يُعنى بقضايا تصميم الويب. يتغير تخطيط صفحة الويب في تصميم الويب المتجاوب وفق حجم الجهاز وقدراته؛ حيث يمكن مثلًا عرض محتوًى ما ضمن عمودٍ واحدٍ فقط على جهازٍ محمول؛ بينما يُعرض نفس المحتوى ضمن عمودين على جهاز لوحي أكبر.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="94221" href="https://academy.hsoub.com/uploads/monthly_2022_03/001video.gif.e1f0377f9a2edda2c997ca9bdbf337c8.gif" rel=""><img alt="001video.gif" class="ipsImage ipsImage_thumbnailed" data-fileid="94221" data-unique="0940i5g2l" src="https://academy.hsoub.com/uploads/monthly_2022_03/001video.gif.e1f0377f9a2edda2c997ca9bdbf337c8.gif"></a>
</p>

<p>
	من المهم جدًا أن تتكيف صفحات الويب مع مختلف حجوم الشاشات، والتي تتغير بصورةٍ مستمرة وفق أنواع الأجهزة المختلفة، مثل الهواتف والأجهزة اللوحية والحواسيب ووحدات التحكم في الألعاب وأجهزة التلفاز والأجهزة القابلة للارتداء. علاوًة على ذلك، يُمكن أن تختلف طرق التفاعل مع الأجهزة، كأن تكون عن طريق اللمس في البعض منها مثلًا. وبالنتيجة، يجب أن يأخذ التصميم الحديث المتجاوب كل هذه الأمور في الحسبان <a href="https://academy.hsoub.com/design/user-experience/%d9%85%d8%af%d8%ae%d9%84-%d8%a5%d9%84%d9%89-%d8%aa%d8%ac%d8%b1%d8%a8%d8%a9-%d8%a7%d9%84%d9%85%d8%b3%d8%aa%d8%ae%d8%af%d9%85-user-experience-r149/" rel="">لتحسين تجربة الاستخدام</a> للجميع.
</p>

<h2>
	إعداد إطار العرض
</h2>

<p>
	يجب أن تتضمن الصفحات المُعدّة على نحوٍ مثالي لطيفٍ متنوعٍٍ من الأجهزة <strong>وسمًا وصفيًا meta</strong> لإطار العرض viewport؛ حيث يُحدّد هذا الوسم للمتصفح كيفية تحجيم الصفحة واختيار أبعادها.
</p>

<p>
	تعرض متصفحات الجوال الصفحة بعرض شاشة حاسوب مكتبي (حوالي 980 بكسل عادًة، كما يُمكن أن تختلف حسب الجهاز)، وذلك بهدف تقديم أفضل تجربة استخدام، ثم تحاول تحسين مظهر المحتوى عن طريق زيادة حجم الخطوط وتحجيم المحتوى ليُناسب أبعاد شاشة العرض، مما يجعل الخطوط تبدو للمستخدمين غير متناسبة مع حجم الشاشة. وبالتالي، سيُضطر المستخدمون للنقر المزدوج أو القرص للتكبير pinch-to-zoom، للتمكُّن من معاينة المحتوى والتفاعل معه براحة.
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8873_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="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></pre>

<p>
	يؤدي إسناد القيمة <code>width=device-width</code> في وسم إطار العرض viewport إلى توجيه الصفحة لإظهار المحتوى على كامل عرض الشاشة وذلك باستخدام وحدة البكسلات المُستقلة عن الجهاز device-independent pixels؛ وهي وحدة قياس طول تُحوّل إلى عددٍ من البكسلات الفيزيائية حسب كثافة البكسلات على الجهاز، فكلما ارتفعت الكثافة زادت البكسلات الفيزيائية الموافقة لبكسل مستقل، وهذا يسمح للصفحة بإظهار المحتوى بما يتناسب مع مختلف حجوم الشاشات، بدءًا من الهواتف الصغيرة المحمولة، وانتهاءً بشاشات الحواسيب المكتبية الكبيرة.
</p>

<p>
	يعرض <a href="https://without-vp-meta.glitch.me/" rel="external nofollow">المثال التالي</a> إظهار صفحةٍ في جهاز دون استخدام الوسم الوصفي لإطار العرض.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="94223" href="https://academy.hsoub.com/uploads/monthly_2022_03/002noviewport.png.9db2202631bff1f5dc80c82255ea1d6c.png" rel=""><img alt="002noviewport.png" class="ipsImage ipsImage_thumbnailed" data-fileid="94223" data-unique="i40y9qxac" src="https://academy.hsoub.com/uploads/monthly_2022_03/002noviewport.thumb.png.48d975e4719de24033e6cd96955d01a1.png"></a>
</p>

<p>
	أما مع استخدام الوسم الوصفي لإطار العرض، فسيكون <a href="https://with-vp-meta.glitch.me/" rel="external nofollow">الإظهار</a>:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="94224" href="https://academy.hsoub.com/uploads/monthly_2022_03/003viewport.png.bd5fb71683a199c0c6016e7a7a2da34b.png" rel=""><img alt="003viewport.png" class="ipsImage ipsImage_thumbnailed" data-fileid="94224" data-unique="g0wp2kimn" src="https://academy.hsoub.com/uploads/monthly_2022_03/003viewport.thumb.png.3997af223aa6a2c38d57a408a4f2ac4b.png"></a>
</p>

<p>
	تُحافظ بعض <a href="https://css-tricks.com/probably-use-initial-scale1/" rel="external nofollow">المتصفحات</a> على عرض الصفحة عند التدوير إلى الوضع الأفقي وعند تصغير أو تكبير الصفحة عوضًا عن إعادة التدفق لملء كامل الشاشة. يؤدي ضبط سمة الحجم الابتدائي <code>initial-scale = 1</code> إلى توجيه المستعرضات لإنشاء علاقة 1:1 بين وحدات بكسل <a href="https://academy.hsoub.com/programming/css/%d8%aa%d8%b9%d8%b1%d9%91%d9%81-%d8%b9%d9%84%d9%89-%d8%a3%d8%b3%d8%a7%d8%b3%d9%8a%d8%a7%d8%aa-css-r70/" rel="">أنماط CSS</a> ووحدات البكسل المستقلة عن الجهاز وذلك بغض النظر عن اتجاه الجهاز؛ مما يسمح للصفحة بالاستفادة من العرض الأفقي كاملًا.
</p>

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

	<p>
		ملاحظة: يجب استخدام الفاصلة بين السمات للتأكد من تحليل الوسم بصورةٍ صحيحة، وخاصةً من قِبل المتصفحات القديمة.
	</p>
</blockquote>

<h3>
	التأكد من إمكانية الوصول لإطار العرض
</h3>

<p>
	تتحقق أداة التدقيق <a href="https://developers.google.com/web/tools/lighthouse/#devtools" rel="external nofollow">Lighthouse</a> من وجود الوسم الوصفي لإطار العرض viewport؛ وفي حال عدم وجوده تُظهر التنبيه الموافق "لا تتوفر السمة الوصفية لإطار العرض مع تحديد العرض أو الحجم الابتدائي" <a href="https://web.dev/viewport/" rel="external nofollow">Does not have a <code>&lt;meta name="viewport"&gt;</code> tag with <code>width</code> or <code>initial-scale</code></a>، وهذا يُساعد في التحقق من استخدام مستندات <a href="https://wiki.hsoub.com/HTML" rel="external">HTML</a> لهذا الوسم على نحوٍ صحيح.
</p>

<p>
	يُمكن ضبط السمات التالية لإطار العرض، إضافًة إلى ضبط سمة الحجم الابتدائي <code>initial-scale</code>:
</p>

<ul>
<li>
		الحجم الأدنى <code>minimum-scale</code>.
	</li>
	<li>
		الحجم الأقصى <code>maximum-scale</code>.
	</li>
	<li>
		الحجم القابل للتخصيص من قبل المستخدم <code>user-scalable</code>.
	</li>
</ul>
<p>
	لا نوصي بضبط هذه السمات، إذ قد يؤدي ذلك إلى تعطيل إمكانية تكبير أو تصغير إطار العرض مما يحدّ من إمكانيات الوصول.
</p>

<h2>
	تحجيم المحتوى وفق إطار العرض
</h2>

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

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

<p>
	تتحقق أداة التدقيق <a href="https://academy.hsoub.com/programming/workflow/%D8%AF%D9%84%D9%8A%D9%84%D9%83-%D8%A5%D9%84%D9%89-%D8%A7%D8%B3%D8%AA%D8%B9%D9%85%D8%A7%D9%84-%D8%A7%D9%84%D8%A3%D8%AF%D8%A7%D8%A9-lighthouse-r691/" rel="">Lighthouse</a> من عدم تمدُّد المحتوى خارج إطار العرض؛ وفي حال حدوث ذلك، تُظهر التنبيه الموافق "لم يُضبط حجم المحتوى صحيحًا بما يُناسب إطار العرض" Content is not sized correctly for the viewport.
</p>

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

<p>
	تتسبب الصور ذات الأبعاد الثابتة والتي تكون أكبر من إطار العرض بظهور أشرطة التمرير. ومن الطرق الشائعة لتجاوز هذه المشكلة، هي إعطاء جميع الصور عرضًا أقصى <code>max-width</code> بنسبة <code>100%</code>؛ مما يؤدي إلى تقليص حجم الصورة لتُناسب المساحة إذا كان حجم إطار العرض أصغر من حجم الصورة. وفي جميع الأحوال، لن يزداد حجم الصورة أكبر من حجمها الطبيعي مع استخدام <code>max-width</code> وليس <code>width</code> بنسبة <code>100%</code>. من المستحسن عمومًا إضافة ما يلي إلى ملف الأنماط <a href="https://wiki.hsoub.com/CSS" rel="external">CSS </a>منعًا من ظهور أشرطة التمرير مع الصور العريضة:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8873_24" style="">
<span class="pln">img </span><span class="pun">{</span><span class="pln">
  max</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%;</span><span class="pln">
  display</span><span class="pun">:</span><span class="pln"> block</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<h4>
	إضافة أبعاد الصورة إلى العنصر img
</h4>

<p>
	يؤدي استخدام <code>max-width: 100%</code> إلى تعديل override أبعاد الصورة الأصلية. ومع ذلك، يجب الاستمرار في استخدام سمة العرض <code>width</code> والإرتفاع <code>height</code> لوسم الصورة <code>&lt;img&gt;</code>؛ نظرًا لاستخدام المتصفحات الحديثة هذه الأبعاد لحجز مساحة الصورة قبل تحميلها؛ مما يُساعد على تجنُّب الإزاحات في التخطيط layout shifts عند تحميل المحتوى.
</p>

<h3>
	التخطيط
</h3>

<p>
	نظرًا لاختلاف أبعاد الشاشة وعرضها المُحدّد بالبكسل في <a href="https://wiki.hsoub.com/CSS" rel="external">أنماط CSS</a> كثيرًا بين الأجهزة (مثلًا، بين الهواتف والأجهزة اللوحية، وحتى بين الهواتف المختلفة)، يجب ألّا يعتمد المحتوى على عرض إطار عرضٍ معيّن لإظهار المحتوى جيدًا.
</p>

<p>
	تطلّب ذلك سابقًا ضبط العناصر المُستخدمة لإنشاء التخطيط باستخدام النسب المئوية. يُبين <a href="https://layout-floats-px.glitch.me/" rel="external nofollow">المثال التالي</a> تخطيط عمودين مع عناصرٍ عائمة باستخدام البكسل لتحديد الحجوم. يتعيّن على المستخدم استخدام شريط التمرير الأفقي لرؤية المحتوى عندما يُصبح عرض إطار العرض أصغر من مجموع عرضي العمودين:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="94225" href="https://academy.hsoub.com/uploads/monthly_2022_03/004floated.jpg.f01cd09f0d46126087f0bf8af3a8c8db.jpg" rel=""><img alt="004floated.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="94225" data-unique="3ktoacqzn" src="https://academy.hsoub.com/uploads/monthly_2022_03/004floated.jpg.f01cd09f0d46126087f0bf8af3a8c8db.jpg" style="width: 550px; height: auto;"></a>
</p>

<p>
	بينما تبقى الأعمدة دائمًا نسبًا مئوية معينة من الحاوية عند استخدام النسب المئوية للعرض؛ مما يعني أن الأعمدة ستُصبح أضيق عوضًا عن ظهور أشرطة التمرير، كما يُبين <a href="https://glitch.com/~layout-floats-percent" rel="external nofollow">المثال التالي</a>:
</p>

<p>
	<iframe __idm_id__="851969" allow="camera; clipboard-read; clipboard-write; encrypted-media; geolocation; microphone; midi" data-ss1633617202="1" loading="lazy" src="https://glitch.com/embed/#!/embed/layout-floats-percent?attributionHidden=true&amp;sidebarCollapsed=true&amp;path=README.md&amp;previewSize=100" style="height: 100%; width: 100%; border: 0;" title="layout-floats-percent on Glitch"></iframe>
</p>

<p>
	يسمح استخدام بعض تقنيات التخطيط الحديثة إنشاء هذه الشبكات المرنة بسهولةٍ كبيرة، مثل تقنية الصندوق المرن Flexbox والتخطيط الشبكي Grid Layout والتخطيط متعدد الأعمدة Multicol.
</p>

<h4>
	التخطيط باستخدام الصندوق المرن Flexbox
</h4>

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

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8873_27" style="">
<span class="pun">.</span><span class="pln">items </span><span class="pun">{</span><span class="pln">
  display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">;</span><span class="pln">
  justify</span><span class="pun">-</span><span class="pln">content</span><span class="pun">:</span><span class="pln"> space</span><span class="pun">-</span><span class="pln">between</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	يُمكن استخدام طريقة التخطيط <a href="https://wiki.hsoub.com/CSS/flex" rel="external">Flexbox</a> لعرض العناصر في صفٍ واحد أو في صفوفٍ متعددة مع تقليص المساحة المتاحة، كما يُبين <a href="https://glitch.com/~responsive-flexbox" rel="external nofollow">المثال التالي</a>:
</p>

<p>
	<iframe allow="camera; clipboard-read; clipboard-write; encrypted-media; geolocation; microphone; midi" data-ss1633617202="1" loading="lazy" src="https://glitch.com/embed/#!/embed/responsive-flexbox?attributionHidden=true&amp;sidebarCollapsed=true&amp;previewSize=100" style="height: 100%; width: 100%; border: 0;" title="responsive-flexbox on Glitch"></iframe>
</p>

<h4>
	التخطيط الشبكي باستخدام أنماط CSS
</h4>

<p>
	يسمح استخدام التخطيط الشبكي في <a href="https://academy.hsoub.com/programming/css/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A3%D9%88%D8%B1%D8%A7%D9%82-%D8%A7%D9%84%D8%A3%D9%86%D9%85%D8%A7%D8%B7-%D8%A7%D9%84%D9%85%D8%AA%D8%AA%D8%A7%D9%84%D9%8A%D8%A9-css-r246/" rel="">أنماط CSS</a> بإنشاء الشبكات المرنة مباشرةً؛ حيث يُمكن مثلًا إعادة إنشاء المثال السابق مع العناصر العائمة باستخدام <a href="https://glitch.com/~grid-as-many-as-fit" rel="external nofollow">التخطيط الشبكي</a> والوحدة <code>fr</code>، التي تُمثّل جزءًا من المساحة المتاحة في الحاوية، عوضًا عن النسب المئوية كما يلي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8873_22" style="">
<span class="pun">.</span><span class="pln">container </span><span class="pun">{</span><span class="pln">
  display</span><span class="pun">:</span><span class="pln"> grid</span><span class="pun">;</span><span class="pln">
  grid</span><span class="pun">-</span><span class="kwd">template</span><span class="pun">-</span><span class="pln">columns</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1fr</span><span class="pln"> </span><span class="lit">3fr</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="94228" href="https://academy.hsoub.com/uploads/monthly_2022_03/007grid.png.ea311e46fd8c957d7f3ac02fcdd9e31a.png" rel=""><img alt="007grid.png" class="ipsImage ipsImage_thumbnailed" data-fileid="94228" data-unique="wkx4o1gz2" src="https://academy.hsoub.com/uploads/monthly_2022_03/007grid.thumb.png.2b30dfb1e747b16a017c849caa5b883c.png" style="width: 650px; height: auto;"></a>
</p>

<p>
	يُمكن أيضًا استخدام <a href="https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Grids" rel="external nofollow">التخطيط الشبكي</a> لإنشاء تخطيط شبكةٍ منتظمةٍ مع أي عددٍ من العناصر التي تُناسبها؛ حيث ينخفض عدد المسارات (الأعمدة) مع تقليص حجم الشاشة. يُبين المثال التالي توضُّع العدد المناسب من البطاقات في كل سطر مع حجم ٍأدنى <code>200px</code>:
</p>

<p>
	<iframe allow="camera; clipboard-read; clipboard-write; encrypted-media; geolocation; microphone; midi" data-ss1633617202="1" loading="lazy" src="https://glitch.com/embed/#!/embed/two-column-grid?attributionHidden=true&amp;sidebarCollapsed=true&amp;previewSize=100" style="height: 100%; width: 100%; border: 0;" title="two-column-grid on Glitch"></iframe>
</p>

<h4>
	التخطيط متعدد الأعمدة Multicol
</h4>

<p>
	يُمكن استخدام التخطيط متعدد الأعمدة <a href="https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Multiple-column_Layout" rel="external nofollow">Multicol</a> مع بعض أنواع التخطيطات لإنشاء عددٍ من الأعمدة المتجاوبة باستخدام خاصية عرض العمود <code>column-width</code>. يُمكن في <a href="https://glitch.com/~responsive-multicol" rel="external nofollow">المثال التالي</a> معاينة إمكانية إضافة أعمدةٍ أخرى بعرض <code>200px</code> إذا وجدت المساحة الكافية لها.
</p>

<p>
	<iframe allow="camera; clipboard-read; clipboard-write; encrypted-media; geolocation; microphone; midi" data-ss1633617202="1" loading="lazy" src="https://glitch.com/embed/#!/embed/responsive-multicol?attributionHidden=true&amp;sidebarCollapsed=true&amp;path=style.css&amp;previewSize=100" style="height: 100%; width: 100%; border: 0;" title="responsive-multicol on Glitch"></iframe>
</p>

<h2>
	استخدام استعلامات الوسائط في أنماط CSS لتحقيق التجاوب
</h2>

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

<p>
	نحتاج لاستهداف نوعٍ من الإظهار لتوفير أنماطٍ مختلفة للطباعة. يُمكن تضمين ورقة أنماط stylesheet تحوي أنماط الطباعة المختلفة كما يلي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8873_34" 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;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">"print.css"</span><span class="pln"> </span><span class="atn">media</span><span class="pun">=</span><span class="atv">"print"</span><span class="tag">&gt;</span><span class="pln">
    …
  </span><span class="tag">&lt;/head&gt;</span><span class="pln">
  …</span></pre>

<p>
	كما يُمكن عوضًا عن الطريقة السابقة، تضمين أنماط الطباعة في ورقة الأنماط الرئيسية باستخدام استعلام الوسائط على النحو التالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8873_36" style="">
<span class="lit">@media</span><span class="pln"> </span><span class="kwd">print</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="com">/* توضع أنماط الطباعة هنا */</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	يُمكن تضمين أوراق أنماطٍ منفصلة في ملف أنماط CSS الرئيسي الخاص بك باستخدام صيغة <code>import@</code>، مثلًا:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8873_38" style="">
<span class="str">`@import url(print.css) print;</span></pre>

<p>
	إلا أنه لا يُوصى بهذا الاستخدام لأسبابٍ تتعلق بالأداء. يُمكن الرجوع إلى <a href="https://developers.google.com/web/fundamentals/performance/critical-rendering-path/page-speed-rules-and-recommendations#avoid_css_imports" rel="external nofollow">تجنُّب عمليات استيراد CSS</a> لمزيدٍ من التفاصيل.
</p>

<p>
	يُستعلم في تصميم الويب المتجاوب عن ميزات الجهاز بهدف توفير تخطيطٍ مختلف للشاشات الأصغر؛ أو عند اكتشاف استخدام الزائر لشاشةٍ تعمل باللمس.
</p>

<h3>
	استعلامات الوسائط المعتمدة على حجم إطار العرض
</h3>

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

<ul>
<li>
		العرض <code>width</code> (أدنى عرض <code>min-width</code>، أقصى عرض <code>max-width</code>).
	</li>
	<li>
		الارتفاع <code>height</code> (أدنى ارتفاع <code>min-height</code>، أقصى ارتفاع <code>max-height</code>).
	</li>
	<li>
		الاتجاه <code>orientation</code>.
	</li>
	<li>
		نسبة العرض إلى الارتفاع <code>aspect-ratio</code>.
	</li>
</ul>
<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="94231" href="https://academy.hsoub.com/uploads/monthly_2022_03/010media.png.4694480442627ecbb0b5cfd057c749e5.png" rel=""><img alt="010media.png" class="ipsImage ipsImage_thumbnailed" data-fileid="94231" data-unique="cex1m5g7o" src="https://academy.hsoub.com/uploads/monthly_2022_03/010media.png.4694480442627ecbb0b5cfd057c749e5.png" style="width: 600px; height: auto;"></a>
</p>

<p>
	تتمتع كل هذه السمات بدعمٍ كامل من جميع المتصفحات.
</p>

<p>
	يجب عدم استخدام سمة عرض الجهاز <code>device-width</code> وسمة ارتفاع الجهاز <code>device-height</code> رغم وردهما في المواصفات القياسية؛ حيث أُلغي الاعتماد عليهما لأنهما تختبران الحجم الحقيقي لنافذة الجهاز وهو أمرٌ غير مفيد عمليًا، إذ يُمكن أن يكون هذا الحجم مختلفًا عن حجم إطار العرض الذي يُعاينه المستخدم، لاسيما فيما لو غيَّر حجم نافذة المتصفح مثلًا.
</p>

<h3>
	استعلامات الوسائط المعتمدة على قدرات الجهاز
</h3>

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

<ul>
<li>
		الحومان <code>hover</code>.
	</li>
	<li>
		المؤشر <code>pointer</code>.
	</li>
	<li>
		"أي حومان" <code>any-hover</code>.
	</li>
	<li>
		"أي مؤشر" <code>any-pointer</code>.
	</li>
</ul>
<p>
	يُمكن للقارئ معاينة هذا <a href="https://glitch.com/~media-query-pointer" rel="external nofollow">العرض</a> على أجهزةٍ مختلفة، مثل حاسوبٍ مكتبي، أو هاتف، أو جهاز لوحي.
</p>

<p>
	<iframe allow="camera; clipboard-read; clipboard-write; encrypted-media; geolocation; microphone; midi" data-ss1633617202="1" loading="lazy" src="https://glitch.com/embed/#!/embed/media-query-pointer?attributionHidden=true&amp;sidebarCollapsed=true&amp;previewSize=100" style="height: 100%; width: 100%; border: 0;" title="media-query-pointer on Glitch"></iframe>
</p>

<p>
	تتمتع هذه السمات الجديدة بدعمٍ كاملٍ من جميع المتصفحات الحديثة.
</p>

<h4>
	استخدام سمة أي حومان any-hover وسمة أي مؤشر any-pointer
</h4>

<p>
	تختبر سمة أي حومان <code>any-hover</code> فيما إذا كان المستخدم يتمتع بإمكانية الحومان؛ كما تختبر سمة أي مؤشر <code>any-pointer</code> استخدام نوعٍ ما من المؤشرات، وذلك حتى لو لم تكن الطريقة الأساسية لتفاعل المستخدم مع الجهاز. يجب توخي الحذر عند استخدام هذه السمات إذ لن يكون الطلب من المستخدم استخدام الفأرة عوضًا عن شاشة اللمس أمرًا مُحبذًا. يُمكن أن تكون هاتان السمتان مفيدتين، إذا كان من المهم معرفة نوع الجهاز الذي يمتلكه المستخدم. على سبيل المثال، ينبغي أن يُتابع الحاسوب المحمول المزود بشاشة لمس ولوحة تتبُّع المؤشرات العريضة والدقيقة إضافًة إلى إمكانية الحومان.
</p>

<h2>
	كيفية اختيار النقاط الحدية
</h2>

<p>
	يجب عدم اختيار النقاط الحدّية وفق فئات الأجهزة، حيث أن تعريف هذه النقاط اعتمادًا على أجهزةٍ، أو <a href="https://academy.hsoub.com/marketing/core-concepts-of-marketing/%D8%AA%D8%B9%D8%B1%D9%8A%D9%81-%D8%A7%D9%84%D9%85%D9%86%D8%AA%D8%AC-%D9%88%D8%A3%D9%86%D9%88%D8%A7%D8%B9%D9%87-r433/" rel="">منتجات</a>، أو أسماء <a href="https://academy.hsoub.com/marketing/core-concepts-of-marketing/%D8%A7%D9%84%D8%B9%D9%84%D8%A7%D9%85%D8%A9-%D8%A7%D9%84%D8%AA%D8%AC%D8%A7%D8%B1%D9%8A%D8%A9-%D9%88%D8%A3%D9%87%D9%85%D9%8A%D8%AA%D9%87%D8%A7-%D9%81%D9%8A-%D9%82%D8%B1%D8%A7%D8%B1-%D8%A7%D9%84%D8%B4%D8%B1%D8%A7%D8%A1-%D9%85%D9%83%D9%88%D9%86%D8%A7%D8%AA-%D8%A7%D9%84%D8%B9%D9%84%D8%A7%D9%85%D8%A9-%D8%A7%D9%84%D8%AA%D8%AC%D8%A7%D8%B1%D9%8A%D8%A9-r486/" rel="">علاماتٍ تجارية</a>، أو نظم تشغيلٍ مُحدّدة قيد الاستخدام حاليًا يُمكن أن يؤدي إلى صعوبة الصيانة لاحقًا. عوضًا عن ذلك، ينبغي أن يُحدّد المحتوى كيفية ملائمة التخطيط لحاويته.
</p>

<h3>
	اختيار النقاط الحدية بدءا من الحجم الأصغر ومن ثم الأكبر
</h3>

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

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="94233" href="https://academy.hsoub.com/uploads/monthly_2022_03/012narrow.png.1e0866aeb085e42c5647f6aae5abcfe4.png" rel=""><img alt="012narrow.png" class="ipsImage ipsImage_thumbnailed" data-fileid="94233" data-unique="qxhy7r7z7" src="https://academy.hsoub.com/uploads/monthly_2022_03/012narrow.thumb.png.ab200d12532304f9ea438159417cee68.png"></a>
</p>

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

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="94234" href="https://academy.hsoub.com/uploads/monthly_2022_03/013tweak.png.53386cd54d9a02a8e2864341f8753951.png" rel=""><img alt="013tweak.png" class="ipsImage ipsImage_thumbnailed" data-fileid="94234" data-unique="hqnc8825v" src="https://academy.hsoub.com/uploads/monthly_2022_03/013tweak.png.53386cd54d9a02a8e2864341f8753951.png"></a>
</p>

<p>
	لإدراج نقطةٍ حدّية عند <code>600px</code>، نُنشئ استعلامي وسائط في نهاية أنماط CSS للمكوّن؛ حيث يُستخدم الأول عندما يكون عرض المتصفح أقل أو يساوي <code>600px</code>؛ بينما يُستخدم الآخر عندما يكون عرض المتصفح أكبر من <code>600px</code>.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8873_46" style="">
<span class="lit">@media</span><span class="pln"> </span><span class="pun">(</span><span class="pln">max</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">600px</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="lit">@media</span><span class="pln"> </span><span class="pun">(</span><span class="pln">min</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">601px</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

</span><span class="pun">}</span></pre>

<p>
	أخيرًا، نُعيد تشكيل أنماط CSS كما يلي: نُضيف أنماط CSS للشاشات الصغيرة ضمن استعلام الوسائط الأول وأنماط CSS للشاشات الأكبر ضمن استعلام الوسائط الثاني.
</p>

<h3>
	اختيار نقاط حدية ثانوية عند الضرورة
</h3>

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

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

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8873_48" style="">
<span class="lit">@media</span><span class="pln"> </span><span class="pun">(</span><span class="pln">min</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">360px</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">
    font</span><span class="pun">-</span><span class="pln">size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1.0em</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="lit">@media</span><span class="pln"> </span><span class="pun">(</span><span class="pln">min</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="pun">{</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">seven</span><span class="pun">-</span><span class="pln">day</span><span class="pun">-</span><span class="pln">fc </span><span class="pun">.</span><span class="pln">temp</span><span class="pun">-</span><span class="pln">low</span><span class="pun">,</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">seven</span><span class="pun">-</span><span class="pln">day</span><span class="pun">-</span><span class="pln">fc </span><span class="pun">.</span><span class="pln">temp</span><span class="pun">-</span><span class="pln">high </span><span class="pun">{</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">inline</span><span class="pun">-</span><span class="pln">block</span><span class="pun">;</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">45</span><span class="pun">%;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="pun">.</span><span class="pln">seven</span><span class="pun">-</span><span class="pln">day</span><span class="pun">-</span><span class="pln">fc </span><span class="pun">.</span><span class="pln">seven</span><span class="pun">-</span><span class="pln">day</span><span class="pun">-</span><span class="pln">temp </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">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">seven</span><span class="pun">-</span><span class="pln">day</span><span class="pun">-</span><span class="pln">fc </span><span class="pun">.</span><span class="pln">icon </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">64px</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">64px</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>
	<iframe allow="camera; clipboard-read; clipboard-write; encrypted-media; geolocation; microphone; midi" data-ss1633617202="1" loading="lazy" src="https://glitch.com/embed/#!/embed/responsive-forecast?attributionHidden=true&amp;sidebarCollapsed=true&amp;path=style.css&amp;previewSize=100" style="height: 100%; width: 100%; border: 0;" title="responsive-forecast on Glitch"></iframe>
</p>

<h3>
	إعدادات النص للقراءة الأمثلية
</h3>

<p>
	تنص قواعد إتاحة القراءة السهلة على وجوب عدم احتواء السطر الواحد على أكثر من 70 إلى 80 حرفًا (حوالي 8 إلى 10 كلمات في اللغة الإنجليزية)؛ مما يتطلب إدراج نقطة حدّية في حال تجاوز عدد الكلمات في كتلةٍ نصية 10 كلمات.
</p>

<p>
	يُبين الشكل التالي مظهر النص على هاتف جوال:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="94236" href="https://academy.hsoub.com/uploads/monthly_2022_03/015mobile.jpg.164dfce98c8dcd29d3691c58002dc6da.jpg" rel=""><img alt="015mobile.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="94236" data-unique="0oj04uv6x" src="https://academy.hsoub.com/uploads/monthly_2022_03/015mobile.jpg.164dfce98c8dcd29d3691c58002dc6da.jpg" style="width: 300px; height: auto;"></a>
</p>

<p>
	بينما يظهر نفس النص على حاسوبٍ مكتبي بعد إضافة النقاط الحدّية لتحديد طول السطر:
</p>

<p style="text-align: center;">
	<img alt="016desktop.png" class="ipsImage ipsImage_thumbnailed" data-fileid="94237" data-unique="2ob6s9aa0" src="https://academy.hsoub.com/uploads/monthly_2022_03/016desktop.png.865e97e614da0d5070d8cb2044df2b24.png" style="width: 700px; height: auto;"></p>

<p>
	يُبين المثال السابق ملاءمة الخط Roboto من الحجم <code>1em</code> على نحوٍ أمثلي للشاشات الصغيرة، حيث يوفر حوالي 10 كلمات في السطر الواحد؛ أما بالنسبة للشاشات الكبيرة فيجب إضافة نقطة حدّية. يُبين <a href="https://glitch.com/~rwd-reading" rel="external nofollow">المثال التالي</a> تحديد عرض المحتوى إلى <code>550px</code> إذا تجاوز عرض المتصفح <code>575px</code>.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8873_57" style="">
<span class="lit">@media</span><span class="pln"> </span><span class="pun">(</span><span class="pln">min</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">575px</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  article </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">550px</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="kwd">auto</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="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></pre>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="94220" href="https://academy.hsoub.com/uploads/monthly_2022_03/0017rwd.png.2d41109348a1ff40953db468fb3a39c9.png" rel=""><img alt="0017rwd.png" class="ipsImage ipsImage_thumbnailed" data-fileid="94220" data-unique="f76oexq4r" src="https://academy.hsoub.com/uploads/monthly_2022_03/0017rwd.png.2d41109348a1ff40953db468fb3a39c9.png" style="width: 650px; height: auto;"></a>
</p>

<h3>
	تجنب إخفاء المحتوى
</h3>

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

<h2>
	معاينة النقاط الحدية لاستعلامات الوسائط في أدوات التطوير Chrome DevTools
</h2>

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

<p>
	يُبين الشكل التالي تطبيق حالة الطقس مع إطار عرضٍ عريض باستخدام DevTools:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="94238" href="https://academy.hsoub.com/uploads/monthly_2022_03/018wider.png.ba989f91005dfc2162640319da482746.png" rel=""><img alt="018wider.png" class="ipsImage ipsImage_thumbnailed" data-fileid="94238" data-unique="vymv9lar1" src="https://academy.hsoub.com/uploads/monthly_2022_03/018wider.png.ba989f91005dfc2162640319da482746.png" style="width: 700px; height: auto;"></a>
</p>

<p>
	كما يُبين الشكل التالي تطبيق حالة الطقس مع إطار عرضٍ ضيق باستخدام DevTools:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="94239" href="https://academy.hsoub.com/uploads/monthly_2022_03/019narrower.png.d5d032cb769ec0d3c61039ba1fc1bc25.png" rel=""><img alt="019narrower.png" class="ipsImage ipsImage_thumbnailed" data-fileid="94239" data-unique="5g63q1d8z" src="https://academy.hsoub.com/uploads/monthly_2022_03/019narrower.png.d5d032cb769ec0d3c61039ba1fc1bc25.png" style="width: 700px; height: auto;"></a>
</p>

<p>
	لمعاينة الصفحة مع نقاط حدّية مختلفة، يُمكن فتح أدوات المطور <a href="https://academy.hsoub.com/programming/workflow/%D9%83%D9%8A%D9%81-%D8%AA%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-%D8%A3%D8%AF%D9%88%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B7%D9%88%D9%90%D9%91%D8%B1-devtools-%D9%81%D9%8A-chrome-r554/" rel="">DevTools</a> ثم تشغيل وضع الجهاز <a href="https://developers.google.com/web/tools/chrome-devtools/device-mode#toggle" rel="external nofollow">Device Mode</a> مما يؤدي لفتح الصفحة بالوضع المتجاوب <a href="https://developers.google.com/web/tools/chrome-devtools/device-mode#responsive" rel="external nofollow">responsive mode</a>.
</p>

<p>
	كما يُمكن لمعاينة استعلامات الوسائط وإظهار النقاط الحدّية على هيئة أشرطةٍ ملونة، اختيار <a href="https://developers.google.com/web/tools/chrome-devtools/device-mode#queries" rel="external nofollow">Show media queries</a> من القائمة Device Mode.
</p>

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

<p>
	ترجمة -وبتصرف- للمقالة <a href="https://web.dev/responsive-web-design-basics/" rel="external nofollow">Responsive web design basics</a> للمؤلفين: Pete LePage و Rachel Andrew.
</p>

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

<ul>
<li>
		<a href="https://academy.hsoub.com/design/general/%d9%85%d8%a7-%d9%87%d9%88-%d8%a7%d9%84%d9%81%d8%b1%d9%82-%d8%a8%d9%8a%d9%86-%d8%a7%d9%84%d8%aa%d8%b5%d9%85%d9%8a%d9%85-%d8%a7%d9%84%d9%85%d8%aa%d8%ac%d8%a7%d9%88%d8%a8-responsive-web-design-%d9%88%d8%a7%d9%84%d8%aa%d8%b5%d9%85%d9%8a%d9%85-%d8%a7%d9%84%d9%85%d8%aa%d9%84%d8%a7%d8%a6%d9%85-adaptive-web-design-r119/" rel="">ما هو الفرق بين التصميم المتجاوب (Responsive Web Design) والتصميم المتلائم (Adaptive Web Design)</a>
	</li>
	<li>
		<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%B4%D8%A7%D9%85%D9%84-%D9%84%D8%B4%D8%B1%D8%AD-%D8%A7%D9%84%D9%86%D9%82%D8%A7%D8%B7-%D8%A7%D9%84%D8%AD%D8%AF%D9%8A%D8%A9-%D9%84%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%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%D8%A9-r861/" rel="">الدليل الشامل لشرح النقاط الحدية لصفحات الويب المتجاوبة</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1499</guid><pubDate>Sat, 19 Mar 2022 16:00:00 +0000</pubDate></item><item><title>&#x62A;&#x62D;&#x631;&#x64A;&#x643; &#x648;&#x627;&#x62C;&#x647;&#x627;&#x62A; &#x627;&#x644;&#x639;&#x631;&#x636; &#x623;&#x62B;&#x646;&#x627;&#x621; &#x627;&#x644;&#x62A;&#x646;&#x642;&#x644; &#x641;&#x64A; &#x645;&#x648;&#x642;&#x639; &#x627;&#x644;&#x648;&#x64A;&#x628;</title><link>https://academy.hsoub.com/programming/css/%D8%AA%D8%AD%D8%B1%D9%8A%D9%83-%D9%88%D8%A7%D8%AC%D9%87%D8%A7%D8%AA-%D8%A7%D9%84%D8%B9%D8%B1%D8%B6-%D8%A3%D8%AB%D9%86%D8%A7%D8%A1-%D8%A7%D9%84%D8%AA%D9%86%D9%82%D9%84-%D9%81%D9%8A-%D9%85%D9%88%D9%82%D8%B9-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-r1492/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_02/62112cae51161_--------.png.b3790e3732efade6d25c77a8ee4de4e1.png" /></p>

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

<ul>
<li>
		يجب استخدام الانتقالات translations للتنقُل بين الواجهات، مع تجنُّب استخدام خصائصٍ، مثل اليسار <code>left</code> أو الأعلى <code>top</code> والتي تُنشّط التخطيط.
	</li>
	<li>
		يجب التأكد من سرعة التحريك وقصر مدته.
	</li>
	<li>
		يجب الانتباه لتغييرات التحريك والتخطيط عند زيادة حجم الشاشة، إذ أن ما يصلح على شاشةٍ صغيرة قد يبدو غريبًا على شاشة حاسوب مكتبي.
	</li>
</ul>
<p>
	يعتمد مظهر وسلوك الانتقالات بين الواجهات على أنواع واجهات العرض المختلفة؛ حيث يختلف مثلًا تحريك شريطٍ منبثق شرطي أعلى واجهةٍ عن الانتقال بين قائمة عناصر وواجهة عرض تفاصيل عنصرٍ منها.
</p>

<p>
	من قواعد النجاح الأساسية المحافظة على 60 إطارًا في الثانية عند التحريك. وبهذا، نتجنب ظهور التحريك المتقطع المتداخل مع <a href="https://academy.hsoub.com/entrepreneurship/ecommerce/%D9%83%D9%8A%D9%81-%D9%8A%D8%B3%D8%A7%D8%B9%D8%AF%D9%83-%D9%82%D9%8A%D8%A7%D8%B3-%D8%AA%D9%81%D8%A7%D8%B9%D9%84-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85%D9%8A%D9%86-%D8%B9%D9%84%D9%89-%D8%AE%D9%81%D8%B6-%D9%85%D8%B9%D8%AF%D9%84%D8%A7%D8%AA-%D9%86%D9%81%D9%88%D8%B1%D9%87%D9%85-r852/" rel="">تفاعل المستخدمين</a>؛ كما يجب التأكد من ضبط الخاصية "سوف يُعدّل" <code>will-change</code> لأي عنصرٍ يُخطط لتحريكه لاحقًا. أما بالنسبة للانتقالات بين واجهات العرض، يُستحسن استخدام <code>will-change: transform</code>.
</p>

<h2>
	استخدام الانتقالات للتنقل بين واجهات العرض
</h2>

<p>
	لتسهيل عرض الأفكار في هذه المقالة، سنفترض في مثالنا وجود واجهتين، الأولى هي واجهة عرض قائمةٍ من العناصر، والثانية هي واجهة عرض تفاصيل عنصرٍ منها؛ فعند نقر المستخدم على عنصرٍ في قائمة العرض الأولى، تنزلق واجهة عرض التفاصيل لتظهر داخلًة على الشاشة، وتنزلق قائمة العرض الأولى لتختفي خارجةً من الشاشة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="92347" href="https://academy.hsoub.com/uploads/monthly_2022_02/001view-translate.gif.40b78f44ab16e37947d12c26234530a0.gif" rel=""><img alt="001view-translate.gif" class="ipsImage ipsImage_thumbnailed" data-fileid="92347" data-unique="ogbic5kvj" src="https://academy.hsoub.com/uploads/monthly_2022_02/001view-translate.gif.40b78f44ab16e37947d12c26234530a0.gif"></a>
</p>

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="92348" href="https://academy.hsoub.com/uploads/monthly_2022_02/002container-two-views.png.3c28e0ac68c8ca0b445b856e3144ba16.png" rel=""><img alt="002container-two-views.png" class="ipsImage ipsImage_thumbnailed" data-fileid="92348" data-unique="ujcuilc5e" src="https://academy.hsoub.com/uploads/monthly_2022_02/002container-two-views.png.3c28e0ac68c8ca0b445b856e3144ba16.png"></a>
</p>

<p>
	تكون <a href="https://academy.hsoub.com/programming/css/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A3%D9%88%D8%B1%D8%A7%D9%82-%D8%A7%D9%84%D8%A3%D9%86%D9%85%D8%A7%D8%B7-%D8%A7%D9%84%D9%85%D8%AA%D8%AA%D8%A7%D9%84%D9%8A%D8%A9-css-r246/" rel="">أنماط CSS</a> للحاوية:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_9227_7" style="">
<span class="pun">.</span><span class="pln">container </span><span class="pun">{</span><span class="pln">
  width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%;</span><span class="pln">
  height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%;</span><span class="pln">
  overflow</span><span class="pun">:</span><span class="pln"> hidden</span><span class="pun">;</span><span class="pln">
  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>
	يمكن ضبط خاصية موقع الحاوية إلى <strong>نسبي</strong> <code>relative</code>؛ مما يعني توضُّع كل واجهة عرض ضمن هذه الحاوية تمامًا في الزاوية اليسرى العلوية ومن ثم تُحرّك باستخدام التحويلات. تُعدّ هذه الطريقة أفضل وأسهل من حيث الأداء، من استخدام خاصية اليسار <code>left</code>، التي يؤدي إلى تشغيل التخطيط والطلاء، ويكون من السهل عادًة تخفيف تكلفة هذه الطريقة.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_9227_9" style="">
<span class="pun">.</span><span class="pln">view </span><span class="pun">{</span><span class="pln">
  width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%;</span><span class="pln">
  height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</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">
  left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
  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="com">/* أعلم المتصفح بخطة تحريك كل واجهة عرض دخولًا وخروجًا*/</span><span class="pln">

  will</span><span class="pun">-</span><span class="pln">change</span><span class="pun">:</span><span class="pln"> transform</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	تؤدي إضافة الانتقال <code>transition</code> في خاصية التحويل <code>transform</code> إلى إضفاء تأثير انتقالٍ لطيف. يُستخدم منحني بيزيه <code>cubic-bezier</code> مخصّص للوصول إلى شعور استخدام مُحبَّب.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_9227_11" style="">
<span class="pun">.</span><span class="pln">view </span><span class="pun">{</span><span class="pln">
  transition</span><span class="pun">:</span><span class="pln"> transform </span><span class="lit">0.3s</span><span class="pln"> cubic</span><span class="pun">-</span><span class="pln">bezier</span><span class="pun">(</span><span class="lit">0.465</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.183</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.153</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.946</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

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

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_9227_13" style="">
<span class="pun">.</span><span class="pln">details</span><span class="pun">-</span><span class="pln">view </span><span class="pun">{</span><span class="pln">
  transform</span><span class="pun">:</span><span class="pln"> translateX</span><span class="pun">(</span><span class="lit">100</span><span class="pun">%);</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	يجب الآن كتابة بعض تعليمات <a href="https://wiki.hsoub.com/JavaScript" rel="external">JavaScript</a> للتعامل مع الصفوف. تبدِّل الشيفرة التالية الصفوف المناسبة لواجهات العرض:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_9227_15" style="">
<span class="kwd">var</span><span class="pln"> container </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">'.container'</span><span class="pun">);</span><span class="pln">
</span><span class="kwd">var</span><span class="pln"> backButton </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">'.back-button'</span><span class="pun">);</span><span class="pln">
</span><span class="kwd">var</span><span class="pln"> listItems </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelectorAll</span><span class="pun">(</span><span class="str">'.list-item'</span><span class="pun">);</span><span class="pln">

</span><span class="com">/*
تعديل الصفوف في الحاوية واختيار واجهة العرض
 */</span><span class="pln">
</span><span class="kwd">function</span><span class="pln"> onViewChange</span><span class="pun">(</span><span class="pln">evt</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">classList</span><span class="pun">.</span><span class="pln">toggle</span><span class="pun">(</span><span class="str">'view-change'</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">//عند النقر على عنصر في القائمة يحب عرض واجهة تفاصيله</span><span class="pln">
</span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">var</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> listItems</span><span class="pun">.</span><span class="pln">length</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  listItems</span><span class="pun">[</span><span class="pln">i</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"> onViewChange</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">//العودة للواجهة الأولى عند النقر على زر العودة للخلف</span><span class="pln">
backButton</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"> onViewChange</span><span class="pun">);</span></pre>

<p>
	وأخيرًا، تُضاف تصريحات <a href="https://wiki.hsoub.com/CSS" rel="external">CSS</a> إلى هذه الصفوف:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_9227_20" style="">
<span class="pun">.</span><span class="pln">view</span><span class="pun">-</span><span class="pln">change </span><span class="pun">.</span><span class="pln">list</span><span class="pun">-</span><span class="pln">view </span><span class="pun">{</span><span class="pln">
  transform</span><span class="pun">:</span><span class="pln"> translateX</span><span class="pun">(-</span><span class="lit">100</span><span class="pun">%);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">view</span><span class="pun">-</span><span class="pln">change </span><span class="pun">.</span><span class="pln">details</span><span class="pun">-</span><span class="pln">view </span><span class="pun">{</span><span class="pln">
  transform</span><span class="pun">:</span><span class="pln"> translateX</span><span class="pun">(</span><span class="lit">0</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	يُمكن تجربة <a href="https://googlesamples.github.io/web-fundamentals/fundamentals/design-and-ux/animations/inter-view-animation.html" rel="external nofollow">المثال</a>.
</p>

<p>
	يُمكن توسيع المثال لإضافة واجهات عرض متعددة مع نفس منهجية العمل: تكون كل واجهة غير مرئية خارج الشاشة مع إحضارها وإظهارها حين الحاجة وإزالة واجهة العرض الحالية.
</p>

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

	<div class="ipsQuote_contents ipsClearfix">
		<p>
			<strong>ملاحظة</strong>: قد يكون إنشاء هذا النوع من التسلسل الهرمي عبر المستعرضات أمرًا صعبًا. يتطلب نظام iOS الخاصية CSS الإضافية: <code>webkit-overflow-scrolling: touch-</code> مثلًا لإعادة تمكين التمرير الطائر fling scrolling، إلا أنه لا يُمكن التحكم في المحور المناسب مثل ما يُمكن فعله باستخدام الخاصية القياسية <code>overflow</code>. يجب دومًا اختبار التطبيق على مجموعةٍ مختلفة من الأجهزة!
		</p>
	</div>
</blockquote>

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

<h2>
	التأكد من تنفيذ التحريك على الشاشات الأكبر
</h2>

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="92350" href="https://academy.hsoub.com/uploads/monthly_2022_02/003container-two-views-ls.png.d7179f1ae81aa9c15db92199cc159f55.png" rel=""><img alt="003container-two-views-ls.png" class="ipsImage ipsImage_thumbnailed" data-fileid="92350" data-unique="k5ocjdm60" src="https://academy.hsoub.com/uploads/monthly_2022_02/003container-two-views-ls.png.d7179f1ae81aa9c15db92199cc159f55.png" style="width: 300px; height: auto;"></a>
</p>

<h2>
	تحريك واجهات العرض المنبثقة الشرطية
</h2>

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

<ul>
<li>
		يجب استخدام واجهات العرض المنبثقة الشرطية باعتدال؛ حيث يشعر المستخدمون بالإحباط إذا قاطعت تجربتهم دون داعٍ.
	</li>
	<li>
		تُساهم نسبة التحجيم المناسبة في إضفاء التأثير اللطيف "إسقاط على drop on".
	</li>
	<li>
		يجب إخفاء واجهات العرض المنبثقة الشرطية بسرعة عندما يرفضها المستخدم؛ كما يجب إظهار هذه الواجهات ببطء حتى لا تُفاجئ المستخدم.
	</li>
</ul>
<p>
	يجب تطابق حجم غطاء الواجهة المنبثقة مع إطار العرض وذلك عن طريق ضبط خاصية الموضع <code>position</code> إلى ثابت <code>fixed</code>:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_9227_23" style="">
<span class="pun">.</span><span class="pln">modal </span><span class="pun">{</span><span class="pln">
  position</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">fixed</span><span class="pun">;</span><span class="pln">
  top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
  left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
  width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%;</span><span class="pln">
  height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%;</span><span class="pln">

  pointer</span><span class="pun">-</span><span class="pln">events</span><span class="pun">:</span><span class="pln"> none</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">

  will</span><span class="pun">-</span><span class="pln">change</span><span class="pun">:</span><span class="pln"> transform</span><span class="pun">,</span><span class="pln"> opacity</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	تكون قيمة الشفافية <code>opacity</code> للواجهة <code>0</code> في البداية وتكون بذلك مخفية، إلا أنها تحتاج أيضًا إلى ضبط أحداث المؤشر <code>pointer-events</code> إلى لا شيء <code>none</code> حتى لا تتجاوب مع أحداث المستخدم مثل النقر واللمس؛ وبدون ذلك، تُعطّل جميع التفاعلات وتغدو الصفحة غير مستجيبة أبدًا. أخيرًا، يجب استخدام <code>will-change</code> مع كلٍ من الخصائص <code>opacity</code> و <code>transform</code> التي يُطبّق التحريك عليها. يُمكن الرجوع إلى استخدام الخاصية will-change.
</p>

<p>
	يجب أن تستجيب الواجهة المنبثقة عندما تكون مرئيةً لتفاعلات المستخدم مع شفافيةٍ <code>opacity</code> قيمتها <code>1</code>:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_9227_25" style="">
<span class="pun">.</span><span class="pln">modal</span><span class="pun">.</span><span class="pln">visible </span><span class="pun">{</span><span class="pln">
  pointer</span><span class="pun">-</span><span class="pln">events</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">auto</span><span class="pun">;</span><span class="pln">
  opacity</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	يُمكن استخدام سكريبت <a href="https://academy.hsoub.com/programming/java/%D8%A7%D9%84%D8%AF%D9%84%D9%8A%D9%84-%D8%A7%D9%84%D8%B3%D8%B1%D9%8A%D8%B9-%D9%84%D9%84%D8%BA%D8%A9-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-java-r599/" rel="">جافا</a> لتبديل الصف إلى مرئي "visible" عند الحاجة لعرض الواجهة المنبثقة.
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_9227_32" style="">
<span class="pln">modal</span><span class="pun">.</span><span class="pln">classList</span><span class="pun">.</span><span class="pln">add</span><span class="pun">(</span><span class="str">'visible'</span><span class="pun">);</span></pre>

<p>
	يُمكنك الآن، إضافة التحريك إلى الواجهة المنبثقة.
</p>

<pre class="ipsCode prettyprint lang-c prettyprinted" id="ips_uid_9227_30" style="">
<span class="pun">.</span><span class="pln">modal </span><span class="pun">{</span><span class="pln">
  transform</span><span class="pun">:</span><span class="pln"> scale</span><span class="pun">(</span><span class="lit">1.15</span><span class="pun">);</span><span class="pln">

  transition</span><span class="pun">:</span><span class="pln">
    transform </span><span class="lit">0.1s</span><span class="pln"> cubic</span><span class="pun">-</span><span class="pln">bezier</span><span class="pun">(</span><span class="lit">0.465</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.183</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.153</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.946</span><span class="pun">),</span><span class="pln">
    opacity </span><span class="lit">0.1s</span><span class="pln"> cubic</span><span class="pun">-</span><span class="pln">bezier</span><span class="pun">(</span><span class="lit">0.465</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.183</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.153</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.946</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	تُساهم نسبة التحجيم <code>scale</code> في جعل المنظر يبدو وكأنه يسقط على الشاشة بهدوء، مما يُعطي تأثيرًا جميلًا. يُطبّق الانتقال الافتراضي على كلٍ من خاصية التحويل <code>transform</code> والشفافية <code>opacity</code> مع منحني مخصص ومدةٍ تبلغ 0.1 ثانية.
</p>

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

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_9227_34" style="">
<span class="pun">.</span><span class="pln">modal</span><span class="pun">.</span><span class="pln">visible </span><span class="pun">{</span><span class="pln">
  transform</span><span class="pun">:</span><span class="pln"> scale</span><span class="pun">(</span><span class="lit">1</span><span class="pun">);</span><span class="pln">

  transition</span><span class="pun">:</span><span class="pln">
    transform </span><span class="lit">0.3s</span><span class="pln"> cubic</span><span class="pun">-</span><span class="pln">bezier</span><span class="pun">(</span><span class="lit">0.465</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.183</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.153</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.946</span><span class="pun">),</span><span class="pln">
    opacity </span><span class="lit">0.3s</span><span class="pln"> cubic</span><span class="pun">-</span><span class="pln">bezier</span><span class="pun">(</span><span class="lit">0.465</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.183</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.153</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.946</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	يستغرق الآن ظهور الواجهة المنبثقة وقتًا أطول (أقل مفاجأةً للمستخدم) مع إخفاءٍ سريع مما يُلبي طموح المستخدم.
</p>

<h2>
	توقيت التحريك غير المتزامن
</h2>

<p>
	يُحسِّن توقيت <a href="https://academy.hsoub.com/programming/css/%d8%a7%d9%84%d9%85%d8%b1%d8%ac%d8%b9-%d8%a7%d9%84%d8%b4%d8%a7%d9%85%d9%84-%d8%a5%d9%84%d9%89-%d8%a7%d9%84%d8%aa%d8%ad%d8%b1%d9%8a%d9%83-%d8%b9%d8%a8%d8%b1-css-r692/" rel="">التحريك</a> غير المتزامن من <a href="https://academy.hsoub.com/design/user-experience/%d9%85%d8%af%d8%ae%d9%84-%d8%a5%d9%84%d9%89-%d8%aa%d8%ac%d8%b1%d8%a8%d8%a9-%d8%a7%d9%84%d9%85%d8%b3%d8%aa%d8%ae%d8%af%d9%85-user-experience-r149/" rel="">تجربة الاستخدام</a> من خلال السماح بإضفاء هويةٍ للتطبيق مع التجاوب السريع مع تفاعلات المستخدم بنفس الوقت؛ كما يوفر أيضًا تباين التفاعل مما يجعل الواجهة أكثر جاذبيةً.
</p>

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

<p>
	مثلًا: في حال نقر المستخدم على شريط تنقُّل جانبي، لا بُدّ من عرضه مباشرًة وخلال فترة حوالي 100 ميلي ثانية؛ بينما يُمكن التباطؤ في عملية <a href="https://academy.hsoub.com/programming/css/%d9%85%d8%a8%d8%a7%d8%af%d8%a6-%d8%a7%d9%84%d8%aa%d8%ad%d8%b1%d9%8a%d9%83-%d9%81%d9%8a-%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-r106/" rel="">التحريك</a> خارجًا لحوالي 300 ميلي ثانية عند إخفاء المستخدم لقائمة.
</p>

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

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

<ul>
<li>
		يكون للتحريك في <a href="https://academy.hsoub.com/files/11-%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%AA%D8%AC%D8%B1%D8%A8%D8%A9-%D8%A7%D9%84%D9%85%D8%B3%D8%AA%D8%AE%D8%AF%D9%85-user-experience-ux/" rel="">واجهة المستخدم</a> والذي يُنشّط عند تفاعل المستخدم، مثل التنقل بين واجهات العرض أو إظهار عنصر ما، مقدمةً سريعة (مدة قصيرة)، وخاتمةً بطيئة (مدة أطول).
	</li>
	<li>
		يكون للتحريك في واجهة المستخدم والذي يُنشّط من خلال شيفرة المطور البرمجية، مثل إظهار الأخطاء أو واجهات العرض المنبثقة المشروطة، مقدمةً أبطأ (مدة أطول)، وخاتمةً سريعة (مدة قصيرة).
	</li>
</ul>
<p>
	ترجمة -وبتصرف- للمقالات التالية:
</p>

<ul>
<li>
		<a href="https://developers.google.com/web/fundamentals/design-and-ux/animations/animating-between-views" rel="external nofollow">Animating Between Views</a> للمؤلف: Paul Lewis.
	</li>
	<li>
		<a href="https://developers.google.com/web/fundamentals/design-and-ux/animations/animating-modal-views" rel="external nofollow">Animating Modal Views</a> للمؤلف: Paul Lewis.
	</li>
	<li>
		<a href="https://developers.google.com/web/fundamentals/design-and-ux/animations/asymmetric-animation-timing" rel="external nofollow">Asymmetric animation timing</a> للمؤلف: Paul Lewis.
	</li>
</ul>
<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/programming/css/%D8%A7%D9%84%D8%AA%D8%AD%D9%83%D9%85-%D9%81%D9%8A-%D8%AA%D8%B3%D8%A7%D8%B1%D8%B9-%D9%88%D8%AA%D8%A8%D8%A7%D8%B7%D8%A4-%D8%A7%D9%84%D8%AD%D8%B1%D9%83%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B7%D8%A8%D9%82%D8%A9-%D8%B9%D9%84%D9%89-%D8%B9%D9%86%D8%A7%D8%B5%D8%B1-%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-r1491/" rel="">التحكم في تسارع وتباطؤ الحركات المطبقة على عناصر صفحات الويب</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/css/%D8%A7%D9%84%D9%85%D8%B1%D8%AC%D8%B9-%D8%A7%D9%84%D8%B4%D8%A7%D9%85%D9%84-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D8%AA%D8%AD%D8%B1%D9%8A%D9%83-%D8%B9%D8%A8%D8%B1-css-r692/" rel="">المرجع الشامل إلى التحريك عبر CSS</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/css/%D8%A3%D9%81%D8%B6%D9%84-25-%D9%85%D9%83%D8%AA%D8%A8%D8%A9-%D8%AA%D8%AD%D8%B1%D9%8A%D9%83-%D9%81%D9%8A-css-r657/" rel="">أفضل 25 مكتبة تحريك في CSS</a>
	</li>
	<li>
		النسخة العربية الكاملة من كتاب: <a href="https://academy.hsoub.com/files/14-%D8%A7%D9%84%D8%AA%D8%AD%D8%B1%D9%8A%D9%83-%D8%B9%D8%A8%D8%B1-css/" rel="">التحريك عبر CSS</a> 
	</li>
</ul>
]]></description><guid isPermaLink="false">1492</guid><pubDate>Sun, 13 Mar 2022 16:07:00 +0000</pubDate></item><item><title>&#x627;&#x644;&#x62A;&#x62D;&#x643;&#x645; &#x641;&#x64A; &#x62A;&#x633;&#x627;&#x631;&#x639; &#x648;&#x62A;&#x628;&#x627;&#x637;&#x624; &#x627;&#x644;&#x62D;&#x631;&#x643;&#x627;&#x62A; &#x627;&#x644;&#x645;&#x637;&#x628;&#x642;&#x629; &#x639;&#x644;&#x649; &#x639;&#x646;&#x627;&#x635;&#x631; &#x635;&#x641;&#x62D;&#x627;&#x62A; &#x627;&#x644;&#x648;&#x64A;&#x628;</title><link>https://academy.hsoub.com/programming/css/%D8%A7%D9%84%D8%AA%D8%AD%D9%83%D9%85-%D9%81%D9%8A-%D8%AA%D8%B3%D8%A7%D8%B1%D8%B9-%D9%88%D8%AA%D8%A8%D8%A7%D8%B7%D8%A4-%D8%A7%D9%84%D8%AD%D8%B1%D9%83%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%B7%D8%A8%D9%82%D8%A9-%D8%B9%D9%84%D9%89-%D8%B9%D9%86%D8%A7%D8%B5%D8%B1-%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D9%88%D9%8A%D8%A8-r1491/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2022_02/6210c6c685608_----------.png.4463e2125abdff5992689ffb7eb2105e.png" /></p>

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

<ul>
<li>
		يؤدي التخفيف إلى جعل التحريك يبدو طبيعيًا.
	</li>
	<li>
		يُفضّل استخدام تخفيف السرعة نهاية الحركة ease-out مع عناصر الواجهة.
	</li>
	<li>
		يجب تجنُّب استخدام تخفيف السرعة بداية الحركة ease-in وتخفيف السرعة بداية الحركة ونهايتها ease-in-out ما لم يكن التحريك قصيرًا، لأنهما تتسببان بنوعٍ من الحركة الخمولة.
	</li>
</ul>
<h2>
	الكلمات المفتاحية في التخفيف
</h2>

<p>
	تسمح كلٌ من الانتقالات <a href="https://academy.hsoub.com/programming/css/%d8%a7%d9%84%d9%85%d8%b1%d8%ac%d8%b9-%d8%a7%d9%84%d8%b4%d8%a7%d9%85%d9%84-%d8%a5%d9%84%d9%89-%d8%a7%d9%84%d8%aa%d8%ad%d8%b1%d9%8a%d9%83-%d8%b9%d8%a8%d8%b1-css-r692/" rel="">والتحريك في CSS</a> باختيار نوع التخفيف المطلوب <a href="https://academy.hsoub.com/programming/general/%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A7%D8%AA-%D8%A7%D9%84%D8%AA%D8%AD%D8%B1%D9%8A%D9%83-%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D9%88%D9%8A%D8%A8-%D8%AA%D9%81%D8%A7%D8%B9%D9%84%D9%8A%D8%A9-%D9%85%D8%AA%D8%AC%D8%A7%D9%88%D8%A8%D8%A9-r1481/" rel="">للتحريك</a> (راجع فقرة اختيار التخطيط الصحيح). يُمكن استخدام الكلمات المفتاحية التي تؤثر على التخفيف (أو التوقيت <code>timing</code> كما يُطلق عليه أحيانًا) للحركة المعنية؛ كما يُمكن أيضًا تخصيص التخفيف (راجع فقرة تخصيص التخفيف)، مما يمنح الحرية الواسعة لإعطاء هويةٍ مميزة للتطبيق.
</p>

<p>
	أهم الكلمات المفتاحية المُمكن استخدامها في <a href="https://academy.hsoub.com/programming/css/%D9%85%D8%AF%D8%AE%D9%84-%D8%A5%D9%84%D9%89-%D8%A3%D9%88%D8%B1%D8%A7%D9%82-%D8%A7%D9%84%D8%A3%D9%86%D9%85%D8%A7%D8%B7-%D8%A7%D9%84%D9%85%D8%AA%D8%AA%D8%A7%D9%84%D9%8A%D8%A9-css-r246/" rel="">أنماط CSS</a>:
</p>

<ul>
<li>
		خطي <code>linear</code>.
	</li>
	<li>
		تخفيف السرعة بداية الحركة <code>ease-in</code>.
	</li>
	<li>
		تخفيف السرعة نهاية الحركة <code>ease-out</code>.
	</li>
	<li>
		تخفيف السرعة بداية الحركة ونهايتها <code>ease-in-out</code>.
	</li>
</ul>
<p>
	يُمكن الوصول إلى <a href="https://www.w3.org/TR/css-transitions-1/#transition-timing-function-property" rel="external nofollow">المصدر</a> في W3C.
</p>

<p>
	يُطلق مصطلح "الدخول ببطء slow in" في الرسوم المتحركة للدلالة على الحركة التي تبدأ ببطء ومن ثم تتسارع؛ كما يُطلق مصطلح "الخروج ببطء slow out" على الحركة التي تبدأ مُسرعًة ومن ثم تتباطأ. يُستخدم بصورةٍ مماثلة كلٌ من المصطلحين "تخفيف السرعة بداية الحركة ease in" و"تخفيف السرعة نهاية الحركة ease out" في التحريك على الويب. يُمكن الجمع أحيانًا بين نوعي التحريك السابقين وصولًا إلى "تخفيف السرعة بداية الحركة ونهايتها ease-in-out". يؤدي استخدام التخفيف الحصول على حركة أقل حدًّة وأكثر وضوحًا.
</p>

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

<h3>
	التحريك الخطي
</h3>

<p>
	يُوصف التحريك الذي لا يستخدم أي تخفيفٍ بالتحريك <strong>الخطي linear</strong>. يوضّح الرسم البياني التالي مراحل الانتقال الخطي؛ حيث تزداد القيمة زياداتٍ متساوية عبر الزمن. تبدو الحركة الخطية آليةً وغير طبيعية مما يُنفّر المستخدمين، وبالتالي يجب تجنُّب التحريك الخطي.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="92307" href="https://academy.hsoub.com/uploads/monthly_2022_02/001linear.png.391a6717ef02d0beb16874ce681e87b7.png" rel=""><img alt="001linear.png" class="ipsImage ipsImage_thumbnailed" data-fileid="92307" data-unique="l3h1alvzt" src="https://academy.hsoub.com/uploads/monthly_2022_02/001linear.png.391a6717ef02d0beb16874ce681e87b7.png" style="width: 400px; height: auto;"></a>
</p>

<p>
	يُمكن استخدام التحريك الخطي دومًا سواءٌ عند استخدام أنماط CSS أو عند استخدام JavaScript.
</p>

<p>
	يُمكن معاينة <a href="https://googlesamples.github.io/web-fundamentals/fundamentals/design-and-ux/animations/box-move-linear.html" rel="external nofollow">تحريك خطي</a>.
</p>

<p>
	للحصول على التأثير السابق باستخدام أنماط CSS:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3345_18" style="">
<span class="pln">transition</span><span class="pun">:</span><span class="pln"> transform </span><span class="lit">500ms</span><span class="pln"> linear</span><span class="pun">;</span></pre>

<h3>
	تخفيف السرعة نهاية الحركة
</h3>

<p>
	يؤدي تخفيف السرعة نهاية الحركة ease-out إلى بدءٍ أسرع للحركة مما هو في التحريك الخطي، وتَباطُؤ في النهاية، كما هو موضحٌ في الرسم البياني التالي.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="92308" href="https://academy.hsoub.com/uploads/monthly_2022_02/002ease-out.png.ad48a886f16e4904faeca28a6f9a7c87.png" rel=""><img alt="002ease-out.png" class="ipsImage ipsImage_thumbnailed" data-fileid="92308" data-unique="he8gloo4p" src="https://academy.hsoub.com/uploads/monthly_2022_02/002ease-out.png.ad48a886f16e4904faeca28a6f9a7c87.png" style="width: 400px; height: auto;"></a>
</p>

<p>
	يُعدّ تخفيف السرعة نهاية الحركة ease-out الخيار الأفضل لواجهات المستخدم؛ حيث تُعطي البداية السريعة الانطباع بالتجاوب مع توفير التباطؤ الطبيعي في النهاية.
</p>

<p>
	يُمكن معاينة <a href="https://googlesamples.github.io/web-fundamentals/fundamentals/design-and-ux/animations/box-move-ease-out.html" rel="external nofollow">تخفيف السرعة نهاية الحركة</a>.
</p>

<p>
	يُمكن تحقيق تخفيف السرعة نهاية الحركة بعدة طرق؛ ومن أسهلها استخدام الكلمة المفتاحية <code>ease-out</code> في <a href="https://wiki.hsoub.com/CSS" rel="external">CSS</a>:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3345_16" style="">
<span class="pln">transition</span><span class="pun">:</span><span class="pln"> transform </span><span class="lit">500ms</span><span class="pln"> ease</span><span class="pun">-</span><span class="kwd">out</span><span class="pun">;</span></pre>

<h3>
	تخفيف السرعة بداية الحركة Ease-in
</h3>

<p>
	يبدأ التحريك من هذا النوع ببطء وينتهي بسرعة خلافًا للتحريك من النوع تخفيف السرعة نهاية الحركة Ease-out، كما هو موضح في الرسم البياني التالي.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="92309" href="https://academy.hsoub.com/uploads/monthly_2022_02/003ease-in.png.9e963c92398d5046d5de7b36278d0441.png" rel=""><img alt="003ease-in.png" class="ipsImage ipsImage_thumbnailed" data-fileid="92309" data-unique="p456oquzp" src="https://academy.hsoub.com/uploads/monthly_2022_02/003ease-in.png.9e963c92398d5046d5de7b36278d0441.png" style="width: 400px; height: auto;"></a>
</p>

<p>
	يشبه هذا التحريك تسارع سقوط حجرٍ ثقيل؛ حيث يبدأ ببطء ويصطدم بالأرض بسرعةٍ كبيرة.
</p>

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

<p>
	يُمكن معاينة <a href="https://googlesamples.github.io/web-fundamentals/fundamentals/design-and-ux/animations/box-move-ease-in.html" rel="external nofollow">تخفيف السرعة بداية الحركة</a>.
</p>

<p>
	يُمكن تحقيق تخفيف السرعة بداية الحركة باستخدام الكلمة المفتاحية <code>ease-in</code> في <a href="https://academy.hsoub.com/programming/css/%d8%aa%d8%b9%d8%b1%d9%91%d9%81-%d8%b9%d9%84%d9%89-%d8%a3%d8%b3%d8%a7%d8%b3%d9%8a%d8%a7%d8%aa-css-r70/" rel="">CSS</a>:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3345_21" style="">
<span class="pln">transition</span><span class="pun">:</span><span class="pln"> transform </span><span class="lit">500ms</span><span class="pln"> ease</span><span class="pun">-</span><span class="kwd">in</span><span class="pun">;</span></pre>

<h3>
	تخفيف السرعة بداية الحركة ونهايتها Ease-in-out
</h3>

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

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="92310" href="https://academy.hsoub.com/uploads/monthly_2022_02/004ease-in-out.png.fc8e22e15e760cb385833d509076e7dc.png" rel=""><img alt="004ease-in-out.png" class="ipsImage ipsImage_thumbnailed" data-fileid="92310" data-unique="82re78tut" src="https://academy.hsoub.com/uploads/monthly_2022_02/004ease-in-out.png.fc8e22e15e760cb385833d509076e7dc.png" style="width: 400px; height: auto;"></a>
</p>

<p>
	يُمكن معاينة <a href="https://googlesamples.github.io/web-fundamentals/fundamentals/design-and-ux/animations/box-move-ease-in-out.html" rel="external nofollow">تخفيف السرعة بداية الحركة ونهايتها</a>.
</p>

<p>
	يُمكن الحصول على تحريك من النوع "تخفيف السرعة بداية الحركة ونهايتها" باستخدام الكلمة المفتاحية <code>ease-in-out</code>:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3345_24" style="">
<span class="pln">transition</span><span class="pun">:</span><span class="pln"> transform </span><span class="lit">500ms</span><span class="pln"> ease</span><span class="pun">-</span><span class="kwd">in</span><span class="pun">-</span><span class="kwd">out</span><span class="pun">;</span></pre>

<h2>
	التخفيف المخصص
</h2>

<p>
	يُمكن في بعض الأحيان التخلّي عن استخدام الكلمات المفتاحية في CSS، أو واجهة برمجة التطبيقات Web Animations، أو إطار عمل JavaScript، وتعريف منحنياتٍ أو معادلاتٍ مخصصة عوضًا عن ذلك؛ مما يوفر تحكُّمًا أكبر في التحريك المطلوب.
</p>

<ul>
<li>
		يسمح التخفيف المُخصّص بإضفاء هويةٍ شخصيةٍ مُميزةٍ للمشروع.
	</li>
	<li>
		يُمكّن التخفيف المُخصّص من إنشاء <a href="https://academy.hsoub.com/programming/javascript/%D9%85%D9%86%D8%AD%D9%86%D9%89-%D8%A8%D9%8A%D8%B2%D9%8A%D9%87-%D9%88%D8%A3%D9%87%D9%85%D9%8A%D8%AA%D9%87-%D9%81%D9%8A-%D8%A7%D9%84%D8%B1%D8%B3%D9%88%D9%85%D9%8A%D8%A7%D8%AA-%D9%88%D8%B5%D9%86%D8%A7%D8%B9%D8%A9-%D8%A7%D9%84%D8%AD%D8%B1%D9%83%D8%A7%D8%AA-%D9%81%D9%8A-%D8%AC%D8%A7%D9%81%D8%A7%D8%B3%D9%83%D8%B1%D8%A8%D8%AA-r1339/" rel="">منحنيات بيزيه</a> Bézier المكعبة، والتي تُشبه منحنيات التحريك الافتراضية (تخفيف السرعة بداية الحركة، تخفيف السرعة نهاية الحركة، …) مع التركيز على جوانبٍ مختلفة.
	</li>
	<li>
		تُستخدم <a href="https://academy.hsoub.com/programming/javascript/%D9%85%D9%82%D8%AF%D9%85%D8%A9-%D8%A5%D9%84%D9%89-%D9%84%D8%BA%D8%A9-javascript-r664/" rel="">JavaScript</a> عند الحاجة لتوفير تحكمٍ أكبر في توقيت التحريك وسلوكه، مثل التحريك المرن أو المُرتدّ bounce .
	</li>
</ul>
<p>
	يُمكن تعريف منحنيات بيزيه المكعبة في أنماط CSS لتحديد التوقيت؛ حيث توافق الكلمات المفتاحية <code>ease</code> و <code>ease-in</code> و <code>ease-out</code> و <code>linear</code> في الحقيقة منحنيات بيزيه مُعرّفةً مسبقًا. يُمكن الرجوع للتفاصيل في <a href="https://www.w3.org/TR/css3-transitions/" rel="external nofollow">CSS transitions specification</a> و <a href="https://w3c.github.io/web-animations/#scaling-using-a-cubic-bezier-curve" rel="external nofollow">Web Animations specification</a>.
</p>

<p>
	تأخذ منحنيات بيزيه أربع قيم (أو زوجين من الأرقام)؛ حيث يُحدّد كل زوجٍ إحداثيات X و Y لنقاط التحكم في منحني بيزيه المكعب. يكون لنقطة البداية لمنحني بيزيه الإحداثيات (0 ، 0)، والإحداثيات (1 ، 1) لنقطة النهاية، ويُمكن ضبط قيم X و Y لنقطتي التحكم. يجب أن تكون قيم X لنقطتي التحكم بين 0 و 1، بينما يُمكن لقيم Y تجاوز المجال [0,1]. لا تُحدّد المواصفات مقدار التجاوز المسموح بوضوح.
</p>

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

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="92311" href="https://academy.hsoub.com/uploads/monthly_2022_02/005custom.png.0033d10b6b4c89c276cfa73766fc8de7.png" rel=""><img alt="005custom.png" class="ipsImage ipsImage_thumbnailed" data-fileid="92311" data-unique="0d7xfjk6a" src="https://academy.hsoub.com/uploads/monthly_2022_02/005custom.png.0033d10b6b4c89c276cfa73766fc8de7.png" style="width: 600px; height: auto;"></a>
</p>

<p style="text-align: center;">
	يُمكن معاينة <a href="https://googlesamples.github.io/web-fundamentals/fundamentals/design-and-ux/animations/box-move-custom-curve.html" rel="external nofollow">التحريك مع تخفيف مخصص</a>.
</p>

<p>
	تكون أنماط CSS للتخفيف المخصص:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3345_29" style="">
<span class="pln">transition</span><span class="pun">:</span><span class="pln"> transform </span><span class="lit">500ms</span><span class="pln"> cubic</span><span class="pun">-</span><span class="pln">bezier</span><span class="pun">(</span><span class="lit">0.465</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.183</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.153</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.946</span><span class="pun">);</span></pre>

<p>
	يُحدّد الرقمان الأولان إحداثيات X و Y لنقطة التحكم الأولى؛ بينما يحدد الرقمان الثانيان إحداثيات X و Y لنقطة التحكم الثانية.
</p>

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

<p>
	يُمكن تجريب <a href="https://googlesamples.github.io/web-fundamentals/fundamentals/design-and-ux/animations/curve-playground.html" rel="external nofollow">أداة منحني التحريك</a> ومعاينة تأثيرات المنحني على طبيعة التحريك.
</p>

<h3>
	استخدم أطر عمل JavaScript لتوفير المزيد من التحكم
</h3>

<p>
	تظهر الحاجة أحيانًا إلى تحكمٍ أكبر مما يوفِّره منحني بيزيه المكعب، حيث يجب مثلًا استخدام أطر عمل JavaScript في حال ضرورة توفير الشعور بالارتداد المرن؛ لأنه لا يُمكن توفير ذلك باستخدام أنماط CSS أو Web Animations.
</p>

<h4>
	إطار العمل TweenMax
</h4>

<p>
	يُعدّ إطار العمل <a href="https://github.com/greensock/GreenSock-JS/tree/master/src/minified" rel="external nofollow">GreenSock’s TweenMax</a> (أو الإطار TweenLite في حال الرغبة بإبقاء الشيفرة خفيفة) من الأطر القوية التي توفر قدرًا كبيرًا من التحكم باستخدام مكتبة JavaScript صغيرة؛ علمًا أن هذه المكتبة تحتوي شيفرة قاعدية ناضجة.
</p>

<p>
	يُمكن معاينة <a href="https://googlesamples.github.io/web-fundamentals/fundamentals/design-and-ux/animations/box-move-elastic.html" rel="external nofollow">تخفيف تحريك مرن</a>.
</p>

<p>
	لاستخدام TweenMax، يجب تضمين الشيفرة التالية في الصفحة:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_3345_31" style="">
<span class="pun">&lt;</span><span class="pln">script src</span><span class="pun">=</span><span class="str">"https://cdnjs.cloudflare.com/ajax/libs/gsap/latest/TweenMax.min.js"</span><span class="pun">&gt;&lt;/</span><span class="pln">script</span><span class="pun">&gt;</span></pre>

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

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3345_33" style="">
<span class="kwd">var</span><span class="pln"> box </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">'my-box'</span><span class="pun">);</span><span class="pln">
</span><span class="kwd">var</span><span class="pln"> animationDurationInSeconds </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="typ">TweenMax</span><span class="pun">.</span><span class="pln">to</span><span class="pun">(</span><span class="pln">box</span><span class="pun">,</span><span class="pln"> animationDurationInSeconds</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  x</span><span class="pun">:</span><span class="pln"> </span><span class="str">'100%'</span><span class="pun">,</span><span class="pln">
  ease</span><span class="pun">:</span><span class="pln"> </span><span class="str">'Elastic.easeOut'</span><span class="pln">
</span><span class="pun">});</span></pre>

<p>
	تُسلِّط <a href="https://greensock.com/docs/#/HTML5/GSAP/TweenMax/" rel="external nofollow">وثائق TweenMax</a> الضوء على جميع الخيارات الممكنة.
</p>

<h2>
	اختيار التخفيف الصحيح
</h2>

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

<ul>
<li>
		يُفضّل استخدام "تخفيف السرعة نهاية الحركة" لتحريك عناصر الواجهة، ويُعدّ Quintic من أكثر الأنواع جاذبيةً وأناقة وإن كان سريعًا.
	</li>
	<li>
		يجب التأكُّد من ضبط مدة التحريك؛ حيث يُمكن أن تكون مدة 200 إلى 500 ميلي ثانية مناسبةً لتخفيف السرعة بداية الحركة ونهايتها؛ بينما يستلزم التخفيف المرن والمُرتدّ مدًةً أطول بين 800 إلى 1200 ميلي ثانية.
	</li>
</ul>
<p>
	يُعدّ "تخفيف السرعة نهاية الحركة" الخيار الصحيح (يجب وضعه الخيار الإفتراضي) عمومًا، ويتميز بسرعة البدء، مما يُعطي الشعور بتجاوب التطبيق، مع تباطؤٍ لطيف في النهاية.
</p>

<p>
	توجد مجموعةٌ من المعادلات المعروفة المستخدمة لتنفيذ التحريك مع "تخفيف السرعة نهاية الحركة" والمختلفة عن تلك المحددة بالكلمة المفتاحية <code>ease-out</code> في CSS والتي تتراوح في شدتها. يُمكن استخدام <a href="http://easings.net/#easeOutQuint" rel="external nofollow">Quintic ease-out</a> للحصول على تأثير "تخفيف السرعة نهاية الحركة".
</p>

<p>
	يُمكن معاينة تحريك <a href="https://googlesamples.github.io/web-fundamentals/fundamentals/design-and-ux/animations/box-move-quintic-ease-out.html" rel="external nofollow">تخفيف السرعة نهاية الحركة Quintic</a>.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="92312" href="https://academy.hsoub.com/uploads/monthly_2022_02/006quintic-ease-out-markers.png.71d5d9cbe8e53f1ee15f711cea9fdac8.png" rel=""><img alt="006quintic-ease-out-markers.png" class="ipsImage ipsImage_thumbnailed" data-fileid="92312" data-unique="p0pgp3scv" src="https://academy.hsoub.com/uploads/monthly_2022_02/006quintic-ease-out-markers.png.71d5d9cbe8e53f1ee15f711cea9fdac8.png" style="width: 400px; height: auto;"></a>
</p>

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

<p>
	يجب التجريب واللعب مع طرق التخفيف المختلفة للحكم على الطريقة الأنسب لهوية المشروع. يُمكن الرجوع إلى <a href="http://easings.net/" rel="external nofollow">easings.net</a> لمزيدٍ من التفاصيل.
</p>

<h3>
	اختيار المدة المناسبة للحركة
</h3>

<p>
	تُعدّ مسألة اختيار المدّة الصحيحة للحركة من أهم المسائل؛ حيث يُعطي التحريك قصير الأمد شعورًا بالعدوانية والحدّية؛ بينما يصبح التحريك طويل الأمد معرقلًا ومزعجًا.
</p>

<ul>
<li>
		التخفيف الخارج Ease-outs: حوالي 200 إلى 500 ميلي ثانية، حيث تمنح هذه المدّة للعين فرصًة لرؤية التحريك دون أي معوقات.
	</li>
	<li>
		التخفيف الداخل Ease-ins: حوالي 200 إلى 500 ميلي ثانية. يجب الانتباه إلى مسألة السقوط السريع في النهاية مما لا يسمح لتعديلات المدّة بتنعيم الحركة.
	</li>
	<li>
		تأثيرات الارتداد أو المرونة: حوالي 800 إلى 1200 مللي ثانية. يلزم إتاحة الوقت الكافي لاستقرار التأثير المرن أو المرتد. بدون هذا الوقت الإضافي، سيكون الجزء المرتد المرن من التحريك عدوانيًا وغير مريح للعين.
	</li>
</ul>
<p>
	ما عرضناه هو مجرد إرشادات، لذلك يجب تجريب طرق التخفيف الممكنة واختيار الأنسب منها للمشروع.
</p>

<p>
	ترجمة -وبتصرف- للمقالات التالية:
</p>

<ul>
<li>
		<a href="https://developers.google.com/web/fundamentals/design-and-ux/animations/the-basics-of-easing" rel="external nofollow">The Basics of Easing</a> للمؤلف: Paul Lewis.
	</li>
	<li>
		<a href="https://developers.google.com/web/fundamentals/design-and-ux/animations/custom-easing" rel="external nofollow">Custom Easing</a> للمؤلفين: Paul Lewis و Sam Thorogood.
	</li>
	<li>
		<a href="https://developers.google.com/web/fundamentals/design-and-ux/animations/choosing-the-right-easing#pick_the_right_animation_duration" rel="external nofollow">Choosing the Right Easing</a> للمؤلفين: Paul Lewis و Perf Advocate.
	</li>
</ul>
<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/programming/css/%D8%A7%D9%84%D9%85%D8%B1%D8%AC%D8%B9-%D8%A7%D9%84%D8%B4%D8%A7%D9%85%D9%84-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D8%AA%D8%AD%D8%B1%D9%8A%D9%83-%D8%B9%D8%A8%D8%B1-css-r692/" rel="">المرجع الشامل إلى التحريك عبر CSS</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/css/%D8%A3%D9%81%D8%B6%D9%84-25-%D9%85%D9%83%D8%AA%D8%A8%D8%A9-%D8%AA%D8%AD%D8%B1%D9%8A%D9%83-%D9%81%D9%8A-css-r657/" rel="">أفضل 25 مكتبة تحريك في CSS</a>
	</li>
	<li>
		النسخة العربية الكاملة من كتاب: <a href="https://academy.hsoub.com/files/14-%D8%A7%D9%84%D8%AA%D8%AD%D8%B1%D9%8A%D9%83-%D8%B9%D8%A8%D8%B1-css/" rel="">التحريك عبر CSS</a> 
	</li>
</ul>
]]></description><guid isPermaLink="false">1491</guid><pubDate>Fri, 25 Feb 2022 09:32:57 +0000</pubDate></item><item><title>&#x625;&#x646;&#x634;&#x627;&#x621; &#x631;&#x633;&#x648;&#x645; &#x645;&#x62A;&#x62D;&#x631;&#x643;&#x629; &#x628;&#x627;&#x633;&#x62A;&#x62E;&#x62F;&#x627;&#x645; CSS</title><link>https://academy.hsoub.com/programming/css/%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D8%B1%D8%B3%D9%88%D9%85-%D9%85%D8%AA%D8%AD%D8%B1%D9%83%D8%A9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-css-r1340/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2021_10/615ff0c233d67_----CSS.png.ce4baf66334dc8e9913d437dd288398f.png" /></p>

<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> في إنشاء رسوم متحركة بسيطة، دون الحاجة إلى شيفرة <a href="https://wiki.hsoub.com/JavaScript" rel="external">JavaScript </a>إطلاقًا، لكن يمكننا بالطبع استخدام JavaScript للتحكم <a href="https://academy.hsoub.com/files/14-%D8%A7%D9%84%D8%AA%D8%AD%D8%B1%D9%8A%D9%83-%D8%B9%D8%A8%D8%B1-css/" rel="">برسوم CSS المتحركة</a> وجعلها أفضل بكتابة القليل من الشيفرة.
</p>

<h2>
	الحركة الانتقالية في CSS
</h2>

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

<p>
	تُحرّك<a href="https://academy.hsoub.com/programming/css/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AD%D9%88%D9%8A%D9%84-%D8%B4%D9%8A%D9%81%D8%B1%D8%A9-css-%D8%A5%D9%84%D9%89-%D8%AA%D9%86%D8%B3%D9%8A%D9%82%D8%A7%D8%AA-%D9%85%D8%B1%D8%A6%D9%8A%D8%A9-r1269/" rel=""> شيفرة CSS</a> التغييرات في الخاصية <code>background-color</code> لمدة ثلاث ثوان:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8210_7" style="">
<span class="pun">.</span><span class="pln">animated </span><span class="pun">{</span><span class="pln">
  transition</span><span class="pun">-</span><span class="kwd">property</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">
  transition</span><span class="pun">-</span><span class="pln">duration</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3s</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	فلو كان لأي عنصر الصنف <a href="https://wiki.hsoub.com/CSS" rel="external">CSS </a>الذي سميناه <code>animated</code>، فستظهر أي تغيرات على الخاصية <code>background-color</code> في هذا العنصر في حركة لمدة 3 ثوان.
</p>

<p>
	انقر على الزر الذي ستُظهره الشيفرة التالية لتحريك الخلفية:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8210_9" style="">
<span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"color"</span><span class="tag">&gt;</span><span class="pln">Click me</span><span class="tag">&lt;/button&gt;</span><span class="pln">

</span><span class="tag">&lt;style&gt;</span><span class="pln">
  </span><span class="com">#color {</span><span class="pln">
    transition</span><span class="pun">-</span><span class="kwd">property</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">
    transition</span><span class="pun">-</span><span class="pln">duration</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3s</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span><span class="pln">

</span><span class="tag">&lt;script&gt;</span><span class="pln">
  color</span><span class="pun">.</span><span class="pln">onclick </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">this</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">backgroundColor </span><span class="pun">=</span><span class="pln"> </span><span class="str">'red'</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">};</span><span class="pln">
</span><span class="tag">&lt;/script&gt;</span></pre>

<p>
	<iframe allowfullscreen="true" allowtransparency="true" data-ss1635004097="1" frameborder="no" height="140" loading="lazy" scrolling="no" src="https://codepen.io/Hsoub/embed/abypmYJ?default-tab=html%2Cresult" style="width: 100%;" title="JS-P3-03-Fetch-Download-progress-ex8">See the Pen JS-P3-03-Fetch-Download-progress-ex8 by Hsoub (@Hsoub) on CodePen.</iframe>
</p>

<p>
	توصف الحركة الانتقالية في CSS بأربعة خصائص، هي:
</p>

<ul>
<li>
		<code>transition-property</code>.
	</li>
	<li>
		<code>transition-duration</code>.
	</li>
	<li>
		<code>transition-timing-function</code>.
	</li>
	<li>
		<code>transition-delay</code>.
	</li>
</ul>
<p>
	سنشرح هذه الخصائص بعد قليل، لكن دعونا نلاحظ أنّ الخاصية <code>transition</code> ستسمح بالتصريح عن الخصائص الأربعة السابقة معًا وفق الترتيب التالي:<code>property duration timing-function delay</code>، بالإضافة إلى قدرتها على إظهار الحركة الانتقالية على عدة خصائص معًا.
</p>

<p>
	يُظهر النقر على الزر في الشيفرة التالية الحركة الانتقالية للخاصيتين <code>color</code> و<code>font-size</code>:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8210_11" style="">
<span class="tag">&lt;button</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"growing"</span><span class="tag">&gt;</span><span class="pln">Click me</span><span class="tag">&lt;/button&gt;</span><span class="pln">

</span><span class="tag">&lt;style&gt;</span><span class="pln">
</span><span class="com">#growing {</span><span class="pln">
  transition</span><span class="pun">:</span><span class="pln"> font</span><span class="pun">-</span><span class="pln">size </span><span class="lit">3s</span><span class="pun">,</span><span class="pln"> color </span><span class="lit">2s</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span><span class="pln">

</span><span class="tag">&lt;script&gt;</span><span class="pln">
growing</span><span class="pun">.</span><span class="pln">onclick </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">this</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">fontSize </span><span class="pun">=</span><span class="pln"> </span><span class="str">'36px'</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">this</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">color </span><span class="pun">=</span><span class="pln"> </span><span class="str">'red'</span><span class="pun">;</span><span class="pln">
</span><span class="pun">};</span><span class="pln">
</span><span class="tag">&lt;/script&gt;</span></pre>

<p>
	<iframe allowfullscreen="true" allowtransparency="true" data-ss1635004097="1" frameborder="no" height="147" loading="lazy" scrolling="no" src="https://codepen.io/Hsoub/embed/zYdNZRK?default-tab=html%2Cresult" style="width: 100%;" title="JS-P3-05-CSS-animations-ex2">See the Pen JS-P3-05-CSS-animations-ex2 by Hsoub (@Hsoub) on CodePen.</iframe>
</p>

<p>
	سنشرح الآن خصائص الحركة الانتقالية.
</p>

<h3>
	الخاصية transition-property
</h3>

<p>
	نكتب ضمن هذه الخاصية قائمةً بخصائص CSS التي نريد إظهار تغييراتها على شكل حركة انتقالية، مثل <code>left</code> و<code>margin-left</code> و<code>height</code> و<code>color</code> وغيرها، أو يمكن أن نختار <code>all</code> التي تعني تحريك كل الخصائص .
</p>

<p>
	توجد خصائص لا يمكن تحريكها، لكن <a data-ss1633679923="1" data-ss1635002134="1" data-ss1635003597="1" data-ss1635004097="1" href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties" rel="external nofollow">معظم الخصائص شائعة الاستعمال وقابلة للتحريك</a>.
</p>

<h3>
	الخاصية transition-duration
</h3>

<p>
	يمكن أن نحدد في هذه الخاصية المدة التي ستجري فيها الحركة الانتقالية، وينبغي أن يكون التوقيت <a data-ss1633679923="1" data-ss1635002134="1" data-ss1635003597="1" data-ss1635004097="1" href="http://www.w3.org/TR/css3-values/#time" rel="external nofollow">بتنسيق CSS</a> ومقدرًا بالثانية <code>s</code> أو بالميلي ثانية <code>ms</code>.
</p>

<h3>
	الخاصية transition-delay
</h3>

<p>
	نحدد في هذه الخاصية فترة الانتظار قبل عرض الحركة الانتقالية، فلو كانت قيمتها ثانيةً واحدةً وقيمة الخاصية <code>transition-duration</code> ثانيتن، فستُعرض الحركة الانتقالية بعد ثانية من تغيّر الخاصيّة، وستستمر لمدة ثانيتين، كما يمكن استخدام قيم سالبة أيضًا، وعندها ستبدأ الحركة مباشرةً، إلا أنّ نقطة البداية ستنسحب قليلًا، فلو كانت قيمة الخاصية <code>transition-delay</code> هي "-1" ثانية وقيمة الخاصية <code>transition-duration</code> هي "2" ثانية، فستبدأ الحركة من المنتصف، ولمدة ثانية واحدة.
</p>

<p>
	لاحظ تغير الأعداد من 0 إلى 9 في الرسم المتحرك التالي باستخدام الخاصية <code>translate</code> في <a href="https://wiki.hsoub.com/CSS" rel="external">CSS</a>:
</p>

<p>
	شيفرة الملف script.js:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_8210_13" style="">
<span class="pln">stripe</span><span class="pun">.</span><span class="pln">onclick </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  stripe</span><span class="pun">.</span><span class="pln">classList</span><span class="pun">.</span><span class="pln">add</span><span class="pun">(</span><span class="str">'animate'</span><span class="pun">);</span><span class="pln">
</span><span class="pun">};</span></pre>

<p>
	شيفرة الملف style.css:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8210_15" style="">
<span class="com">#digit {</span><span class="pln">
  width</span><span class="pun">:</span><span class="pln"> </span><span class="pun">.</span><span class="lit">5em</span><span class="pun">;</span><span class="pln">
  overflow</span><span class="pun">:</span><span class="pln"> hidden</span><span class="pun">;</span><span class="pln">
  font</span><span class="pun">:</span><span class="pln"> </span><span class="lit">32px</span><span class="pln"> monospace</span><span class="pun">;</span><span class="pln">
  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="com">#stripe {</span><span class="pln">
  display</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">inline</span><span class="pun">-</span><span class="pln">block
</span><span class="pun">}</span><span class="pln">

</span><span class="com">#stripe.animate {</span><span class="pln">
  transform</span><span class="pun">:</span><span class="pln"> translate</span><span class="pun">(-</span><span class="lit">90</span><span class="pun">%);</span><span class="pln">
  transition</span><span class="pun">-</span><span class="kwd">property</span><span class="pun">:</span><span class="pln"> transform</span><span class="pun">;</span><span class="pln">
  transition</span><span class="pun">-</span><span class="pln">duration</span><span class="pun">:</span><span class="pln"> </span><span class="lit">9s</span><span class="pun">;</span><span class="pln">
  transition</span><span class="pun">-</span><span class="pln">timing</span><span class="pun">-</span><span class="kwd">function</span><span class="pun">:</span><span class="pln"> linear</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	شيفرة الملف index.html:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8210_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="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;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">"style.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">

  Click below to animate:

  </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"digit"</span><span class="tag">&gt;&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"stripe"</span><span class="tag">&gt;</span><span class="pln">0123456789</span><span class="tag">&lt;/div&gt;&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">"script.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>

<p>
	<iframe __idm_frm__="711" class="code-tabs__result" data-ss1633679923="1" data-ss1635002134="1" data-ss1635003597="1" data-ss1635004097="1" src="https://javascript.info/article/css-animations/digits/" style="display: block;  height: 80px;"></iframe>
</p>

<p>
	تجري الحركة الانتقالية للخاصية <code>transform</code> بالشكل التالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8210_19" style="">
<span class="com">#stripe.animate {</span><span class="pln">
  transform</span><span class="pun">:</span><span class="pln"> translate</span><span class="pun">(-</span><span class="lit">90</span><span class="pun">%);</span><span class="pln">
  transition</span><span class="pun">-</span><span class="kwd">property</span><span class="pun">:</span><span class="pln"> transform</span><span class="pun">;</span><span class="pln">
  transition</span><span class="pun">-</span><span class="pln">duration</span><span class="pun">:</span><span class="pln"> </span><span class="lit">9s</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	تضيف شيفرة JavaScript السابقة الصنف <code>animate</code> إلى العنصر، وتبدأ الحركة عند تنفيذ الأمر:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_8210_21" style="">
<span class="pln">stripe</span><span class="pun">.</span><span class="pln">classList</span><span class="pun">.</span><span class="pln">add</span><span class="pun">(</span><span class="str">'animate'</span><span class="pun">);</span></pre>

<p>
	يمكن أن نبدأ التحريك انطلاقًا من نقطة ما من الحركة الانتقالية، أي من رقم محدد -وقد يكون متعلقًا بالثانية الحالية مثلًا- وباستخدام قيمة سالبة للخاصية <code>transition-delay</code>.
</p>

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

<ul>
<li>
		شيفرة الملف script.js:
	</li>
</ul>
<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_8210_23" style="">
<span class="pln">stripe</span><span class="pun">.</span><span class="pln">onclick </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  let sec </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Date</span><span class="pun">().</span><span class="pln">getSeconds</span><span class="pun">()</span><span class="pln"> </span><span class="pun">%</span><span class="pln"> </span><span class="lit">10</span><span class="pun">;</span><span class="pln">
  stripe</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">transitionDelay </span><span class="pun">=</span><span class="pln"> </span><span class="str">'-'</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> sec </span><span class="pun">+</span><span class="pln"> </span><span class="str">'s'</span><span class="pun">;</span><span class="pln">
  stripe</span><span class="pun">.</span><span class="pln">classList</span><span class="pun">.</span><span class="pln">add</span><span class="pun">(</span><span class="str">'animate'</span><span class="pun">);</span><span class="pln">
</span><span class="pun">};</span></pre>

<ul>
<li>
		شيفرة الملف style.css:
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8210_27" style="">
<span class="com">#digit {</span><span class="pln">
  width</span><span class="pun">:</span><span class="pln"> </span><span class="pun">.</span><span class="lit">5em</span><span class="pun">;</span><span class="pln">
  overflow</span><span class="pun">:</span><span class="pln"> hidden</span><span class="pun">;</span><span class="pln">
  font</span><span class="pun">:</span><span class="pln"> </span><span class="lit">32px</span><span class="pln"> monospace</span><span class="pun">;</span><span class="pln">
  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="com">#stripe {</span><span class="pln">
  display</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">inline</span><span class="pun">-</span><span class="pln">block
</span><span class="pun">}</span><span class="pln">

</span><span class="com">#stripe.animate {</span><span class="pln">
  transform</span><span class="pun">:</span><span class="pln"> translate</span><span class="pun">(-</span><span class="lit">90</span><span class="pun">%);</span><span class="pln">
  transition</span><span class="pun">-</span><span class="kwd">property</span><span class="pun">:</span><span class="pln"> transform</span><span class="pun">;</span><span class="pln">
  transition</span><span class="pun">-</span><span class="pln">duration</span><span class="pun">:</span><span class="pln"> </span><span class="lit">9s</span><span class="pun">;</span><span class="pln">
  transition</span><span class="pun">-</span><span class="pln">timing</span><span class="pun">-</span><span class="kwd">function</span><span class="pun">:</span><span class="pln"> linear</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<ul>
<li>
		شيفرة الملف index.html:
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8210_29" 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;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">"style.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">

  Click below to animate:
  </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"digit"</span><span class="tag">&gt;&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"stripe"</span><span class="tag">&gt;</span><span class="pln">0123456789</span><span class="tag">&lt;/div&gt;&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">"script.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>

<p>
	<iframe __idm_frm__="712" class="code-tabs__result" data-ss1633679923="1" data-ss1635002134="1" data-ss1635003597="1" data-ss1635004097="1" src="https://javascript.info/article/css-animations/digits-negative-delay/" style="display: block; height: 80px;"></iframe>يمكن تنفيذ ذلك باستخدام JavaScript لكن بإضافة سطر آخر من الشيفرة:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_8210_31" style="">
<span class="pln">stripe</span><span class="pun">.</span><span class="pln">onclick </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  let sec </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Date</span><span class="pun">().</span><span class="pln">getSeconds</span><span class="pun">()</span><span class="pln"> </span><span class="pun">%</span><span class="pln"> </span><span class="lit">10</span><span class="pun">;</span><span class="pln">
  </span><span class="com">// مثلًا تعني القيمة  -3 هنا أن الحركة ستبدأ من الثانية الثالثة </span><span class="pln">
  stripe</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">transitionDelay </span><span class="pun">=</span><span class="pln"> </span><span class="str">'-'</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> sec </span><span class="pun">+</span><span class="pln"> </span><span class="str">'s'</span><span class="pun">;</span><span class="pln">
  stripe</span><span class="pun">.</span><span class="pln">classList</span><span class="pun">.</span><span class="pln">add</span><span class="pun">(</span><span class="str">'animate'</span><span class="pun">);</span><span class="pln">
</span><span class="pun">};</span></pre>

<h3>
	الخاصية transition-timing-function
</h3>

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

<h4>
	منحني بيزيه
</h4>

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

<ul>
<li>
		إحداثيات النقطة الأولى (0,0).
	</li>
	<li>
		إحداثيات النقطة الأخيرة (1,1).
	</li>
	<li>
		ينبغي أن يكون الإحداثي <code>x</code> لنقطتي المنتصف بين 0 و1، بينما يمكن أن نختار أي قيمة للإحداثي <code>y</code>.
	</li>
</ul>
<p>
	إن صيغة منحني بيزيه هي: <code>(cubic-bezier(x2, y2, x3, y3</code>، إذًا علينا فقط أن نحدد النقطتين الحاكمتين الثانية والثالثة، لأنّ الأولى والأخيرة ثابتتان.
</p>

<p>
	تحدد دالة التوقيت سرعة تحريك عملية تشكيل المنحني:
</p>

<ul>
<li>
		يمثل المحور <code>x</code> محور الزمن الذي يبدأ بالنقطة "0"، وينتهي بالنقطة "1" لقيمة <code>transition-duration</code>.
	</li>
	<li>
		يمثل المحور <code>y</code> مقدار اكتمال العملية، ويبدأ بالنقطة "0" وينتهي بالنقطة "1" لقيمة الخاصية التي نريد إظهار الحركة الانتقالية لها.
	</li>
</ul>
<p>
	المثال الأبسط هو التحريك المنتظم، أي الخطي، وذلك باستخدام المنحني <code>(cubic-bezier(0, 0, 1, 1</code>، الذي سيبدو بالشكل التالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="79141" data-ss1633679923="1" data-ss1635002134="1" data-ss1635003597="1" data-ss1635004097="1" href="https://academy.hsoub.com/uploads/monthly_2021_10/cubic_bezier_01.png.e5425053266cfecd9dcddb2bbef3b858.png" rel=""><img alt="cubic_bezier_01.png" class="ipsImage ipsImage_thumbnailed" data-fileid="79141" data-unique="wd6a8s8ae" src="https://academy.hsoub.com/uploads/monthly_2021_10/cubic_bezier_01.png.e5425053266cfecd9dcddb2bbef3b858.png"></a>
</p>

<p>
	عندما يمر الوقت (<code>x</code>) ستكتمل عملية التحريك (<code>y</code>) بثبات وتناغم من القيمة 0 إلى 1. وفي مثالنا التالي ستتحرك صورة القطار من اليسار إلى اليمين بسرعة ثابتة، إذا نقرت عليه:
</p>

<ul>
<li>
		شيفرة الملف style.css:
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8210_34" style="">
<span class="pun">.</span><span class="pln">train </span><span class="pun">{</span><span class="pln">
  position</span><span class="pun">:</span><span class="pln"> relative</span><span class="pun">;</span><span class="pln">
  cursor</span><span class="pun">:</span><span class="pln"> pointer</span><span class="pun">;</span><span class="pln">
  width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">177px</span><span class="pun">;</span><span class="pln">
  height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">160px</span><span class="pun">;</span><span class="pln">
  left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
  transition</span><span class="pun">:</span><span class="pln"> left </span><span class="lit">5s</span><span class="pln"> cubic</span><span class="pun">-</span><span class="pln">bezier</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">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

<ul>
<li>
		شيفرة الملف index.html:
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8210_36" 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;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">"style.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;img</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"train"</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"https://js.cx/clipart/train.gif"</span><span class="pln"> </span><span class="atn">onclick</span><span class="pun">=</span><span class="atv">"</span><span class="kwd">this</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">left</span><span class="pun">=</span><span class="str">'450px'</span><span class="atv">"</span><span class="tag">&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>
	<iframe __idm_frm__="713" class="code-tabs__result" data-ss1633679923="1" data-ss1635002134="1" data-ss1635003597="1" data-ss1635004097="1" src="https://javascript.info/article/css-animations/train-linear/" style="display: block; height: 182px;"></iframe>
</p>

<p>
	إليك شيفرة استخدام الخاصية <code>transition</code> بناءً على منحني بيزيه:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8210_38" style="">
<span class="pun">.</span><span class="pln">train </span><span class="pun">{</span><span class="pln">
  left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
  transition</span><span class="pun">:</span><span class="pln"> left </span><span class="lit">5s</span><span class="pln"> cubic</span><span class="pun">-</span><span class="pln">bezier</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">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
  </span><span class="com">/* JavaScript sets left to 450px */</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	لكن كيف سنرى القطار وهو يُبطئ؟ يمكن استعمال منحني بيزيه آخر من الشكل <code>(cubic-bezier(0.0, 0.5, 0.5 ,1.0</code>، وفي المقال التالي سنرى كيفية بدء العملية بسرعة، حيث يتحرك القطار سريعًا ثم يتباطأ.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="79142" data-ss1633679923="1" data-ss1635002134="1" data-ss1635003597="1" data-ss1635004097="1" href="https://academy.hsoub.com/uploads/monthly_2021_10/cubic_bezier_slow_02.png.d548e13426be5b8dc52ed4a1dee3a86d.png" rel=""><img alt="cubic_bezier_slow_02.png" class="ipsImage ipsImage_thumbnailed" data-fileid="79142" data-unique="fn0rlng5w" src="https://academy.hsoub.com/uploads/monthly_2021_10/cubic_bezier_slow_02.png.d548e13426be5b8dc52ed4a1dee3a86d.png"></a>
</p>

<ul>
<li>
		شيفرة الملف style.css:
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8210_40" style="">
<span class="pun">.</span><span class="pln">train </span><span class="pun">{</span><span class="pln">
  position</span><span class="pun">:</span><span class="pln"> relative</span><span class="pun">;</span><span class="pln">
  cursor</span><span class="pun">:</span><span class="pln"> pointer</span><span class="pun">;</span><span class="pln">
  width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">177px</span><span class="pun">;</span><span class="pln">
  height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">160px</span><span class="pun">;</span><span class="pln">
  left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0px</span><span class="pun">;</span><span class="pln">
  transition</span><span class="pun">:</span><span class="pln"> left </span><span class="lit">5s</span><span class="pln"> cubic</span><span class="pun">-</span><span class="pln">bezier</span><span class="pun">(</span><span class="lit">0.0</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="lit">0.5</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1.0</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

<ul>
<li>
		شيفرة الملف index.html:
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8210_42" 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;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">"style.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;img</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"train"</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"https://js.cx/clipart/train.gif"</span><span class="pln"> </span><span class="atn">onclick</span><span class="pun">=</span><span class="atv">"</span><span class="kwd">this</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">left</span><span class="pun">=</span><span class="str">'450px'</span><span class="atv">"</span><span class="tag">&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>
	<iframe __idm_frm__="714" class="code-tabs__result" data-ss1633679923="1" data-ss1635002134="1" data-ss1635003597="1" data-ss1635004097="1" src="https://javascript.info/article/css-animations/train/" style="display: block; height: 182px;"></iframe>
</p>

<ul>
<li>
		شيفرة CSS:
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8210_45" style="">
<span class="pun">.</span><span class="pln">train </span><span class="pun">{</span><span class="pln">
  left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
  transition</span><span class="pun">:</span><span class="pln"> left </span><span class="lit">5s</span><span class="pln"> cubic</span><span class="pun">-</span><span class="pln">bezier</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="pun">.</span><span class="lit">5</span><span class="pun">,</span><span class="pln"> </span><span class="pun">.</span><span class="lit">5</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
  </span><span class="com">/* JavaScript sets left to 450px */</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	يمكنك استخدام العديد من المنحنيات الجاهزة، مثل <code>linear</code> أو <code>ease</code> أو <code>ease-in</code> أو <code>ease-out</code> أو <code>ease-in-out</code>، وإليك جدولًا بالمنحنيات الموافقة لها:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="79139" data-ss1633679923="1" data-ss1635002134="1" data-ss1635003597="1" data-ss1635004097="1" href="https://academy.hsoub.com/uploads/monthly_2021_10/bezier_curve_cases_03.png.0d236426e913d8eb9e91a00b5f45cc8b.png" rel=""><img alt="bezier_curve_cases_03.png" class="ipsImage ipsImage_thumbnailed" data-fileid="79139" data-unique="3kgr1r0y6" src="https://academy.hsoub.com/uploads/monthly_2021_10/bezier_curve_cases_03.png.0d236426e913d8eb9e91a00b5f45cc8b.png"></a>
</p>

<p>
	وفي ملاحظة هامة، تجدر الإشارة إلى أن <code>*</code> تستخدَم ease قيمةً افتراضيةً إذا لم نحدد دالة توقيت timing-function. وكما هو واضح يمكن استعمال <code>ease-out</code> في حالة القطار الذي يُبطئ حركته:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8210_47" style="">
<span class="pun">.</span><span class="pln">train </span><span class="pun">{</span><span class="pln">
  left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
  transition</span><span class="pun">:</span><span class="pln"> left </span><span class="lit">5s</span><span class="pln"> ease</span><span class="pun">-</span><span class="kwd">out</span><span class="pun">;</span><span class="pln">
  </span><span class="com">/* transition: left 5s cubic-bezier(0, .5, .5, 1); */</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	لكنه يبدو مختلفًا نوعًا ما.
</p>

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

<p>
	لاحظ الشيفرة التالية:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8210_49" style="">
<span class="pun">.</span><span class="pln">train </span><span class="pun">{</span><span class="pln">
  left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
  transition</span><span class="pun">:</span><span class="pln"> left </span><span class="lit">5s</span><span class="pln"> cubic</span><span class="pun">-</span><span class="pln">bezier</span><span class="pun">(.</span><span class="lit">5</span><span class="pun">,</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="pun">.</span><span class="lit">5</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">);</span><span class="pln">
  </span><span class="com">/* JavaScript sets left to 400px */</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	ينبغي إظهار حركة انتقالية للخاصية <code>left</code> بين القيمتين <code>100px</code> و<code>400px</code>، لكنك بالنقر على صورة القطار سترى ما يلي:
</p>

<ul>
<li>
		أولًا سيتراجع القطار إلى الخلف، وستغدو قيمة <code>left</code> أقل من <code>100px</code>.
	</li>
	<li>
		يتقدم بعدها القطار إلى الأمام لتتجاوز <code>left</code> القيمة <code>400px</code> بقليل.
	</li>
	<li>
		ثم يعود مجددًا إلى القيمة <code>400px</code> للخاصية <code>left</code>.
	</li>
</ul>
<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="79140" data-ss1633679923="1" data-ss1635002134="1" data-ss1635003597="1" data-ss1635004097="1" href="https://academy.hsoub.com/uploads/monthly_2021_10/bezier_out_range_04.png.442d5e34a4177da49ff6410f62dc460e.png" rel=""><img alt="bezier_out_range_04.png" class="ipsImage ipsImage_thumbnailed" data-fileid="79140" data-unique="mdg2ncb5d" src="https://academy.hsoub.com/uploads/monthly_2021_10/bezier_out_range_04.png.442d5e34a4177da49ff6410f62dc460e.png"></a>
</p>

<p>
	شيفرة الملف style.css:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8210_51" style="">
<span class="pun">.</span><span class="pln">train </span><span class="pun">{</span><span class="pln">
  position</span><span class="pun">:</span><span class="pln"> relative</span><span class="pun">;</span><span class="pln">
  cursor</span><span class="pun">:</span><span class="pln"> pointer</span><span class="pun">;</span><span class="pln">
  width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">177px</span><span class="pun">;</span><span class="pln">
  height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">160px</span><span class="pun">;</span><span class="pln">
  left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
  transition</span><span class="pun">:</span><span class="pln"> left </span><span class="lit">5s</span><span class="pln"> cubic</span><span class="pun">-</span><span class="pln">bezier</span><span class="pun">(.</span><span class="lit">5</span><span class="pun">,</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="pun">.</span><span class="lit">5</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

<ul>
<li>
		شيفرة الملف index.html:
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8210_53" 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;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">"style.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;img</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"train"</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"https://js.cx/clipart/train.gif"</span><span class="pln"> </span><span class="atn">onclick</span><span class="pun">=</span><span class="atv">"</span><span class="kwd">this</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">left</span><span class="pun">=</span><span class="str">'400px'</span><span class="atv">"</span><span class="tag">&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>
	<iframe __idm_frm__="715" class="code-tabs__result" data-ss1633679923="1" data-ss1635002134="1" data-ss1635003597="1" data-ss1635004097="1" src="https://javascript.info/article/css-animations/train-over/" style="display: block; height: 182px;"></iframe>
</p>

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

<p>
	وكما نعرف، تقيس <code>y</code> مدى اكتمال الحركة الانتقالية، حيث تتطابق القيمة <code>y = 0</code> مع بداية الحركة، والقيمة <code>y = 1</code> مع نهايتها. إذًا ستنقل القيمة <code>y&lt;0</code> نقطة البدء إلى ما قبل البداية، والقيمة <code>y&gt;1</code> إلى ما بعدها.
</p>

<p>
	يُعَد هذا التغيير بسيطًا طبعًا، فلو ضبطنا <code>y</code> على القيمة <code>99</code> أو <code>-99</code>، فسيقفز القطار بسرعة أكبر بكثير خارج المجال، لكن كيف سننشئ منحني بيزيه من أجل مهمة معينة؟ هنالك أدوات كثيرة، كما يمكن تنفيذه ضمن <a data-ss1633679923="1" data-ss1635002134="1" data-ss1635003597="1" data-ss1635004097="1" href="http://cubic-bezier.com" rel="external nofollow">مواقع عديدة</a> على الإنترنت.
</p>

<h4>
	دالة التوقيت steps
</h4>

<p>
	تسمح دالة التوقيت <code>([steps(number of steps[, start/end</code> بتقسيم الحركة الانتقالية إلى خطوات، لنرى ذلك من خلال مثال قائمة من الأرقام التي لا تبدي أي حركة:
</p>

<ul>
<li>
		شيفرة الملف style.css:
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8210_55" style="">
<span class="com">#digit {</span><span class="pln">
  border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> solid red</span><span class="pun">;</span><span class="pln">
  width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1.2em</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">#stripe {</span><span class="pln">
  display</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">inline</span><span class="pun">-</span><span class="pln">block</span><span class="pun">;</span><span class="pln">
  font</span><span class="pun">:</span><span class="pln"> </span><span class="lit">32px</span><span class="pln"> monospace</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<ul>
<li>
		شيفرة الملف index.html:
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8210_57" 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;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">"style.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;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"digit"</span><span class="tag">&gt;&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"stripe"</span><span class="tag">&gt;</span><span class="pln">0123456789</span><span class="tag">&lt;/div&gt;&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>
	وستكون النتيجة:
</p>

<p>
	<iframe __idm_frm__="716" class="code-tabs__result" data-ss1633679923="1" data-ss1635002134="1" data-ss1635003597="1" data-ss1635004097="1" src="https://javascript.info/article/css-animations/step-list/" style="display: block; height: 50px;"></iframe>
</p>

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

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8210_59" style="">
<span class="com">#stripe.animate  {</span><span class="pln">
  transform</span><span class="pun">:</span><span class="pln"> translate</span><span class="pun">(-</span><span class="lit">90</span><span class="pun">%);</span><span class="pln">
  transition</span><span class="pun">:</span><span class="pln"> transform </span><span class="lit">9s</span><span class="pln"> steps</span><span class="pun">(</span><span class="lit">9</span><span class="pun">,</span><span class="pln"> start</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

<ul>
<li>
		شيفرة الملف style.css:
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8210_61" style="">
<span class="com">#digit {</span><span class="pln">
  width</span><span class="pun">:</span><span class="pln"> </span><span class="pun">.</span><span class="lit">5em</span><span class="pun">;</span><span class="pln">
  overflow</span><span class="pun">:</span><span class="pln"> hidden</span><span class="pun">;</span><span class="pln">
  font</span><span class="pun">:</span><span class="pln"> </span><span class="lit">32px</span><span class="pln"> monospace</span><span class="pun">;</span><span class="pln">
  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="com">#stripe {</span><span class="pln">
  display</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">inline</span><span class="pun">-</span><span class="pln">block
</span><span class="pun">}</span><span class="pln">

</span><span class="com">#stripe.animate {</span><span class="pln">
  transform</span><span class="pun">:</span><span class="pln"> translate</span><span class="pun">(-</span><span class="lit">90</span><span class="pun">%);</span><span class="pln">
  transition</span><span class="pun">-</span><span class="kwd">property</span><span class="pun">:</span><span class="pln"> transform</span><span class="pun">;</span><span class="pln">
  transition</span><span class="pun">-</span><span class="pln">duration</span><span class="pun">:</span><span class="pln"> </span><span class="lit">9s</span><span class="pun">;</span><span class="pln">
  transition</span><span class="pun">-</span><span class="pln">timing</span><span class="pun">-</span><span class="kwd">function</span><span class="pun">:</span><span class="pln"> steps</span><span class="pun">(</span><span class="lit">9</span><span class="pun">,</span><span class="pln"> start</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

<ul>
<li>
		شيفرة الملف index.html:
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8210_63" 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;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">"style.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">

  Click below to animate:

  </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"digit"</span><span class="tag">&gt;&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"stripe"</span><span class="tag">&gt;</span><span class="pln">0123456789</span><span class="tag">&lt;/div&gt;&lt;/div&gt;</span><span class="pln">

  </span><span class="tag">&lt;script&gt;</span><span class="pln">
    digit</span><span class="pun">.</span><span class="pln">onclick </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      stripe</span><span class="pun">.</span><span class="pln">classList</span><span class="pun">.</span><span class="pln">add</span><span class="pun">(</span><span class="str">'animate'</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>
	وستكون النتيجة:
</p>

<p>
	<iframe __idm_frm__="717" class="code-tabs__result" data-ss1633679923="1" data-ss1635002134="1" data-ss1635003597="1" data-ss1635004097="1" src="https://javascript.info/article/css-animations/step/" style="display: block; height: 60px;"></iframe>
</p>

<p>
	يُمثّل الوسيط الأول للدالة <code>(steps(9, start</code> عدد الخطوات، أي ستقسم الحركة الانتقالية إلى 9 أجزاء -10% لكل خطوة-، كما سيُقسم الفاصل الزمني تلقائيًا إلى 9 أجزاء أيضًا، فلو كانت قيمة الخاصية <code>transition</code> تعادل 9 ثوان، فسيظهر كل رقم لمدة ثانية؛ أما الوسيط الثاني فيأخذ إحدى القيمتين <code>start</code> أو <code>end</code>، حيث تعني القيمة <code>start</code> أننا نريد تنفيذ الخطوة الأولى مباشرةً عند بداية الحركة، ويمكنك ملاحظة ذلك خلال الحركة، فعندما ننقر على الرقم سيتغير إلى "1" -أي الخطوة الأولى- مباشرةً، ثم يكمل ثانيةً وهكذا.
</p>

<p>
	تتقدم العملية كالتالي:
</p>

<ul>
<li>
		<code>-10%</code> - <code>0s</code>: يحدث التغيير الأول في بداية الثانية الأولى مباشرةً.
	</li>
	<li>
		<code>1s</code> – <code>-20%</code>.
	</li>
	<li>
		…
	</li>
	<li>
		<code>8s</code> – <code>-80%</code>.
	</li>
	<li>
		تُظهر الثانية الأخيرة القيمة الأخيرة.
	</li>
</ul>
<p>
	بينما تعني القيمة <code>end</code> وجوب تطبيق التغيير في نهاية كل ثانية، ويكتمل في نهاية الثانية المعدودة. وتتقدم العملية كالتالي:
</p>

<ul>
<li>
		<code>0s</code> – <code>0</code>: لا يتغير شيء في الثانية الأولى.
	</li>
	<li>
		<code>1s</code> – <code>-10%</code>: يحدث التغير الأول عند نهاية الثانية الأولى مباشرةً.
	</li>
	<li>
		<code>2s</code> – <code>-20%</code>.
	</li>
	<li>
		…
	</li>
	<li>
		<code>9s</code> – <code>-90%</code>.
	</li>
</ul>
<p>
	إليك مثالًا نموذجيًا عن استخدام الدالة <code>(steps(9, start</code>.
</p>

<ul>
<li>
		شيفرة الملف style.css:
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8210_65" style="">
<span class="com">#digit {</span><span class="pln">
  width</span><span class="pun">:</span><span class="pln"> </span><span class="pun">.</span><span class="lit">5em</span><span class="pun">;</span><span class="pln">
  overflow</span><span class="pun">:</span><span class="pln"> hidden</span><span class="pun">;</span><span class="pln">
  font</span><span class="pun">:</span><span class="pln"> </span><span class="lit">32px</span><span class="pln"> monospace</span><span class="pun">;</span><span class="pln">
  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="com">#stripe {</span><span class="pln">
  display</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">inline</span><span class="pun">-</span><span class="pln">block
</span><span class="pun">}</span><span class="pln">

</span><span class="com">#stripe.animate {</span><span class="pln">
  transform</span><span class="pun">:</span><span class="pln"> translate</span><span class="pun">(-</span><span class="lit">90</span><span class="pun">%);</span><span class="pln">
  transition</span><span class="pun">-</span><span class="kwd">property</span><span class="pun">:</span><span class="pln"> transform</span><span class="pun">;</span><span class="pln">
  transition</span><span class="pun">-</span><span class="pln">duration</span><span class="pun">:</span><span class="pln"> </span><span class="lit">9s</span><span class="pun">;</span><span class="pln">
  transition</span><span class="pun">-</span><span class="pln">timing</span><span class="pun">-</span><span class="kwd">function</span><span class="pun">:</span><span class="pln"> steps</span><span class="pun">(</span><span class="lit">9</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">end</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

<ul>
<li>
		شيفرة الملف index.html:
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8210_67" 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;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">"style.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">

  Click below to animate:

  </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"digit"</span><span class="tag">&gt;&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"stripe"</span><span class="tag">&gt;</span><span class="pln">0123456789</span><span class="tag">&lt;/div&gt;&lt;/div&gt;</span><span class="pln">

  </span><span class="tag">&lt;script&gt;</span><span class="pln">
    digit</span><span class="pun">.</span><span class="pln">onclick </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      stripe</span><span class="pun">.</span><span class="pln">classList</span><span class="pun">.</span><span class="pln">add</span><span class="pun">(</span><span class="str">'animate'</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>
	وستكون النتيجة:
</p>

<p>
	<iframe __idm_frm__="718" class="code-tabs__result" data-ss1633679923="1" data-ss1635002134="1" data-ss1635003597="1" data-ss1635004097="1" src="https://javascript.info/article/css-animations/step-end/" style="display: block; height: 80px;"></iframe>
</p>

<p>
	إليك بعض القيم المختصرة:
</p>

<ul>
<li>
		<code>step-start</code>: تماثل <code>(steps(1, start</code>.
	</li>
	<li>
		<code>step-end</code>: تماثل <code>(steps(1, end</code>.
	</li>
</ul>
<p>
	لا تستخدم هذه القيم إلا نادرًا لأنها لا تُصنَّف حركات فعلًا، بل تغيرات تحدث بالخطوة.
</p>

<h2>
	الحدث transitionend
</h2>

<p>
	يقع الحدث <code>transitionend</code> عندما تنتهي الحركة المبنية على خصائص CSS، ويستخدم لتنفيذ عمل ما بعد انتهاء الحركة، حيث يمكننا مثلًا ضم حركات مختلفة، فالسفينة في المثال التالي ستبدأ رحلتها وتستمر بالعودة عند النقر، وفي كل مرة تبتعد نحو اليمين أكثر:
</p>

<p>
	<iframe __idm_frm__="719" class="code-result__iframe" data-ss1633679923="1" data-ss1635002134="1" data-ss1635003597="1" data-ss1635004097="1" data-trusted="1" src="https://en.js.cx/article/css-animations/boat/" style="display: block; height: 300px;"></iframe>
</p>

<p>
	تبدأ الحركة نتيجة تنفيذ الدالة <code>go</code>، التي يُعاد تنفيذها في كل مرة تنتهي فيها الحركة، وتغير اتجاه الحركة:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_8210_70" style="">
<span class="pln">boat</span><span class="pun">.</span><span class="pln">onclick </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="com">//...</span><span class="pln">
  let times </span><span class="pun">=</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">

  </span><span class="kwd">function</span><span class="pln"> go</span><span class="pun">()</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">times </span><span class="pun">%</span><span class="pln"> </span><span class="lit">2</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      </span><span class="com">// sail to the right</span><span class="pln">
      boat</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">'back'</span><span class="pun">);</span><span class="pln">
      boat</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">marginLeft </span><span class="pun">=</span><span class="pln"> </span><span class="lit">100</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> times </span><span class="pun">+</span><span class="pln"> </span><span class="lit">200</span><span class="pln"> </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><span class="pln"> </span><span class="kwd">else</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      </span><span class="com">// sail to the left</span><span class="pln">
      boat</span><span class="pun">.</span><span class="pln">classList</span><span class="pun">.</span><span class="pln">add</span><span class="pun">(</span><span class="str">'back'</span><span class="pun">);</span><span class="pln">
      boat</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">marginLeft </span><span class="pun">=</span><span class="pln"> </span><span class="lit">100</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> times </span><span class="pun">-</span><span class="pln"> </span><span class="lit">200</span><span class="pln"> </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><span class="pln">

  </span><span class="pun">}</span><span class="pln">

  go</span><span class="pun">();</span><span class="pln">

  boat</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">'transitionend'</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    times</span><span class="pun">++;</span><span class="pln">
    go</span><span class="pun">();</span><span class="pln">
  </span><span class="pun">});</span><span class="pln">
</span><span class="pun">};</span></pre>

<p>
	لكائن الحدث <code>transitionend</code> عدة خصائص مميزة، هي:
</p>

<ul>
<li>
		<code>event.propertyName</code>: يعيد اسم الخاصية التي أنهت حركتها الانتقالية، وتظهر فائدتها عند تحريك عدة خصائص معًا.
	</li>
	<li>
		<code>event.elapsedTime</code>: الوقت الذي استغرقته الحركة بالثواني، دون احتساب <code>transition-delay</code>.
	</li>
</ul>
<h2>
	القاعدة keyframes
</h2>

<p>
	يمكن ضم عدة حركات بسيطة معًا باستخدام قاعدة<code>keyframes@</code> من CSS، والتي تحدد اسم الحركة الانتقالية، وقواعد مكانها وزمانها وكيفيتها، بعدها سنتمكن باستخدام الخاصية <code>animation</code> من ربط الحركة بالعنصر وتخصيص معاملات إضافية قد نحتاجها، إليك مثالًا مع الشرح:
</p>

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

</span><span class="tag">&lt;style&gt;</span><span class="pln">
  </span><span class="lit">@keyframes</span><span class="pln"> go</span><span class="pun">-</span><span class="pln">left</span><span class="pun">-</span><span class="pln">right </span><span class="pun">{</span><span class="pln">        </span><span class="com">/* "go-left-right" أعط القاعدة اسمًا*/</span><span class="pln">
    </span><span class="kwd">from</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0px</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span><span class="pln">             </span><span class="com">/*  left: 0px حرك ابتداءً من قيمة */</span><span class="pln">
    to </span><span class="pun">{</span><span class="pln"> left</span><span class="pun">:</span><span class="pln"> calc</span><span class="pun">(</span><span class="lit">100</span><span class="pun">%</span><span class="pln"> </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><span class="pln"> </span><span class="com">/*  100%-50px: حرك نحو اليسار */</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="pun">.</span><span class="pln">progress </span><span class="pun">{</span><span class="pln">
    animation</span><span class="pun">:</span><span class="pln"> go</span><span class="pun">-</span><span class="pln">left</span><span class="pun">-</span><span class="pln">right </span><span class="lit">3s</span><span class="pln"> infinite alternate</span><span class="pun">;</span><span class="pln">
    </span><span class="com">/* طبق الحركة التي عرفناها في الأعلى على العنصر
      المدة 3 ثوان
       عدد المرات: لانهائي
       بدّل اتجاه الحركة في كل مرة
    */</span><span class="pln">

    position</span><span class="pun">:</span><span class="pln"> relative</span><span class="pun">;</span><span class="pln">
    border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2px</span><span class="pln"> solid green</span><span class="pun">;</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</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"> lime</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span></pre>

<p>
	<iframe allowfullscreen="true" allowtransparency="true" data-ss1635004097="1" frameborder="no" height="130" loading="lazy" scrolling="no" src="https://codepen.io/Hsoub/embed/ZEJLexb?default-tab=html%2Cresult" style="width: 100%;" title="JS-P3-05-CSS-animations-ex3">See the Pen JS-P3-05-CSS-animations-ex3 by Hsoub (@Hsoub) on CodePen.</iframe>
</p>

<p>
	ستجد العديد من المقالات التي تشرح القاعدة <code>@keyframes</code> من CSS مع <a data-ss1633679923="1" data-ss1635002134="1" data-ss1635003597="1" data-ss1635004097="1" href="https://drafts.csswg.org/css-animations/" rel="external nofollow">ميزاتها المفصلة</a>، ولن تحتاجها غالبًا إلا عندما يكون كل شيء في موقعك متحركًا باستمرار.
</p>

<h2>
	الأداء
</h2>

<p>
	يمكن تحريك أغلب خاصيات CSS بما أنها قيم رقمية مثل <code>width</code> و <code>color</code> و <code>font-size</code>، فيعمل المتصفح عندما تحرك هذه الخاصيات على تغيير هذه القيم تدريجيًا في كل إطار من الإطارات مما يعطي إيحاء بتأثير حركي سلس، ولكن انتظر، لا تبدو كل الحركات سلسلة كما تريدها لأن تغيير بعض خاصيات CSS عملية مجهدة.
</p>

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

<ol>
<li>
		التخطيط Layout: إعادة حساب إحداثيات ومواضع كل عنصر من عناصر الصفحة، ثم
	</li>
	<li>
		الشكل Paint: إعادة حساب كيف يجب أن يظهر كل عنصر بعد تموضعه في مكانه وكل شيء حرفيًا بما فيها الخلفيات والألوان، ثم
	</li>
	<li>
		التركيب Composite: تصيير النتائج النهائية وإخراجها وعرضها على بكسلات الشاشة وتطبيق <a href="https://wiki.hsoub.com/CSS#.D8.A7.D9.84.D8.AA.D8.AD.D9.88.D9.8A.D9.84.D8.A7.D8.AA" rel="external">تحويلات CSS</a> إن وجدت.
	</li>
</ol>
<p>
	تكرر هذه الخطوات خلال إجراء تحريك عبر CSS لكل إطار من <a href="https://wiki.hsoub.com/CSS#.D8.A7.D9.84.D8.A5.D8.B7.D8.A7.D8.B1.D8.A7.D8.AA" rel="external">الإطارات</a>، رغم أن خاصيات CSS التي لا تؤثر على الإحداثيات أو التموضع مثل تغيير خاصية اللون <code>color</code> فقد تتخطى الخطوة الأولى وينتقل المتصفح إلى الخطوة الثانية مباشرةً ثم الثالثة وقد تتخطى بعض الخاصيات حتى الخطوة الثانية وتنتقل إلى الخطوة الثالثة مباشرةً، ويمكنك أن تطلع على قائمة خاصيات CSS والمراحل التي تستهدفها من موقع <a data-ss1633679923="1" data-ss1635002134="1" data-ss1635003597="1" data-ss1635004097="1" href="https://csstriggers.com/" rel="external nofollow">CSS Triggers</a>.
</p>

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

<p>
	تعد الخاصية <code>transform</code> خيارًا جيدًا لسببين هما:
</p>

<ul>
<li>
		تستهدف التحويلات في CSS صندوق العنصر ككل (تدوير، أو قلب أو تمديد أو إزاحة …إلخ.)
	</li>
	<li>
		لا تؤثر التحويلات على العناصر المجاورة للعنصر المستهدف.
	</li>
</ul>
<p>
	وفقًا ذلك، تطبق التحويلات على عناصر يكون فيها التخطيط والشكل محسوبين مسبقًا وتنتقل مباشرةً إلى الخطوة الثالثة من الخطوات السابقة، أي أن المتصفح يحسب التخطيط (الحجم والمواضع) ثم يضيف لها تسنيق الشكل من ألوان وواجهات وغيرهما في المرحلة الثانية ثم يطبق التحويل الممثل بالخاصية <code>transform</code> على صندوق العنصر إن وجدت.
</p>

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

<p>
	مما سبق نجد أن الخاصية <code>transform</code> قوية للغاية ويمكنك عبرها تدوير عنصرٍ أو قلبه أو تطويله أو تقصيره أو حتى تحريكه وغيرها (انظر <a data-ss1633679923="1" data-ss1635002134="1" data-ss1635003597="1" data-ss1635004097="1" href="https://wiki.hsoub.com/CSS/transform#.D8.A8.D8.B7.D8.A7.D9.82.D8.A9_.D8.A7.D9.84.D8.AE.D8.A7.D8.B5.D9.8A.D8.A9" rel="external">صفحة الخاصية</a> على موسوعة حسوب)، فيمن استعمال <code>transform: translateX(…)‎</code> بدلًا من استعمال الخاصية <code>left</code> أو <code>margin-left</code> أو استعمال <code>transform: scale</code> لزيادة حجم عنصر وهكذا.
</p>

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

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8210_78" style="">
<span class="tag">&lt;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"https://js.cx/clipart/boat.png"</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"boat"</span><span class="tag">&gt;</span><span class="pln">

</span><span class="tag">&lt;style&gt;</span><span class="pln">
</span><span class="com">#boat {</span><span class="pln">
  cursor</span><span class="pun">:</span><span class="pln"> pointer</span><span class="pun">;</span><span class="pln">
  transition</span><span class="pun">:</span><span class="pln"> transform </span><span class="lit">2s</span><span class="pln"> ease</span><span class="pun">-</span><span class="kwd">in</span><span class="pun">-</span><span class="kwd">out</span><span class="pun">,</span><span class="pln"> opacity </span><span class="lit">2s</span><span class="pln"> ease</span><span class="pun">-</span><span class="kwd">in</span><span class="pun">-</span><span class="kwd">out</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">move </span><span class="pun">{</span><span class="pln">
  transform</span><span class="pun">:</span><span class="pln"> translateX</span><span class="pun">(</span><span class="lit">300px</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="tag">&lt;/style&gt;</span><span class="pln">
</span><span class="tag">&lt;script&gt;</span><span class="pln">
  boat</span><span class="pun">.</span><span class="pln">onclick </span><span class="pun">=</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> boat</span><span class="pun">.</span><span class="pln">classList</span><span class="pun">.</span><span class="pln">add</span><span class="pun">(</span><span class="str">'move'</span><span class="pun">);</span><span class="pln">
</span><span class="tag">&lt;/script&gt;</span></pre>

<p>
	<iframe allowfullscreen="true" allowtransparency="true" data-ss1635004097="1" frameborder="no" height="343" loading="lazy" scrolling="no" src="https://codepen.io/Hsoub/embed/bGrgqvZ?default-tab=html%2Cresult" style="width: 100%;" title="JS-P3-05-CSS-animations-ex4">See the Pen JS-P3-05-CSS-animations-ex4 by Hsoub (@Hsoub) on CodePen.</iframe>
</p>

<p>
	وإليك أيضًا مثال آخر أكثر تعقيدًا يُطبَّق فيه إطارات الحركة <code>‎@keyframes</code>:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8210_80" style="">
<span class="tag">&lt;h2</span><span class="pln"> </span><span class="atn">onclick</span><span class="pun">=</span><span class="atv">"</span><span class="kwd">this</span><span class="pun">.</span><span class="pln">classList</span><span class="pun">.</span><span class="pln">toggle</span><span class="pun">(</span><span class="str">'animated'</span><span class="pun">)</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">click me to start / stop</span><span class="tag">&lt;/h2&gt;</span><span class="pln">
</span><span class="tag">&lt;style&gt;</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">animated </span><span class="pun">{</span><span class="pln">
    animation</span><span class="pun">:</span><span class="pln"> hello</span><span class="pun">-</span><span class="pln">goodbye </span><span class="lit">1.8s</span><span class="pln"> infinite</span><span class="pun">;</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> fit</span><span class="pun">-</span><span class="pln">content</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="lit">@keyframes</span><span class="pln"> hello</span><span class="pun">-</span><span class="pln">goodbye </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">
      transform</span><span class="pun">:</span><span class="pln"> translateY</span><span class="pun">(-</span><span class="lit">60px</span><span class="pun">)</span><span class="pln"> rotateX</span><span class="pun">(</span><span class="lit">0.7turn</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="lit">50</span><span class="pun">%</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      transform</span><span class="pun">:</span><span class="pln"> none</span><span class="pun">;</span><span class="pln">
      opacity</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    </span><span class="lit">100</span><span class="pun">%</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      transform</span><span class="pun">:</span><span class="pln"> translateX</span><span class="pun">(</span><span class="lit">230px</span><span class="pun">)</span><span class="pln"> rotateZ</span><span class="pun">(</span><span class="lit">90deg</span><span class="pun">)</span><span class="pln"> scale</span><span class="pun">(</span><span class="lit">0.5</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="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span></pre>

<p>
	<iframe allowfullscreen="true" allowtransparency="true" data-ss1635004097="1" frameborder="no" height="188" loading="lazy" scrolling="no" src="https://codepen.io/Hsoub/embed/KKvaWRP?default-tab=html%2Cresult" style="width: 100%;" title="JS-P3-05-CSS-animations-ex5">See the Pen JS-P3-05-CSS-animations-ex5 by Hsoub (@Hsoub) on CodePen.</iframe>
</p>

<h2>
	خلاصة
</h2>

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

<p>
	النقاط الأساسية التي تجعل <a href="https://academy.hsoub.com/programming/css/%D8%A5%D9%86%D8%B4%D8%A7%D8%A1-%D8%B1%D8%B3%D9%88%D9%85-%D9%85%D8%AA%D8%AD%D8%B1%D9%83%D8%A9-%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-css-r1340/" rel="">الرسومات المتحركة باستخدام CSS</a> محدودةً موازنةً برسوم JavaScript هي:
</p>

<ul>
<li>
		الإيجابيات.
	</li>
	<li>
		تنفَّذ الأشياء البسيطة ببساطة.
	</li>
	<li>
		سريعة وخفيفة على المعالج.
	</li>
	<li>
		السلبيات.
	</li>
	<li>
		رسوم JavaScript أكثر مرونةً، إذ يمكنها تنفيذ أي منطق رسومي، مثل "انفجار" عنصر مثلًا.
	</li>
	<li>
		لا تعتمد رسوميات JavaScript على تغيرات الخاصية، بل يمكن إنشاء عناصر جديدة في JavaScript مثل جزء من الرسوميات.
	</li>
</ul>
<p>
	في أمثلتنا الأولى حركنا <code>font-size</code> و<code>left</code> و<code>width</code> و<code>height</code>، لكن إذا رغبنا في أداء أفضل في مشاريعنا الحقيقية، فيجب أن نستخدم <code>()transform: scale</code> و<code>()transform: translate</code>.
</p>

<p>
	يمكن تنفيذ الرسوميات المتحركة باستخدام CSS كما شرحناها في هذا المقال، وسيسمح لنا الحدث <code>transitionend</code> باستخدام JavaScript بعد انتهاء الحركة الانتقالية، وبالتالي ستتكامل جيدًا مع الشيفرة.
</p>

<p>
	سنتعرف في المقال القادم على رسوم JavaScript المتحركة التي تساعدنا في تنفيذ حالات أكثر تعقيدًا.
</p>

<h2>
	مهام لإنجازها
</h2>

<h3 id="-css">
	تحريك طائرة في CSS
</h3>

<p>
	أظهر رسمًا متحركًا يشابه صورة الطائرة في الأسفل:
</p>

<p>
	<iframe class="code-result__iframe" data-ss1635003597="1" data-ss1635004097="1" data-trusted="1" src="https://en.js.cx/task/animate-logo-css/solution/" style="display: block; height: 300px;"></iframe>
</p>

<ul>
<li>
		يزداد حجم الصورة من <code>40x24px</code> إلى <code>400x240px</code>.
	</li>
	<li>
		تستغرق العملية 3 ثوان.
	</li>
	<li>
		اطبع كلمة "!Done" عند الانتهاء.
	</li>
	<li>
		لا يجب أن تتوقف العملية بالنقر على الصورة أثناء التنفيذ. <a data-ss1635003597="1" data-ss1635004097="1" href="https://plnkr.co/edit/Lj9szlcP8lRxn5pC?p=preview" rel="external nofollow">افتح المثال في بيئة تجريبية</a>
	</li>
</ul>
<h4 id="-">
	الحل
</h4>

<p>
	إليك الشيفرة:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_520_8" style="">
<span class="com">/* original class */</span><span class="pln">

</span><span class="com">#flyjet {</span><span class="pln">
  transition</span><span class="pun">:</span><span class="pln"> all </span><span class="lit">3s</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">/* JS adds .growing */</span><span class="pln">
</span><span class="com">#flyjet.growing {</span><span class="pln">
  width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">400px</span><span class="pun">;</span><span class="pln">
  height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">240px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

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

<h3 id="-2">
	تحرك الطائرة 2
</h3>

<p>
	أعد التمرين السابق لكن اجعل الحجم يتجاوز الحجم الأقصى للصورة <code>400x240px</code>، ثم يعود إلى هذا الحجم.
</p>

<p>
	<iframe class="code-result__iframe" data-ss1635003597="1" data-ss1635004097="1" data-trusted="1" src="https://en.js.cx/task/animate-logo-bezier-css/solution/" style="display: block; height: 350px;"></iframe>
</p>

<h4 id="-">
	الحل
</h4>

<p>
	نريد اختيار أنسب منحني بيزيه لتلك الحركة، إذ يجب أن تحقيق y&gt;1 في موضع ما للطائرة لتحقيق تأثير القفزة مثل <code>cubic-bezier(0.25, 1.5, 0.75, 1.5)‎</code>، انظر المخطط:
</p>

<p style="text-align: center;">
	<img alt="bezier-up.png" class="ipsImage ipsImage_thumbnailed" data-fileid="80526" data-unique="kpli7bulj" src="https://academy.hsoub.com/uploads/monthly_2021_10/bezier-up.png.de86a37741bef47ec019c791321d5ba4.png"></p>

<p>
	<a data-ss1635003597="1" data-ss1635004097="1" href="https://plnkr.co/edit/siJdHAbKzgvoC0j5?p=preview" rel="external nofollow">افتح الحل في بيئة تجريبية</a>.
</p>

<h3 id="-">
	تحريك دائرة
</h3>

<p>
	أنشئ الدالة <code>showCircle(cx, cy, radius)</code> التي تظهر دائرةً تنمو.
</p>

<ul>
<li>
		<code>cx,cy</code>: يمثلان إحداثيات مركز الدائرة بالنسبة إلى إحداثيات النافذة.
	</li>
	<li>
		<code>radius</code>: نصف قطر الدائرة.
	</li>
</ul>
<p>
	انقر الزر لترى كيف سيظهر الحل:
</p>

<p>
	<iframe class="code-result__iframe" data-ss1635003597="1" data-ss1635004097="1" data-trusted="1" src="https://en.js.cx/task/animate-circle/solution/" style="display: block; height: 260px;"></iframe>
</p>

<p>
	تجد <a data-ss1635003597="1" data-ss1635004097="1" href="https://plnkr.co/edit/qd8u6qKVygb8km0v?p=preview" rel="external nofollow">المثال في هذه البيئة التجريبية</a> وتجد <a data-ss1635003597="1" data-ss1635004097="1" href="https://plnkr.co/edit/liP2z1HWtstH37Hl?p=preview" rel="external nofollow">حله في هذه البيئة التجريبية</a>.
</p>

<h3 id="-">
	تحريك دائرة مع دالة استدعاء
</h3>

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

<p>
	ترسم الدالة <code>(showCircle(cx, cy, radius</code> الدائرة، لكن لا يمكنها أن تدلّك على اكتمال الرسم، لذا أضف دالة استدعاء <code>callback</code> مثل معامل إلى الدالة السابقة <code>(showCircle(cx, cy, radius, callback</code>، حيث تُستدعى عندما ينتهي الرسم المتحرك. ينبغي أن تتلقى دالة الاستدعاء <code>callback</code> العنصر <code>&lt;div&gt;</code> للدائرة مثل وسيط.
</p>

<p>
	إليك مثالًا:<code> </code>
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_520_10" style="">
<span class="pln">showCircle</span><span class="pun">(</span><span class="lit">150</span><span class="pun">,</span><span class="pln"> </span><span class="lit">150</span><span class="pun">,</span><span class="pln"> </span><span class="lit">100</span><span class="pun">,</span><span class="pln"> div </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  div</span><span class="pun">.</span><span class="pln">classList</span><span class="pun">.</span><span class="pln">add</span><span class="pun">(</span><span class="str">'message-ball'</span><span class="pun">);</span><span class="pln">
  div</span><span class="pun">.</span><span class="pln">append</span><span class="pun">(</span><span class="str">"Hello, world!"</span><span class="pun">);</span><span class="pln">
</span><span class="pun">});</span></pre>

<p>
	النموذج:
</p>

<p>
	<iframe class="code-result__iframe" data-ss1635003597="1" data-ss1635004097="1" data-trusted="1" src="https://en.js.cx/task/animate-circle-callback/solution/" style="display: block; height: 260px;"></iframe>
</p>

<p>
	تجد <a data-ss1635003597="1" data-ss1635004097="1" href="https://plnkr.co/edit/CwXJViltnzVEWbk2?p=preview" rel="external nofollow">حل المثال في هذه البيئة التجريبية</a>.
</p>

<p>
	ترجمة -وبتصرف- للفصل <a data-ss1633679923="1" data-ss1635002134="1" data-ss1635003597="1" data-ss1635004097="1" href="https://javascript.info/css-animations" rel="external nofollow">css-animations</a> من سلسلة <a href="https://javascript.info/" rel="external nofollow">The Modern JavaScript Tutorial</a>.
</p>

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

<ul>
<li>
		المقال السابق: <a data-ss1633679923="1" data-ss1635002134="1" data-ss1635003597="1" data-ss1635004097="1" href="https://academy.hsoub.com/programming/javascript/%D9%85%D9%86%D8%AD%D9%86%D9%89-%D8%A8%D9%8A%D8%B2%D9%8A%D9%87-%D9%88%D8%A3%D9%87%D9%85%D9%8A%D8%AA%D9%87-%D9%81%D9%8A-%D8%A7%D9%84%D8%B1%D8%B3%D9%88%D9%85%D9%8A%D8%A7%D8%AA-%D9%88%D8%B5%D9%86%D8%A7%D8%B9%D8%A9-%D8%A7%D9%84%D8%AD%D8%B1%D9%83%D8%A7%D8%AA-%D9%81%D9%8A-%D8%AC%D8%A7%D9%81%D8%A7%D8%B3%D9%83%D8%B1%D8%A8%D8%AA-r1339/" rel="">منحنى بيزيه وأهميته في الرسوميات وصناعة الحركات في جافاسكربت</a>
	</li>
	<li>
		<a data-ss1633679923="1" data-ss1635002134="1" data-ss1635003597="1" data-ss1635004097="1" href="https://academy.hsoub.com/programming/css/%D8%AA%D8%A3%D8%AB%D9%8A%D8%B1%D8%A7%D8%AA-%D8%A7%D9%84%D8%A7%D9%86%D8%AA%D9%82%D8%A7%D9%84-%D9%88%D8%A7%D9%84%D8%AD%D8%B1%D9%83%D8%A9-%D9%81%D9%8A-css-r517/" rel="">تأثيرات الانتقال والحركة في </a><a data-ss1633679923="1" data-ss1635002134="1" data-ss1635003597="1" data-ss1635004097="1" href="https://academy.hsoub.com/files/14-%D8%A7%D9%84%D8%AA%D8%AD%D8%B1%D9%8A%D9%83-%D8%B9%D8%A8%D8%B1-css/" rel="">CSS</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/javascript/%D9%85%D9%86%D8%AD%D9%86%D9%89-%D8%A8%D9%8A%D8%B2%D9%8A%D9%87-%D9%88%D8%A3%D9%87%D9%85%D9%8A%D8%AA%D9%87-%D9%81%D9%8A-%D8%A7%D9%84%D8%B1%D8%B3%D9%88%D9%85%D9%8A%D8%A7%D8%AA-%D9%88%D8%B5%D9%86%D8%A7%D8%B9%D8%A9-%D8%A7%D9%84%D8%AD%D8%B1%D9%83%D8%A7%D8%AA-%D9%81%D9%8A-%D8%AC%D8%A7%D9%81%D8%A7%D8%B3%D9%83%D8%B1%D8%A8%D8%AA-r1339/" rel="">منحنى بيزيه وأهميته في الرسوميات وصناعة الحركات في جافاسكربت</a>
	</li>
</ul>
<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;
}
p iframe {
    border: 1px solid #e7e5e3 !important;
}</style>
]]></description><guid isPermaLink="false">1340</guid><pubDate>Tue, 26 Oct 2021 15:04:00 +0000</pubDate></item><item><title>&#x643;&#x64A;&#x641;&#x64A;&#x629; &#x62A;&#x62D;&#x648;&#x64A;&#x644; &#x634;&#x64A;&#x641;&#x631;&#x629; CSS &#x625;&#x644;&#x649; &#x62A;&#x646;&#x633;&#x64A;&#x642;&#x627;&#x62A; &#x645;&#x631;&#x626;&#x64A;&#x629;</title><link>https://academy.hsoub.com/programming/css/%D9%83%D9%8A%D9%81%D9%8A%D8%A9-%D8%AA%D8%AD%D9%88%D9%8A%D9%84-%D8%B4%D9%8A%D9%81%D8%B1%D8%A9-css-%D8%A5%D9%84%D9%89-%D8%AA%D9%86%D8%B3%D9%8A%D9%82%D8%A7%D8%AA-%D9%85%D8%B1%D8%A6%D9%8A%D8%A9-r1269/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2021_07/Braces-to-Pixels.png.bb2425660fdf45b31224cb4a3eff31cf.png" /></p>

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

<p>
	اقرأ هذا المقال بتركيز وفي بيئة هادئة.
</p>

<h2>
	التحليل Parsing
</h2>

<p>
	تبدأ عملية تحليل أو معالجة تنسيق <a href="https://wiki.hsoub.com/CSS" rel="external">CSS </a>حالما ينتهي المتصفح من تحميله، إذ يُمكن أن يتواجد هذا التنسيق ضمن ملفاتٍ خاصةٍ به بلاحقة css، أو مضمنًا بملفاتٍ فردية داخل وسم <code>&lt;style&gt;</code>، أو مُضمنًا سطريًا ضمن وسوم HTML باستخدام سمة <code>style</code>. يُحلّل ويُرمّز تنسيق CSS بالاعتماد على <a data-ss1628953112="1" href="https://drafts.csswg.org/css-syntax-3/" rel="external nofollow">مواصفات الأنماط</a>، بحيث ستحصل في نهاية هذه العملية على هيكلية بيانات تتضمن كل المُحددات selector والخصائص وقيم هذه الخصائص.
</p>

<p>
	ألقِ نظرةً على تنسيق CSS التالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_2185_6" style="">
<span class="pun">.</span><span class="pln">fancy</span><span class="pun">-</span><span class="pln">button </span><span class="pun">{</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> green</span><span class="pun">;</span><span class="pln">
    border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3px</span><span class="pln"> solid red</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></pre>

<p>
	سينتج عنه هيكلية البيانات التالية لتسهيل استخدامها في مراحل لاحقة.
</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>
				الخاصية
			</th>
			<th>
				القيمة
			</th>
		</tr></thead>
<tbody>
<tr>
<td style="text-align: center;">
				<code>fancy-button.</code>
			</td>
			<td style="text-align: center;">
				<code>background-color</code>
			</td>
			<td style="text-align: center;">
				<code>rgb(0,255,0)</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>fancy-button.</code>
			</td>
			<td style="text-align: center;">
				<code>border-width</code>
			</td>
			<td style="text-align: center;">
				<code>3px</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>fancy-button.</code>
			</td>
			<td style="text-align: center;">
				<code>border-style</code>
			</td>
			<td style="text-align: center;">
				<code>solid</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>fancy-button.</code>
			</td>
			<td style="text-align: center;">
				<code>border-color</code>
			</td>
			<td style="text-align: center;">
				<code>rgb(255,0,0)</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>fancy-button.</code>
			</td>
			<td style="text-align: center;">
				<code>font-size</code>
			</td>
			<td style="text-align: center;">
				<code>1em</code>
			</td>
		</tr>
</tbody>
</table>
<p>
	لاحظ كيف أنّ المتصفح تخلص من الاختصارات الموجودة في <code>background</code> و<code>border</code> واستبدلها بقيمها الحقيقية، حيث تُستخدم الاختصارات من قِبل المطورين، بينما يتعامل المتصفح مع القيمة الحقيقية لهذه الاختصارات، كما يتابع محرك المتصفح بناء شجرة DOM بعد الانتهاء مما سبق.
</p>

<h3>
	الحسابات
</h3>

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

<table>
<thead><tr>
<th>
				مطوّر الويب
			</th>
			<th>
				القيمة الحسابية
			</th>
		</tr></thead>
<tbody>
<tr>
<td style="text-align: center;">
				<code>font-size: 1em</code>
			</td>
			<td style="text-align: center;">
				<code>font-size: 16px</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>width: 50%</code>
			</td>
			<td style="text-align: center;">
				<code>width: 50%</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>height: auto</code>
			</td>
			<td style="text-align: center;">
				<code>height: auto</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>width: 506.4567894321568px</code>
			</td>
			<td style="text-align: center;">
				<code>width: 506.46px</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>line-height: calc(10px + 2em)</code>
			</td>
			<td style="text-align: center;">
				<code>line-height: 42px</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>border-color: currentColor</code>
			</td>
			<td style="text-align: center;">
				<code>border-color: rgb(0,0,0)</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>height: 50vh</code>
			</td>
			<td style="text-align: center;">
				<code>height: 540px</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>display: grid</code>
			</td>
			<td style="text-align: center;">
				<code>display: grid</code>
			</td>
		</tr>
</tbody>
</table>
<h2>
	توريث التنسيق Cascade
</h2>

<p>
	توجد عدة مصادر لتنسيق CSS، ولذلك يحتاج المتصفح لطريقةٍ يُحدد فيها أي تنسيقٍ يجب تطبيقه على عنصرٍ ما، ولعمل ذلك يستخدم المتصفح ميزةً تُدعى دقة التحديد specificity، والتي تحسب عدد الوسوم والأصناف والمعرفات ومحددات السمات المُستخدمة في مُحدد، إضافةً إلى تصاريح <code>important!</code> الموجودة. حيث تُعطى التنسيقات المُضمنة باستخدام سمة <code>style</code> الترتيب الأعلى لتتفوق على أي تنسيق من وسم <code>&lt;style&gt;</code> أو ملف css خارجي، وعند استخدام المطور <code>important!</code> على قيمة تنسيقٍ ما فسوف يتفوق هذا التنسيق على أي تنسيق CSS مهما كان موقعه إلا في حال وجود تصريح <code>important!</code> أيضًا.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="72158" data-ss1628953112="1" href="https://academy.hsoub.com/uploads/monthly_2021_07/001_css_ranking.png.b6bf462e48c6e539b03dc0c787708194.png" rel=""><img alt="001_css_ranking.png" class="ipsImage ipsImage_thumbnailed" data-fileid="72158" data-unique="31pmsgvzl" src="https://academy.hsoub.com/uploads/monthly_2021_07/001_css_ranking.png.b6bf462e48c6e539b03dc0c787708194.png"></a>
</p>

<p>
	لتوضيح الأمر أكثر ستُعرض بعض المحددات مع درجة التحديد.
</p>

<table>
<thead><tr>
<th>
				المحدّد
			</th>
			<th>
				درجة التحديد
			</th>
		</tr></thead>
<tbody>
<tr>
<td style="text-align: center;">
				<code>li</code>
			</td>
			<td style="text-align: center;">
				<code>1 0 0 0 0</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>li.foo</code>
			</td>
			<td style="text-align: center;">
				<code>1 1 0 0 0</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>comment li.foo.bar#</code>
			</td>
			<td style="text-align: center;">
				<code>1 2 1 0 0</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>&lt;"li style="color: red&gt;</code>
			</td>
			<td style="text-align: center;">
				<code>0 0 0 1 0</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>color: red !important</code>
			</td>
			<td style="text-align: center;">
				<code>1 0 0 0 1</code>
			</td>
		</tr>
</tbody>
</table>
<p>
	إذا تساوت درجات التحديد بين المعرفات، فسيطبّق محرك المتصفح تنسيق المُحدد الذي يظهر آخرًا ضمن الملف.
</p>

<p>
	في المثال التالي ستكون خلفية وسم <code>div</code> بلونٍ أزرق.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_2185_9" style="">
<span class="pln">div </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">
</span><span class="pun">}</span><span class="pln">

div </span><span class="pun">{</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> blue</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	سنتوسّع أكثر في مثال <code>fancy-button.</code>:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_22" style="">
<span class="pln">.fancy-button {
    background: green;
    border: 3px solid red;
    font-size: 1em;
}

div .fancy-button {
    background: yellow;
}</span></pre>

<p>
	سوف ينتج عن تنسيق CSS هيكلة البيانات التالية، وسنتابع البناء على هذا المثال في بقية المقال.
</p>

<table>
<thead><tr>
<th>
				المحدّد
			</th>
			<th>
				الخاصية
			</th>
			<th>
				القيمة
			</th>
			<th>
				درجة التحديد
			</th>
			<th>
				ترتيب المُستند
			</th>
		</tr></thead>
<tbody>
<tr>
<td style="text-align: center;">
				<code>fancy-button.</code>
			</td>
			<td style="text-align: center;">
				<code>background-color</code>
			</td>
			<td style="text-align: center;">
				<code>rgb(0,255,0)</code>
			</td>
			<td style="text-align: center;">
				<code>0 1 0 0 0</code>
			</td>
			<td style="text-align: center;">
				<code>0</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>fancy-button.</code>
			</td>
			<td style="text-align: center;">
				<code>border-width</code>
			</td>
			<td style="text-align: center;">
				<code>3px</code>
			</td>
			<td style="text-align: center;">
				<code>0 1 0 0 0</code>
			</td>
			<td style="text-align: center;">
				<code>1</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>fancy-button.</code>
			</td>
			<td style="text-align: center;">
				<code>border-style</code>
			</td>
			<td style="text-align: center;">
				<code>solid</code>
			</td>
			<td style="text-align: center;">
				<code>0 1 0 0 0</code>
			</td>
			<td style="text-align: center;">
				<code>2</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>fancy-button.</code>
			</td>
			<td style="text-align: center;">
				<code>border-color</code>
			</td>
			<td style="text-align: center;">
				<code>rgb(255,0,0)</code>
			</td>
			<td style="text-align: center;">
				<code>0 1 0 0 0</code>
			</td>
			<td style="text-align: center;">
				<code>3</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>fancy-button.</code>
			</td>
			<td style="text-align: center;">
				<code>font-size</code>
			</td>
			<td style="text-align: center;">
				<code>16px</code>
			</td>
			<td style="text-align: center;">
				<code>0 1 0 0 0</code>
			</td>
			<td style="text-align: center;">
				<code>4</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>div .fancy-button</code>
			</td>
			<td style="text-align: center;">
				<code>background-color</code>
			</td>
			<td style="text-align: center;">
				<code>rgb(255,255,0)</code>
			</td>
			<td style="text-align: center;">
				<code>1 1 0 0 0</code>
			</td>
			<td style="text-align: center;">
				<code>5</code>
			</td>
		</tr>
</tbody>
</table>
<h3>
	تتبع وفهم المصادر
</h3>

<p>
	يوجد مصادرٌ مختلفةٌ لتنسيقات CSS، وهي:
</p>

<ul>
<li>
		المستخدم user: أي تنسيقٍ مضبوطٍ ليكون شاملًا داخل وكيل المستخدم من قِبل المستخدم.
	</li>
	<li>
		المؤلف author: تنسيقات مطوّر الويب.
	</li>
	<li>
		وكيل المستخدم user agent: أي شيءٍ يستطيع إخراج تنسيقات CSS، وهو المتصفح بالنسبة لمعظم المطورين والمستخدمين.
	</li>
</ul>
<p>
	يضمن توريث التنسيق لكلٍ من المصادر السابقة أن تكون الأولوية للمصدر الأول "المستخدم" ثم "المؤلف" ثم "وكيل المستخدم".
</p>

<p>
	لاحظ ماذا سيحدث عند ضبط المستخدم لحجم خط المتصفح إلى قيمة صغرى 2em.
</p>

<table>
<thead><tr>
<th>
				المصدر
			</th>
			<th>
				المحدّد
			</th>
			<th>
				الخاصية
			</th>
			<th>
				القيمة
			</th>
			<th>
				درجة التحديد
			</th>
			<th>
				ترتيب المُستند
			</th>
		</tr></thead>
<tbody>
<tr>
<td style="text-align: center;">
				<code>Author</code>
			</td>
			<td style="text-align: center;">
				<code>fancy-button.</code>
			</td>
			<td style="text-align: center;">
				<code>background-color</code>
			</td>
			<td style="text-align: center;">
				<code>rgb(0,255,0)</code>
			</td>
			<td style="text-align: center;">
				<code>0 1 0 0 0</code>
			</td>
			<td style="text-align: center;">
				<code>0</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>Author</code>
			</td>
			<td style="text-align: center;">
				<code>fancy-button.</code>
			</td>
			<td style="text-align: center;">
				<code>border-width</code>
			</td>
			<td style="text-align: center;">
				<code>3px</code>
			</td>
			<td style="text-align: center;">
				<code>0 1 0 0 0</code>
			</td>
			<td style="text-align: center;">
				<code>1</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>Author</code>
			</td>
			<td style="text-align: center;">
				<code>fancy-button.</code>
			</td>
			<td style="text-align: center;">
				<code>border-style</code>
			</td>
			<td style="text-align: center;">
				<code>solid</code>
			</td>
			<td style="text-align: center;">
				<code>0 1 0 0 0</code>
			</td>
			<td style="text-align: center;">
				<code>2</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>Author</code>
			</td>
			<td style="text-align: center;">
				<code>fancy-button.</code>
			</td>
			<td style="text-align: center;">
				<code>border-color</code>
			</td>
			<td style="text-align: center;">
				<code>rgb(255,0,0)</code>
			</td>
			<td style="text-align: center;">
				<code>0 1 0 0 0</code>
			</td>
			<td style="text-align: center;">
				<code>3</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>Author</code>
			</td>
			<td style="text-align: center;">
				<code>fancy-button.</code>
			</td>
			<td style="text-align: center;">
				<code>font-size</code>
			</td>
			<td style="text-align: center;">
				<code>16px</code>
			</td>
			<td style="text-align: center;">
				<code>0 1 0 0 0</code>
			</td>
			<td style="text-align: center;">
				<code>4</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>Author</code>
			</td>
			<td style="text-align: center;">
				<code>div .fancy-button</code>
			</td>
			<td style="text-align: center;">
				<code>background-color</code>
			</td>
			<td style="text-align: center;">
				<code>rgb(255,255,0)</code>
			</td>
			<td style="text-align: center;">
				<code>1 1 0 0 0</code>
			</td>
			<td style="text-align: center;">
				<code>5</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>User</code>
			</td>
			<td style="text-align: center;">
				<code>*</code>
			</td>
			<td style="text-align: center;">
				<code>font-size</code>
			</td>
			<td style="text-align: center;">
				<code>32px</code>
			</td>
			<td style="text-align: center;">
				<code>1 0 0 0 0</code>
			</td>
			<td style="text-align: center;">
				<code>0</code>
			</td>
		</tr>
</tbody>
</table>
<h3>
	تطبيق توريث التنسيق
</h3>

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

<table>
<thead><tr>
<th>
				المصدر ⬆
			</th>
			<th>
				المحدّد
			</th>
			<th>
				الخاصية
			</th>
			<th>
				القيمة
			</th>
			<th>
				درجة التحديد ⬆
			</th>
			<th>
				ترتيب المُستند ⬇
			</th>
		</tr></thead>
<tbody>
<tr>
<td style="text-align: center;">
				<code>User</code>
			</td>
			<td style="text-align: center;">
				<code>*</code>
			</td>
			<td style="text-align: center;">
				<code>font-size</code>
			</td>
			<td style="text-align: center;">
				<code>32px</code>
			</td>
			<td style="text-align: center;">
				<code>1 0 0 0 0</code>
			</td>
			<td style="text-align: center;">
				<code>0</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>Author</code>
			</td>
			<td style="text-align: center;">
				<code>div .fancy-button</code>
			</td>
			<td style="text-align: center;">
				<code>background-color</code>
			</td>
			<td style="text-align: center;">
				<code>rgb(255,255,0)</code>
			</td>
			<td style="text-align: center;">
				<code>1 1 0 0 0</code>
			</td>
			<td style="text-align: center;">
				<code>5</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>Author</code>
			</td>
			<td style="text-align: center;">
				<code>.fancy-button</code>
			</td>
			<td style="text-align: center;">
				<code>background-color</code>
			</td>
			<td style="text-align: center;">
				<code>rgb(0,255,0)</code>
			</td>
			<td style="text-align: center;">
				<code>0 1 0 0 0</code>
			</td>
			<td style="text-align: center;">
				<code>0</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>Author</code>
			</td>
			<td style="text-align: center;">
				<code>.fancy-button</code>
			</td>
			<td style="text-align: center;">
				<code>border-width</code>
			</td>
			<td style="text-align: center;">
				<code>3px</code>
			</td>
			<td style="text-align: center;">
				<code>0 1 0 0 0</code>
			</td>
			<td style="text-align: center;">
				<code>1</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>Author</code>
			</td>
			<td style="text-align: center;">
				<code>.fancy-button</code>
			</td>
			<td style="text-align: center;">
				<code>border-style</code>
			</td>
			<td style="text-align: center;">
				<code>solid</code>
			</td>
			<td style="text-align: center;">
				<code>0 1 0 0 0</code>
			</td>
			<td style="text-align: center;">
				<code>2</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>Author</code>
			</td>
			<td style="text-align: center;">
				<code>.fancy-button</code>
			</td>
			<td style="text-align: center;">
				<code>border-color</code>
			</td>
			<td style="text-align: center;">
				<code>rgb(255,0,0)</code>
			</td>
			<td style="text-align: center;">
				<code>0 1 0 0 0</code>
			</td>
			<td style="text-align: center;">
				<code>3</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>Author</code>
			</td>
			<td style="text-align: center;">
				<code>.fancy-button</code>
			</td>
			<td style="text-align: center;">
				<code>font-size</code>
			</td>
			<td style="text-align: center;">
				<code>16px</code>
			</td>
			<td style="text-align: center;">
				<code>0 1 0 0 0</code>
			</td>
			<td style="text-align: center;">
				<code>4</code>
			</td>
		</tr>
</tbody>
</table>
<p>
	ينتج عما سبق القيم والخصائص التي سوف تُستخدم للصنف <code>fancy-button.</code> (كلما كان ترتيبه في الجدول "أعلى" على كلما كان أفضل)، فعلى سبيل المثال، نلاحظ من الجدول السابق أن إعدادات تفضيلات متصفح المستخدم لها أولوية على تنسيق المطوّر.
</p>

<p>
	يتحرى المتصفح الآن عن جميع عناصر DOM المطابقة للمحدّدات المذكورة سابقًا ويعطّل التنسيقات المحسوبة الناتجة عن العناصر المطابقة، لتكون عناصر الوسم <code>div</code> في هذه الحالة كالتالي:
</p>

<table>
<thead><tr>
<th>
				الخاصية
			</th>
			<th>
				القيمة
			</th>
		</tr></thead>
<tbody>
<tr>
<td style="text-align: center;">
				<code>font-size</code>
			</td>
			<td style="text-align: center;">
				<code>32px</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>background-color</code>
			</td>
			<td style="text-align: center;">
				<code>rgb(255,255,0)</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>border-width</code>
			</td>
			<td style="text-align: center;">
				<code>3px</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>border-color</code>
			</td>
			<td style="text-align: center;">
				<code>rgb(255,0,0)</code>
			</td>
		</tr>
<tr>
<td style="text-align: center;">
				<code>border-style</code>
			</td>
			<td style="text-align: center;">
				<code>solid</code>
			</td>
		</tr>
</tbody>
</table>
<p>
	للتعرّف على المزيد عن آلية عمل توريث التنسيق، ألقِ نظرةً على <a data-ss1628953112="1" href="https://www.w3.org/TR/css-cascade-4/#cascading" rel="external nofollow">التوثيق الرسمي</a>.
</p>

<h3>
	نموذج كائن CSS
</h3>

<p>
	لقد قُطع شوطٌ طويلٌ للوصول لهذه المرحلة ولكن لم تنته بعد، ويجب الآن تحديث <a data-ss1628953112="1" href="https://developer.mozilla.org/en-US/docs/Web/API/CSS_Object_Model" rel="external nofollow">نموذج CSSOM</a> الموجود ضمن <code>document.stylesheets</code> لكي يُمثل جميع ما حُلّل وحُسِب حتى هذه النقطة.
</p>

<p>
	يستخدم مطورو الويب هذه المعلومة دون إدراكهم لها، فمثلًا عند استدعاء <code>getComputedStyle()‎</code>، سوف تُفعّل العملية المذكورة سابقًا عند الضرورة.
</p>

<h2>
	التخطيط Layout
</h2>

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

<p>
	سيُغطي هذا القسم مبادئ مخطط CSS التالية:
</p>

<ul>
<li>
		تنسيق المحتوى Formatting Context إذ توجد عدة أنواعٍ لتنسيق المحتوى يستدعيها المطور من خلال قيمة <code>display</code> للعنصر، ومن أكثر هذه التنسيقات استخدامًا نجد الكتلة Block والمرن flex والشبكة grid، وخلايا الجدول table-cells والمُضمنة سطريًا inline، كما يُمكن لتنسيقات CSS أخرى فرض صيغة التنسيق أيضًا، مثل <code>position: absolute</code> أو باستخدام <code>float</code> أو باستخدام أعمدة متعددة.
	</li>
	<li>
		كتلة الاحتواء Containing block وهي عبارة عن كتلة أب تستقي التنسيقات منها.
	</li>
	<li>
		الاتجاه المُضمن سطريًا Inline direction وهو يمثّل الاتجاه الذي يُكتب به النص اعتمادًا على نمط الكتابة للعنصر، فمثلًا هو عبارة عن المحور الأفقي في الكتابة العربية، أما عند الكتابة باللغة الصينية فهو المحور الأفقي.
	</li>
	<li>
		اتجاه الكتلة Block direction والذي يُماثل عمل الاتجاه المُضمن سطريًا، ولكنه يكون عموديًا على ذلك المحور، وبالتالي يكون محوره في الكتابة العربية هو المحور العمودي، بينما يكون محوره هو الأفقي عند الكتابة باللغة الصينية.
	</li>
</ul>
<h3>
	تفسير قيم الأبعاد التلقائية auto
</h3>

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

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_20" style="">
<span class="tag">&lt;body&gt;</span><span class="pln">
</span><span class="tag">&lt;p&gt;</span><span class="pln">Hello World</span><span class="tag">&lt;/p&gt;</span><span class="pln">
</span><span class="tag">&lt;style&gt;</span><span class="pln">
    body </span><span class="pun">{</span><span class="pln">
        width</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><span class="pln">
</span><span class="tag">&lt;/style&gt;</span><span class="pln">
</span><span class="tag">&lt;/body&gt;</span></pre>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="72159" data-ss1628953112="1" href="https://academy.hsoub.com/uploads/monthly_2021_07/002_css_bracestopixels.png.cc3b5ec030529a6761c0d185bf865ad2.png" rel=""><img alt="002_css_bracestopixels.png" class="ipsImage ipsImage_thumbnailed" data-fileid="72159" data-unique="yv2bnkr7q" src="https://academy.hsoub.com/uploads/monthly_2021_07/002_css_bracestopixels.png.cc3b5ec030529a6761c0d185bf865ad2.png"></a>
</p>

<p>
	يبدأ المتصفح بعنصر <code>body</code> الرئيسي، حيث يُنشئ الصندوق المبدئي الذي يملك عرضًا بقيمة 50 بكسل وارتفاعًا افتراضيًا <code>auto</code>.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="72160" data-ss1628953112="1" href="https://academy.hsoub.com/uploads/monthly_2021_07/003_css_bracestopixels.png.bc25cee8d8d006b7a67c1cbbe8e1897d.png" rel=""><img alt="003_css_bracestopixels.png" class="ipsImage ipsImage_thumbnailed" data-fileid="72160" data-unique="7o81j2p2b" src="https://academy.hsoub.com/uploads/monthly_2021_07/003_css_bracestopixels.png.bc25cee8d8d006b7a67c1cbbe8e1897d.png"></a>
</p>

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="72161" data-ss1628953112="1" href="https://academy.hsoub.com/uploads/monthly_2021_07/004_css_bracestopixels.png.1da02ad5e7716315a3108b3718f53579.png" rel=""><img alt="004_css_bracestopixels.png" class="ipsImage ipsImage_thumbnailed" data-fileid="72161" data-unique="2oc1z9vy6" src="https://academy.hsoub.com/uploads/monthly_2021_07/004_css_bracestopixels.png.1da02ad5e7716315a3108b3718f53579.png"></a>
</p>

<p>
	ينتقل المتصفح الآن للنص "Hello World"، وهو عبارة عن عقدة نصية في DOM وبناءً عليها يُنشأ صندوقًا سطريًا داخل المخطط، حيث يُلاحظ خروج النص عن حدود عنصر <code>body</code>، وهذا ما ستُعالجه الخطوة اللاحقة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="72162" data-ss1628953112="1" href="https://academy.hsoub.com/uploads/monthly_2021_07/005_css_bracestopixels.png.a684dd7dbd35c2dc2f3f2d2c07e356de.png" rel=""><img alt="005_css_bracestopixels.png" class="ipsImage ipsImage_thumbnailed" data-fileid="72162" data-unique="541f0lzvj" src="https://academy.hsoub.com/uploads/monthly_2021_07/005_css_bracestopixels.png.a684dd7dbd35c2dc2f3f2d2c07e356de.png"></a>
</p>

<p>
	يعود المحرك إلى العنصر الأب عند إهمال عملية تخطيط النص، وذلك لأن كلمة "World" لا تتسع في الصندوق ولم تُغّير القيمة الافتراضية للخاصية <code>overflow</code>.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="72163" data-ss1628953112="1" href="https://academy.hsoub.com/uploads/monthly_2021_07/006_css_bracestopixels.png.d9ecf13fdb5b137b3ece9d6b524af6b6.png" rel=""><img alt="006_css_bracestopixels.png" class="ipsImage ipsImage_thumbnailed" data-fileid="72163" data-unique="n0s9rwvrv" src="https://academy.hsoub.com/uploads/monthly_2021_07/006_css_bracestopixels.png.d9ecf13fdb5b137b3ece9d6b524af6b6.png"></a>
</p>

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

<p>
	بعد الانتهاء من المُخطط سوف يمر المتصفح على جميع عناصر شجرة الصندوق ليُفسر أيًّا من قيمة <code>auto</code> أو قيمة مئوية لم تُفسر بعد. تستطيع أن تلاحظ في الصورة أعلاه أن المقطع و<code>body</code> الآن يحتويان كامل العبارة بسبب ضبط الارتفاع <code>height</code> إلى القيمة <code>auto</code>.
</p>

<h3>
	التعامل مع العومان float
</h3>

<p>
	سننتقل الآن لأمورٍ أكثر تعقيدًا. بفرض لدينا مُخططًا عاديًا، وزرًا يحوي عبارة "Share It" وقيمة <code>float</code> تُشير إلى يسار مقطع النص الأجنبي. تعتمد خاصية العوم <code>float</code> على مبدأ " تقلص لتُناسب shrink-to-fit" حتى يتسع المحتوى، حيث يصغر الصندوق حتى حجم مُناسب للإحاطة بمحتواه إذا كانت أبعاده <code>auto</code>. توجد صناديق أخرى مماثلة لصندوق<code>float</code> مثل الصناديق ذات الموقع <code>absolute</code> بما فيها العناصر ذات الموقع الثابت <code>fixed</code>، وخلايا الجدول ذات الحجم <code>auto</code>.
</p>

<p>
	ألقِ نظرةً على الشيفرة التابعة للزر السابق.
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_18" style="">
<span class="tag">&lt;article&gt;</span><span class="pln">
    </span><span class="tag">&lt;button&gt;</span><span class="pln">SHARE IT</span><span class="tag">&lt;/button&gt;</span><span class="pln">
    </span><span class="tag">&lt;p&gt;</span><span class="pln">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam pellentesq</span><span class="tag">&lt;/p&gt;</span><span class="pln">
</span><span class="tag">&lt;/article&gt;</span><span class="pln">
</span><span class="tag">&lt;style&gt;</span><span class="pln">
    article </span><span class="pun">{</span><span class="pln">
        min</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">400px</span><span class="pun">;</span><span class="pln">
        max</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">800px</span><span class="pun">;</span><span class="pln">
        background</span><span class="pun">:</span><span class="pln"> rgb</span><span class="pun">(</span><span class="lit">191</span><span class="pun">,</span><span class="pln"> </span><span class="lit">191</span><span class="pun">,</span><span class="pln"> </span><span class="lit">191</span><span class="pun">);</span><span class="pln">
        padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">5px</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

    button </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">
        background</span><span class="pun">:</span><span class="pln"> rgb</span><span class="pun">(</span><span class="lit">210</span><span class="pun">,</span><span class="pln"> </span><span class="lit">32</span><span class="pun">,</span><span class="pln"> </span><span class="lit">79</span><span class="pun">);</span><span class="pln">
        padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3px</span><span class="pln"> </span><span class="lit">10px</span><span class="pun">;</span><span class="pln">
        border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2px</span><span class="pln"> solid black</span><span class="pun">;</span><span class="pln">
        margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">5px</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><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">0</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span></pre>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="72164" data-ss1628953112="1" href="https://academy.hsoub.com/uploads/monthly_2021_07/007_css_bracestopixels.png.445a1810dce31eb9b85464e90b8252b7.png" rel=""><img alt="007_css_bracestopixels.png" class="ipsImage ipsImage_thumbnailed" data-fileid="72164" data-unique="bkef14n1q" src="https://academy.hsoub.com/uploads/monthly_2021_07/007_css_bracestopixels.png.445a1810dce31eb9b85464e90b8252b7.png"></a>
</p>

<p>
	تبدأ العملية هنا كما في المثال السابق "Hello World"، لذلك سنتجاوز هذه المرحلة وصولًا إلى مرحلة معالجة الزر العائم.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="72165" data-ss1628953112="1" href="https://academy.hsoub.com/uploads/monthly_2021_07/008_css_bracestopixels.png.8de57deacb3385782bedadd7d19fcc18.png" rel=""><img alt="008_css_bracestopixels.png" class="ipsImage ipsImage_thumbnailed" data-fileid="72165" data-unique="lxlya05bv" src="https://academy.hsoub.com/uploads/monthly_2021_07/008_css_bracestopixels.png.8de57deacb3385782bedadd7d19fcc18.png"></a>
</p>

<p>
	تُنشئ خاصية <code>float</code> كتلة تنسيق محتوى جديدة Block Formatting Context أو اختصارًا BFC، وهي كتلة تتقلص لتحيط بالمحتوى، لذلك يعمل المتصفح على نوع مُخطط مُعين يُدعى قياس المحتوى content measure، حيث يبدو هذا المخطط في هذا النمط مُماثلًا لبقية المُخططات، ولكن مع اختلافٍ مهمٍ هو أنه أُنشئ في مساحةٍ لا نهائية.
</p>

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

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

	<p>
		<strong>ملاحظة</strong>: اللون المُستخدم للأزرار هنا للتوضيح فقط.
	</p>
</blockquote>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="72166" data-ss1628953112="1" href="https://academy.hsoub.com/uploads/monthly_2021_07/009_css_bracestopixels.png.94f1c7a856fca139e77c7d1210074fba.png" rel=""><img alt="009_css_bracestopixels.png" class="ipsImage ipsImage_thumbnailed" data-fileid="72166" data-unique="sv08cjz7f" src="https://academy.hsoub.com/uploads/monthly_2021_07/009_css_bracestopixels.png.94f1c7a856fca139e77c7d1210074fba.png"></a>
</p>

<p>
	يعلم محرك المتصفح الآن أن العرض الأصغري هو 86 بكسل والأعظمي 115 بكسل، وسوف يُمرر هذه المعلومات للصندوق الأب ليُقرر العرض ويحدد الموقع الصحيح للزر.
</p>

<p>
	توجد مساحة في هذا المثال تتسع لنمط float بحجمه الأعظمي وهو الحجم الذي سيُعرض به الزر.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="72167" data-ss1628953112="1" href="https://academy.hsoub.com/uploads/monthly_2021_07/010_css_bracestopixels.png.2917521d901e25a98691b21405bde88f.png" rel=""><img alt="010_css_bracestopixels.png" class="ipsImage ipsImage_thumbnailed" data-fileid="72167" data-unique="jofvirdpe" src="https://academy.hsoub.com/uploads/monthly_2021_07/010_css_bracestopixels.png.2917521d901e25a98691b21405bde88f.png"></a>
</p>

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="72168" data-ss1628953112="1" href="https://academy.hsoub.com/uploads/monthly_2021_07/011_css_bracestopixels.png.0600f40cf508186aed6bb9146428cbc4.png" rel=""><img alt="011_css_bracestopixels.png" class="ipsImage ipsImage_thumbnailed" data-fileid="72168" data-unique="wurrtsp7t" src="https://academy.hsoub.com/uploads/monthly_2021_07/011_css_bracestopixels.png.0600f40cf508186aed6bb9146428cbc4.png"></a>
</p>

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="72169" data-ss1628953112="1" href="https://academy.hsoub.com/uploads/monthly_2021_07/012_css_bracestopixels.png.336aa9791ce9efe6563021d5323da266.png" rel=""><img alt="012_css_bracestopixels.png" class="ipsImage ipsImage_thumbnailed" data-fileid="72169" data-unique="z9n06pvz9" src="https://academy.hsoub.com/uploads/monthly_2021_07/012_css_bracestopixels.png.336aa9791ce9efe6563021d5323da266.png"></a>
</p>

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

<h3>
	فهم عملية التجزئة Fragmentation
</h3>

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

<p>
	لفهم الأمر، ألقِ نظرةً على نفس المثال الذي يستخدم CSS متعدد الأعمدة.
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_8" style="">
<span class="tag">&lt;body&gt;</span><span class="pln">
    </span><span class="tag">&lt;div&gt;</span><span class="pln">
        </span><span class="tag">&lt;p&gt;</span><span class="pln">
          Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras nibh orci, tincidunt eget enim et, pellentesque condimentum risus. Aenean sollicitudin risus velit, quis tempor leo malesuada vel. Donec consequat aliquet mauris. Vestibulum ante ipsum primis in faucibus
        </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;style&gt;</span><span class="pln">
    body </span><span class="pun">{</span><span class="pln">
        columns</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2</span><span class="pun">;</span><span class="pln">
        column</span><span class="pun">-</span><span class="pln">fill</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">auto</span><span class="pun">;</span><span class="pln">
        height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">300px</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span><span class="pln">
</span><span class="tag">&lt;/body&gt;</span></pre>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="72170" data-ss1628953112="1" href="https://academy.hsoub.com/uploads/monthly_2021_07/013_css_bracestopixels.png.6110d4d7c3a4aa12446dc0651cbfb491.png" rel=""><img alt="013_css_bracestopixels.png" class="ipsImage ipsImage_thumbnailed" data-fileid="72170" data-unique="9snzkixzk" src="https://academy.hsoub.com/uploads/monthly_2021_07/013_css_bracestopixels.png.6110d4d7c3a4aa12446dc0651cbfb491.png"></a>
</p>

<p>
	حالما يصل المتصفح لصندوق محتوى التنسيق متعدد الأعمدة، سيلاحظ وجود مجموعةٍ من الأعمدة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="72171" data-ss1628953112="1" href="https://academy.hsoub.com/uploads/monthly_2021_07/014_css_bracestopixels.png.1cc056fd0b4e58ddd3ff57f762e2c2aa.png" rel=""><img alt="014_css_bracestopixels.png" class="ipsImage ipsImage_thumbnailed" data-fileid="72171" data-unique="e3znbc7cj" src="https://academy.hsoub.com/uploads/monthly_2021_07/014_css_bracestopixels.png.1cc056fd0b4e58ddd3ff57f762e2c2aa.png"></a>
</p>

<p>
	سوف يتبع نفس نموذج الاستنساخ كما في السابق، ثم يُنشئ مُجزّأةً بأبعادٍ صحيحةٍ ليُنفذ رغبة المؤلف بما يخص الأعمدة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="72172" data-ss1628953112="1" href="https://academy.hsoub.com/uploads/monthly_2021_07/015_css_bracestopixels.png.3af4ccf334aa30fef556feddeaa093da.png" rel=""><img alt="015_css_bracestopixels.png" class="ipsImage ipsImage_thumbnailed" data-fileid="72172" data-unique="znrehd56t" src="https://academy.hsoub.com/uploads/monthly_2021_07/015_css_bracestopixels.png.3af4ccf334aa30fef556feddeaa093da.png"></a>
</p>

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

<h2>
	الرسم
</h2>

<p>
	تحدثنا حتى الآن عن كامل محتوى CSS وتحليله وتوريثه ضمن شجرة DOM والمخطط الكامل، لكننا لم نتحدث عن تطبيق اللون أو الحدود أو الظلال وما شابهها من تصميمٍ للمخطط، ويُدعى ما سبق من أمور بالرسم.
</p>

<p>
	توجد معايير للرسم في تنسيقات CSS، وتستطيع قراءة شرح كامل ضمن <a data-ss1628953112="1" href="https://www.w3.org/TR/CSS22/zindex.html#painting-order" rel="external nofollow">CSS 2.2 Appendix E</a>.
</p>

<p>
	تتبع عملية الرسم الترتيب التالي:
</p>

<ul>
<li>
		الخلفية
	</li>
	<li>
		الحدود
	</li>
	<li>
		المحتوى
	</li>
</ul>
<p>
	بالتالي إذا عُدنا لزر "Share it" السابق واتّبعنا نفس العملية، فسوف تسير بالترتيب الموّضح في الشكل التالي.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="72173" data-ss1628953112="1" href="https://academy.hsoub.com/uploads/monthly_2021_07/016_css_bracestopixels.png.792b8c3fbc1a7dd45ec027bd28aab680.png" rel=""><img alt="016_css_bracestopixels.png" class="ipsImage ipsImage_thumbnailed" data-fileid="72173" data-unique="qhhvdrbps" src="https://academy.hsoub.com/uploads/monthly_2021_07/016_css_bracestopixels.png.792b8c3fbc1a7dd45ec027bd28aab680.png"></a>
</p>

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

<h3>
	خاصية تكديس المحتوى
</h3>

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

<p>
	إن إنشاء محتوى مُكدس جديد يُغير ترتيب رسم العناصر، ألقِ نظرةً على المثال التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_15" 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">id</span><span class="pun">=</span><span class="atv">"one"</span><span class="tag">&gt;</span><span class="pln">
    Item 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">id</span><span class="pun">=</span><span class="atv">"two"</span><span class="tag">&gt;</span><span class="pln">
    Item 2
</span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="tag">&lt;style&gt;</span><span class="pln">
body </span><span class="pun">{</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> lightgray</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
div </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">300px</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">300px</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">
    background</span><span class="pun">:</span><span class="pln"> white</span><span class="pun">;</span><span class="pln">
    z</span><span class="pun">-</span><span class="pln">index</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="com">#two {</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> green</span><span class="pun">;</span><span class="pln">
    z</span><span class="pun">-</span><span class="pln">index</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span><span class="pln">
</span><span class="tag">&lt;/body&gt;</span></pre>

<p>
	سوف يُرسم الملف السابق حسب ترتيب ورود العناصر دون استخدام <code>z-index</code> أي أنه سيرسم "item2" فوق "item1"، ولكن عند استخدام <code>z-index</code>، يتغير ترتيب الرسم.
</p>

<p>
	ستُشرح كل خطوة كما هو الحال في الأمثلة السابقة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="72174" data-ss1628953112="1" href="https://academy.hsoub.com/uploads/monthly_2021_07/017_css_bracestopixels.png.4b888dbb3dbb31d80a9b1af233a452ca.png" rel=""><img alt="017_css_bracestopixels.png" class="ipsImage ipsImage_thumbnailed" data-fileid="72174" data-unique="zvj9tmlam" src="https://academy.hsoub.com/uploads/monthly_2021_07/017_css_bracestopixels.png.4b888dbb3dbb31d80a9b1af233a452ca.png"></a>
</p>

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="72175" data-ss1628953112="1" href="https://academy.hsoub.com/uploads/monthly_2021_07/018_css_bracestopixels.png.29c1bea38d4e80bcd33ee2963807e17c.png" rel=""><img alt="018_css_bracestopixels.png" class="ipsImage ipsImage_thumbnailed" data-fileid="72175" data-unique="i8rlkejtf" src="https://academy.hsoub.com/uploads/monthly_2021_07/018_css_bracestopixels.png.29c1bea38d4e80bcd33ee2963807e17c.png"></a>
</p>

<p>
	يتجاوز المتصفح ترتيب العناصر في الملف ليبدأ بأدنى مستوى في المحتوى المُكدّس (في هذه الحالة هو العنصر "item2")، ثم يبدأ برسم العنصر التالي متّبعًا نفس القواعد السابقة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="72176" data-ss1628953112="1" href="https://academy.hsoub.com/uploads/monthly_2021_07/019_css_bracestopixels.png.f8fa706e274590711175526806b1bf51.png" rel=""><img alt="019_css_bracestopixels.png" class="ipsImage ipsImage_thumbnailed" data-fileid="72176" data-unique="n9j80oiv8" src="https://academy.hsoub.com/uploads/monthly_2021_07/019_css_bracestopixels.png.f8fa706e274590711175526806b1bf51.png"></a>
</p>

<p>
	ينتقل المتصفح الآن للمستوى الأعلى للمحتوى المُدّكس (وهو "item1" في هذه الحالة)، ثم يرسم هذا العنصر معتمدًا على الترتيب المُعرف في CSS 2.2.
</p>

<p>
	لا يأخذ <code>z-index</code> اللون بالحسبان، بل هو مسؤول فقط عن العنصر المرئي بالنسبة للمستخدِم وبالتالي النص واللون الظاهرين له.
</p>

<h3>
	التكون Composition
</h3>

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

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

<p>
	ستكون الشيفرة لهذا القسم والذي يُدعى Clippy كالتالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_13" style="">
<span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"clippy"</span><span class="tag">&gt;&lt;/div&gt;</span><span class="pln">
</span><span class="tag">&lt;style&gt;</span><span class="pln">
</span><span class="pun">.</span><span class="pln">clippy </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
    animation</span><span class="pun">:</span><span class="pln"> pulse </span><span class="lit">1s</span><span class="pln"> infinite</span><span class="pun">;</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> url</span><span class="pun">(</span><span class="pln">clippy</span><span class="pun">.</span><span class="pln">svg</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="lit">@keyframes</span><span class="pln"> pulse </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">from</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        transform</span><span class="pun">:</span><span class="pln"> scale</span><span class="pun">(</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    to </span><span class="pun">{</span><span class="pln">
        transform</span><span class="pun">:</span><span class="pln"> scale</span><span class="pun">(</span><span class="lit">2</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</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;/style&gt;</span></pre>

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

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="72177" data-ss1628953112="1" href="https://academy.hsoub.com/uploads/monthly_2021_07/020_css_bracestopixels.png.162b2c391ea85934dc4c8d3fe3521f57.png" rel=""><img alt="020_css_bracestopixels.png" class="ipsImage ipsImage_thumbnailed" data-fileid="72177" data-unique="3gx6g5ih4" src="https://academy.hsoub.com/uploads/monthly_2021_07/020_css_bracestopixels.png.162b2c391ea85934dc4c8d3fe3521f57.png"></a>
</p>

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

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="72178" data-ss1628953112="1" href="https://academy.hsoub.com/uploads/monthly_2021_07/021_css_bracestopixels.png.123d7146140e14b77f6ebf5c08374d9f.png" rel=""><img alt="021_css_bracestopixels.png" class="ipsImage ipsImage_thumbnailed" data-fileid="72178" data-unique="oe5r8sm3t" src="https://academy.hsoub.com/uploads/monthly_2021_07/021_css_bracestopixels.png.123d7146140e14b77f6ebf5c08374d9f.png"></a>
</p>

<h2>
	تطبيق وهم التفاعلية
</h2>

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

<p>
	ألقِ نظرة على المثال التالي الذي سوف نستخدم ضمنه زر Share it بإسلوبٍ متجانسٍ تفاعلي.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_2185_24" style="">
<span class="pln">button </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">
    background</span><span class="pun">:</span><span class="pln"> rgb</span><span class="pun">(</span><span class="lit">210</span><span class="pun">,</span><span class="pln"> </span><span class="lit">32</span><span class="pun">,</span><span class="pln"> </span><span class="lit">79</span><span class="pun">);</span><span class="pln">
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3px</span><span class="pln"> </span><span class="lit">10px</span><span class="pun">;</span><span class="pln">
    border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2px</span><span class="pln"> solid black</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

button</span><span class="pun">:</span><span class="pln">hover </span><span class="pun">{</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> teal</span><span class="pun">;</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> black</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

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

<p>
	يتتبع المتصفح مجموعةً متنوعةً من المُدخلات تمر بعملية تُدعى <code>hit testing</code> أثناء تغيّرها، وتبدو العملية للمثال السابق كالتالي.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="72179" data-ss1628953112="1" href="https://academy.hsoub.com/uploads/monthly_2021_07/022_css_bracestopixels.png.88b0b730d3b14aaa26b47d362e6fa56e.png" rel=""><img alt="022_css_bracestopixels.png" class="ipsImage ipsImage_thumbnailed" data-fileid="72179" data-unique="v9z3cq4bv" src="https://academy.hsoub.com/uploads/monthly_2021_07/022_css_bracestopixels.png.88b0b730d3b14aaa26b47d362e6fa56e.png"></a>
</p>

<ol>
<li>
		يحرك المستخدم الفأرة فوق الزر.
	</li>
	<li>
		يرفع المتصفح حدث event يُخبر بأن الفأرة قد تحركت لتدخل خوارزمية hit testing، والتي تسأل ما يلي "ما هو الصندوق أو الصناديق التي تلمسها الفأرة؟"
	</li>
	<li>
		تُعيد الخوارزمية الصندوق المرتبط بزر Share it.
	</li>
	<li>
		يسأل المتصفح نفسه "هل يجب أن أفعل أي شيءٍ طالما أن الفأرة تتحرك فوق هذا الصندوق؟"
	</li>
	<li>
		يُشغل المتصفح بسرعة التنسيقات والتوريث لهذا الصندوق وأبنائه ليُقرر وجود شبه صنف <code>hover:</code> مع تعديلات رسم للتنسيق فقط ضمن هذه الكتلة.
	</li>
	<li>
		يعلق المتصفح هذه التنسيقات في عنصر DOM (كما هو الحال في مرحلة التوريث) وهو الزر في هذه الحالة.
	</li>
	<li>
		يتجاوز المتصفح المخطط السابق ويرسم مباشرةً صورةً نقطيةً جديدة.
	</li>
	<li>
		تُمرر الصورة النقطية الجديدة للمكوّن ثم إلى المستخدم.
	</li>
</ol>
<p>
	ينتج عن العملية السابقة إيهام المستخدم بوجود تفاعلية بالرغم من أن المتصفح يستبدل فقط صورة برتقالية بصورة خضراء.
</p>

<h2>
	الخلاصة
</h2>

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

<p>
	ترجمة -وبتصرّف- للمقال <a data-ss1628953112="1" href="https://alistapart.com/article/braces-to-pixels/" rel="external nofollow">Braces to Pixels</a> لصاحبه Greg Whitwort.
</p>

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

<ul>
<li>
		<a data-ss1628953112="1" href="https://academy.hsoub.com/programming/css/%D8%AA%D9%86%D8%B3%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%AA%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%AE%D8%B5%D8%B5%D8%A9-%D9%88%D8%AF%D8%B9%D9%85%D9%87%D8%A7-%D9%88%D8%A3%D8%AF%D8%A7%D8%A1%D9%87%D8%A7-%D9%81%D9%8A-css-r1061/" rel="">تنسيقات المتصفحات المخصصة ودعمها وأداءها في CSS</a>
	</li>
	<li>
		<a data-ss1628953112="1" href="https://academy.hsoub.com/programming/css/%D8%AA%D9%86%D8%B3%D9%8A%D9%82-%D8%A7%D9%84%D8%B5%D9%88%D8%B1-%D9%81%D9%8A-css-r1056/" rel="">تنسيق الصور في CSS</a>
	</li>
	<li>
		<a data-ss1628953112="1" href="https://academy.hsoub.com/programming/css/%D8%A7%D9%84%D8%AA%D9%86%D8%B3%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A9-%D9%84%D9%84%D8%B9%D9%86%D8%A7%D8%B5%D8%B1-%D9%81%D9%8A-css-r1054/" rel="">التنسيقات الأساسية للعناصر في CSS</a>
	</li>
	<li>
		<a data-ss1628953112="1" href="https://academy.hsoub.com/programming/css/%D8%AA%D9%86%D8%B3%D9%8A%D9%82-%D8%A7%D9%84%D8%AE%D9%84%D9%81%D9%8A%D8%A7%D8%AA-backgrounds-%D9%81%D9%8A-css-r1055/" rel="">تنسيق الخلفيات Backgrounds في CSS</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1269</guid><pubDate>Fri, 02 Jul 2021 15:00:00 +0000</pubDate></item><item><title>&#x62A;&#x646;&#x633;&#x64A;&#x642;&#x627;&#x62A; &#x627;&#x644;&#x645;&#x62A;&#x635;&#x641;&#x62D;&#x627;&#x62A; &#x627;&#x644;&#x645;&#x62E;&#x635;&#x635;&#x629; &#x648;&#x62F;&#x639;&#x645;&#x647;&#x627; &#x648;&#x623;&#x62F;&#x627;&#x621;&#x647;&#x627; &#x641;&#x64A; CSS</title><link>https://academy.hsoub.com/programming/css/%D8%AA%D9%86%D8%B3%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%AA%D8%B5%D9%81%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D9%85%D8%AE%D8%B5%D8%B5%D8%A9-%D9%88%D8%AF%D8%B9%D9%85%D9%87%D8%A7-%D9%88%D8%A3%D8%AF%D8%A7%D8%A1%D9%87%D8%A7-%D9%81%D9%8A-css-r1061/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2020_11/12.png.9e13b146f17ed3de9008dd3ad7aa82d4.png" /></p>

<p>
	تُضيف المتصفحات تلقائيًا بعض الأنماط على عناصر HTML، وتختلف هذه الأنماط باختلاف المتصفح مما يتسبب في ظهور الصفحة بأشكال مختلفة عند عرضها على متصفحات مختلفة، ولتفادي هذا الأمر يجب توحيد أنماط المتصفحات، ومن الشائع استخدام مكتبة <a href="http://necolas.github.io/normalize.css/" rel="external nofollow">normalize.css</a> والتي تضبط بعض الأنماط وتُصحح بعض الأخطاء الشائعة في بعض المتصفحات.
</p>

<h2>
	الفرق بين normalize.css و reset.css
</h2>

<p>
	الفرق الأساسي بين مكتبة normalize.css ومكتبة reset.css هو أن الأولى تضبط بعض الأنماط لتوحيدها في جميع المتصفحات، بينما تُزيل الثانية جميع الأنماط الافتراضية من العناصر، مما يعني أنك ستضطر لكتابة جميع القواعد من الصفر.
</p>

<p>
	<strong>مثال: استخدام Eric Meyer's reset.css</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_2729_7" style="">
<span class="pln">html</span><span class="pun">,</span><span class="pln"> body</span><span class="pun">,</span><span class="pln"> div</span><span class="pun">,</span><span class="pln"> span</span><span class="pun">,</span><span class="pln"> applet</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">object</span><span class="pun">,</span><span class="pln"> iframe</span><span class="pun">,</span><span class="pln">
h1</span><span class="pun">,</span><span class="pln"> h2</span><span class="pun">,</span><span class="pln"> h3</span><span class="pun">,</span><span class="pln"> h4</span><span class="pun">,</span><span class="pln"> h5</span><span class="pun">,</span><span class="pln"> h6</span><span class="pun">,</span><span class="pln"> p</span><span class="pun">,</span><span class="pln"> blockquote</span><span class="pun">,</span><span class="pln"> pre</span><span class="pun">,</span><span class="pln">
a</span><span class="pun">,</span><span class="pln"> abbr</span><span class="pun">,</span><span class="pln"> acronym</span><span class="pun">,</span><span class="pln"> address</span><span class="pun">,</span><span class="pln"> big</span><span class="pun">,</span><span class="pln"> cite</span><span class="pun">,</span><span class="pln"> code</span><span class="pun">,</span><span class="pln">
</span><span class="kwd">del</span><span class="pun">,</span><span class="pln"> dfn</span><span class="pun">,</span><span class="pln"> em</span><span class="pun">,</span><span class="pln"> img</span><span class="pun">,</span><span class="pln"> ins</span><span class="pun">,</span><span class="pln"> kbd</span><span class="pun">,</span><span class="pln"> q</span><span class="pun">,</span><span class="pln"> s</span><span class="pun">,</span><span class="pln"> samp</span><span class="pun">,</span><span class="pln">
small</span><span class="pun">,</span><span class="pln"> strike</span><span class="pun">,</span><span class="pln"> strong</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">sub</span><span class="pun">,</span><span class="pln"> sup</span><span class="pun">,</span><span class="pln"> tt</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">var</span><span class="pun">,</span><span class="pln">
b</span><span class="pun">,</span><span class="pln"> u</span><span class="pun">,</span><span class="pln"> i</span><span class="pun">,</span><span class="pln"> center</span><span class="pun">,</span><span class="pln">
dl</span><span class="pun">,</span><span class="pln"> dt</span><span class="pun">,</span><span class="pln"> dd</span><span class="pun">,</span><span class="pln"> ol</span><span class="pun">,</span><span class="pln"> ul</span><span class="pun">,</span><span class="pln"> li</span><span class="pun">,</span><span class="pln">
fieldset</span><span class="pun">,</span><span class="pln"> form</span><span class="pun">,</span><span class="pln"> label</span><span class="pun">,</span><span class="pln"> legend</span><span class="pun">,</span><span class="pln">
table</span><span class="pun">,</span><span class="pln"> caption</span><span class="pun">,</span><span class="pln"> tbody</span><span class="pun">,</span><span class="pln"> tfoot</span><span class="pun">,</span><span class="pln"> thead</span><span class="pun">,</span><span class="pln"> tr</span><span class="pun">,</span><span class="pln"> th</span><span class="pun">,</span><span class="pln"> td</span><span class="pun">,</span><span class="typ">GoalKicker</span><span class="pun">.</span><span class="pln">com </span><span class="pun">–</span><span class="pln"> CSS </span><span class="typ">Notes</span><span class="pln"> </span><span class="kwd">for</span><span class="pln"> </span><span class="typ">Professionals</span><span class="pln"> </span><span class="lit">224</span><span class="pln">
article</span><span class="pun">,</span><span class="pln"> aside</span><span class="pun">,</span><span class="pln"> canvas</span><span class="pun">,</span><span class="pln"> details</span><span class="pun">,</span><span class="pln"> embed</span><span class="pun">,</span><span class="pln">
figure</span><span class="pun">,</span><span class="pln"> figcaption</span><span class="pun">,</span><span class="pln"> footer</span><span class="pun">,</span><span class="pln"> header</span><span class="pun">,</span><span class="pln"> hgroup</span><span class="pun">,</span><span class="pln">
menu</span><span class="pun">,</span><span class="pln"> nav</span><span class="pun">,</span><span class="pln"> output</span><span class="pun">,</span><span class="pln"> ruby</span><span class="pun">,</span><span class="pln"> section</span><span class="pun">,</span><span class="pln"> summary</span><span class="pun">,</span><span class="pln">
time</span><span class="pun">,</span><span class="pln"> mark</span><span class="pun">,</span><span class="pln"> audio</span><span class="pun">,</span><span class="pln"> video </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">
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</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">100</span><span class="pun">%;</span><span class="pln">
    font</span><span class="pun">:</span><span class="pln"> inherit</span><span class="pun">;</span><span class="pln">
    vertical</span><span class="pun">-</span><span class="pln">align</span><span class="pun">:</span><span class="pln"> baseline</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	<a href="http://meyerweb.com/eric/tools/css/reset/" rel="external nofollow">مزيد من المعلومات حول Eric Meyer's reset.css</a>.
</p>

<p>
	<strong>مثال: استخدام normalize.css</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_2729_9" style="">
<span class="com">/**
* 1. توحيد نوع الخط في جميع المتصفحات
* 2. تصحيح ارتفاع السطر وتوحيده في جميع المتصفحات
* 3. ‫منع تعديل حجم الخط عند تغيير اتجاه العرض في متصفح IE و Safari
*/</span><span class="pln">
</span><span class="com">/* Document
========================================================================== */</span><span class="pln">
html </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"> sans</span><span class="pun">-</span><span class="pln">serif</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* 1 */</span><span class="pln">
    line</span><span class="pun">-</span><span class="pln">height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1.15</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* 2 */</span><span class="pln">
    </span><span class="pun">-</span><span class="pln">ms</span><span class="pun">-</span><span class="pln">text</span><span class="pun">-</span><span class="pln">size</span><span class="pun">-</span><span class="pln">adjust</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%;</span><span class="pln"> </span><span class="com">/* 3 */</span><span class="pln">
    </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">text</span><span class="pun">-</span><span class="pln">size</span><span class="pun">-</span><span class="pln">adjust</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%;</span><span class="pln"> </span><span class="com">/* 3 */</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">/*
========================================================================== */</span><span class="pln">
</span><span class="com">/**
* إزالة الهوامش
*/</span><span class="pln">
body </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="com">/**
* تصحيح طريقة العرض
*/</span><span class="pln">
article</span><span class="pun">,</span><span class="pln">
aside</span><span class="pun">,</span><span class="pln">
footer</span><span class="pun">,</span><span class="pln">
header</span><span class="pun">,</span><span class="pln">
nav</span><span class="pun">,</span><span class="pln">
section </span><span class="pun">{</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> block</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="com">/**
* تصحيح حجم الخط والهوامش
*/</span><span class="pln">
h1 </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">2em</span><span class="pun">;</span><span class="pln">
    margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0.67em</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<h2>
	التحايل على متصفح Internet Explorer
</h2>

<h3>
	دعم القاعدة <code>display: inline-block</code> في متصفح IE6 و IE7
</h3>

<p>
	القاعدة <code>display: inline-block</code> غير مدعومة في متصفحات IE6 و IE7، ولكن من الممكن الحصول على سلوك مماثل لسلوكها عن طريق تطبيق الشيفرة التالية:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_2729_11" style="">
<span class="pln">zoom</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
</span><span class="pun">*</span><span class="pln">display</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">inline</span><span class="pun">;</span></pre>

<ul>
<li>
		تُشغِّل الخاصية zoom ميزة <code>hasLayout</code> للعناصر، وهي متاحة فقط في متصفح Internet Explorer.
	</li>
	<li>
		تُطبق الخاصية <code>display*</code> القاعدة المحددة فقط على المتصفحات التي تتأثر بالخاصية <code>zoom</code>.
	</li>
</ul>
<h2>
	وضع التباين العالي
</h2>

<p>
	أُضيف محدد الوسائط <code>ms-high-contrast-</code> في متصفحات Internet Explorer ابتداءً من الإصدار العاشر والإصدارات التي تليه، مما يسمح للمبرمج بضبط الأنماط بناءّ على ما إذا كان المستخدم يستخدم وضع التباين العالي أم لا.
</p>

<p>
	للمحدد <code>ms-high-contrast-</code> ثلاث حالات هي: <code>active</code>، وblack-on-white<code>، وwhite-on-black</code>.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_2729_13" style="">
<span class="lit">@media</span><span class="pln"> screen </span><span class="kwd">and</span><span class="pln"> </span><span class="pun">(-</span><span class="pln">ms</span><span class="pun">-</span><span class="pln">high</span><span class="pun">-</span><span class="pln">contrast</span><span class="pun">:</span><span class="pln"> active</span><span class="pun">),</span><span class="pln"> </span><span class="pun">(-</span><span class="pln">ms</span><span class="pun">-</span><span class="pln">high</span><span class="pun">-</span><span class="pln">contrast</span><span class="pun">:</span><span class="pln"> black</span><span class="pun">-</span><span class="pln">on</span><span class="pun">-</span><span class="pln">white</span><span class="pun">)</span><span class="pln"> </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">
        background</span><span class="pun">:</span><span class="pln"> </span><span class="com">#fff;</span><span class="pln">
        color</span><span class="pun">:</span><span class="pln"> </span><span class="com">#000;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	في هذا المثال يتغير لون خلفية العنصر <code>header</code> إلى اللون الأبيض ولون الكتابة للون الأسود إذا كان وضع التباين العالي مُفعَّلًا وفي الحالة <code>black-on-white</code>.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5941_7" style="">
<span class="lit">@media</span><span class="pln"> screen </span><span class="kwd">and</span><span class="pln"> </span><span class="pun">(-</span><span class="pln">ms</span><span class="pun">-</span><span class="pln">high</span><span class="pun">-</span><span class="pln">contrast</span><span class="pun">:</span><span class="pln"> white</span><span class="pun">-</span><span class="pln">on</span><span class="pun">-</span><span class="pln">black</span><span class="pun">)</span><span class="pln"> </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">
        background</span><span class="pun">:</span><span class="pln"> </span><span class="com">#000;</span><span class="pln">
        color</span><span class="pun">:</span><span class="pln"> </span><span class="com">#fff;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	في هذا المثال يتغير لون خلفية العنصر <code>header</code> إلى اللون الاسود ولون الكتابة للون الأبيض إذا كان وضع التباين العالي مُفعَّلًا وفي الحالة <code>white-on-black</code>.
</p>

<p>
	لمزيد من المعلومات زر <a href="https://msdn.microsoft.com/en-us/library/windows/apps/hh465764.aspx" rel="external nofollow">توثيق مايكروسوفت</a>.
</p>

<h3>
	استهداف متصفحات IE6 و IE7 فقط
</h3>

<p>
	لاستهداف متصفحات IE6 و IE7 فقط يجب بدء الخواص بالعلامة (*)
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_2729_17" style="">
<span class="pun">.</span><span class="pln">hide</span><span class="pun">-</span><span class="pln">on</span><span class="pun">-</span><span class="pln">ie6</span><span class="pun">-</span><span class="kwd">and</span><span class="pun">-</span><span class="pln">ie7 </span><span class="pun">{</span><span class="pln">
    </span><span class="pun">*</span><span class="pln">display</span><span class="pun">:</span><span class="pln"> none</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<h3>
	استهداف متصفح IE8 فقط
</h3>

<p>
	لاستهداف متصفح IE8 فقط يجب وضع جميع المُحددات داخل الاستعلام ‎<code>@media \0 screen { }</code>‎
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_2729_19" style="">
<span class="lit">@media</span><span class="pln"> \0 screen </span><span class="pun">{</span><span class="pln">
    </span><span class="pun">.</span><span class="pln">hide</span><span class="pun">-</span><span class="pln">on</span><span class="pun">-</span><span class="pln">ie8 </span><span class="pun">{</span><span class="pln">
        display</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></pre>

<h2>
	أداء المتصفحات
</h2>

<h3>
	استخدام الخصائص transform و opacity لتجنب تنبيه التخطيط
</h3>

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

<p>
	<strong>مثال: التحريك باستخدام الخواص left و top</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_2729_21" style="">
<span class="com">#box {</span><span class="pln">
    left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    transition</span><span class="pun">:</span><span class="pln"> left </span><span class="lit">0.5s</span><span class="pun">,</span><span class="pln"> top </span><span class="lit">0.5s</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">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</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"> gray</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="com">#box.active {</span><span class="pln">
    left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
    top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	اطلع على تجربة حية لهذا المثال على <a href="https://jsfiddle.net/trungdq88/gmpzxLyq/" rel="external nofollow">JSFiddle</a>.
</p>

<p>
	تستغرق الصفحة حوالي 11.7 ملي ثانية للتحميل، ومن ثم تستغرق 9.8 ملي ثانية لإعادة رسم الصندوق في الموضع الجديد.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="53021" href="https://academy.hsoub.com/uploads/monthly_2020_11/AOima.png.d3228e01398a1fd7d62368bde7427344.png" rel=""><img alt="AOima.png" class="ipsImage ipsImage_thumbnailed" data-fileid="53021" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/AOima.thumb.png.bc1bd52e88e194a1423dc3a1bba580d4.png"></a>
</p>

<p>
	ولتحسين الأداء وتسريع تحميل الصفحة يجب استخدام الخواص <code>transform</code> و<code>opacity</code> للحصول على نفس النتيجة كما هو موضح في المثال التالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_2729_23" style="">
<span class="com">#box {</span><span class="pln">
    left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    top</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">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</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"> gray</span><span class="pun">;</span><span class="pln">
    transition</span><span class="pun">:</span><span class="pln"> transform </span><span class="lit">0.5s</span><span class="pun">;</span><span class="pln">
    transform</span><span class="pun">:</span><span class="pln"> translate3d</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="pun">}</span><span class="pln">
</span><span class="com">#box.active </span><span class="pln">
    transform</span><span class="pun">:</span><span class="pln"> translate3d</span><span class="pun">(</span><span class="lit">100px</span><span class="pun">,</span><span class="pln"> </span><span class="lit">100px</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>
	اطلع على تجربة حية لهذا المثال على <a href="https://jsfiddle.net/trungdq88/Logdo0rn/" rel="external nofollow">JSFiddle</a>.
</p>

<p>
	تستغرق الصفحة حوالي 1.3 ملي ثانية للتحميل، ومن ثم تستغرق 2.0 ملي ثانية لإعادة رسم الصندوق في الموضع الجديد.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="53020" href="https://academy.hsoub.com/uploads/monthly_2020_11/MLTAH.png.e64211ea46f5598da711863641b344fb.png" rel=""><img alt="MLTAH.png" class="ipsImage ipsImage_thumbnailed" data-fileid="53020" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/MLTAH.thumb.png.f137fa891f4bdf0aad746c0f8de1757f.png"></a>
</p>

<p>
	ترجمة -وبتصرف- للفصول Browser Support &amp; Prefixes - Normalizing Browser Styles - Internet Explorer Hacks - Performance من كتاب <a href="https://books.goalkicker.com/CSSBook/" rel="external nofollow">CSS Notes for Professionals</a>
</p>
]]></description><guid isPermaLink="false">1061</guid><pubDate>Sat, 12 Dec 2020 13:01:00 +0000</pubDate></item><item><title>&#x645;&#x648;&#x627;&#x636;&#x64A;&#x639; &#x645;&#x62A;&#x642;&#x62F;&#x645;&#x629; &#x641;&#x64A; CSS</title><link>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/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2020_11/11.png.f8b62acb40e9a2f8c517b1d32f53e0a2.png" /></p>

<h2>
	الدوال (Functions)
</h2>

<h3>
	الدالة ()calc
</h3>

<p>
	تسمح الدالة <code>()calc</code> بإجراء عمليات حسابية على قيم خاصيات CSS، ويمكن استخدامها في أي موضع يُسمَح فيه باستخدام أنواع البيانات <code>&lt;length&gt;</code> و <code>&lt;percentage&gt;</code> و <code>&lt;angle&gt;</code> و <code>&lt;time&gt;</code> و <code>&lt;number&gt;</code> و <code>&lt;integer&gt;</code>.
</p>

<p>
	<strong>استخدام دالة ()calc لحساب عرض الحاوية</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_9094_7" style="">
<span class="com">#div1 {</span><span class="pln">
    position</span><span class="pun">:</span><span class="pln"> absolute</span><span class="pun">;</span><span class="pln">
    left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pun">;</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> calc</span><span class="pun">(</span><span class="lit">100</span><span class="pun">%</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">);</span><span class="pln">
    border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> solid black</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"> yellow</span><span class="pun">;</span><span class="pln">
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">5px</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></pre>

<p>
	<strong>استخدام الدالة <code>()calc</code> لتحديد موضع صورة الخلفية</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_9094_9" style="">
<span class="pln">background</span><span class="pun">-</span><span class="pln">position</span><span class="pun">:</span><span class="pln"> calc</span><span class="pun">(</span><span class="lit">50</span><span class="pun">%</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="lit">17px</span><span class="pun">)</span><span class="pln"> calc</span><span class="pun">(</span><span class="lit">50</span><span class="pun">%</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="lit">10px</span><span class="pun">),</span><span class="pln"> </span><span class="lit">50</span><span class="pun">%</span><span class="pln"> </span><span class="lit">50</span><span class="pun">%;</span></pre>

<p>
	<strong>استخدام الدالة ()calc لحساب ارتفاع العنصر</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_9094_11" style="">
<span class="pln">height</span><span class="pun">:</span><span class="pln"> calc</span><span class="pun">(</span><span class="lit">100</span><span class="pun">%</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="lit">20px</span><span class="pun">);</span></pre>

<p>
	لمزيد من المعلومات انظر <a href="https://wiki.hsoub.com/CSS/calc" rel="external">توثيق calc</a>.
</p>

<h3>
	الدالة ()attr
</h3>

<p>
	تستخدم الدالة <code>()attr</code> للحصول على قيمة إحدى خاصيات العنصر المُحدَّد واستخدامها في أنماط CSS، ويمكن استعمالها أيضًا على العناصر الزائفة (pseudo-elements) وفي هذه الحالة ستُستخدَم قيمة خاصية العنصر الأصل.
</p>

<p>
	<strong>مثال</strong>
</p>

<ul>
<li>
		ملف HTML
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_9094_13" style="">
<span class="pln">  </span><span class="tag">&lt;blockquote</span><span class="pln"> </span><span class="atn">data-mark</span><span class="pun">=</span><span class="atv">'"'</span><span class="tag">&gt;&lt;/blockquote&gt;</span></pre>

<ul>
<li>
		ملف CSS
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_9094_15" style="">
<span class="pln">  blockquote</span><span class="pun">[</span><span class="pln">data</span><span class="pun">-</span><span class="pln">mark</span><span class="pun">]::</span><span class="pln">before</span><span class="pun">,</span><span class="pln">
  blockquote</span><span class="pun">[</span><span class="pln">data</span><span class="pun">-</span><span class="pln">mark</span><span class="pun">]::</span><span class="pln">after </span><span class="pun">{</span><span class="pln">
      content</span><span class="pun">:</span><span class="pln"> attr</span><span class="pun">(</span><span class="pln">data</span><span class="pun">-</span><span class="pln">mark</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	لمزيد من المعلومات انظر <a href="https://wiki.hsoub.com/CSS/attr" rel="external">توثيق attr</a>.
</p>

<h3>
	الدالة ()var
</h3>

<p>
	تستخدم الدالة <code>()var</code> للوصول لمتغيرات CSS.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_9094_17" style="">
<span class="pun">:</span><span class="pln">root </span><span class="pun">{</span><span class="pln">
    </span><span class="pun">--</span><span class="pln">primary</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> blue</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

selector </span><span class="pun">{</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">var</span><span class="pun">(--</span><span class="pln">primary</span><span class="pun">-</span><span class="pln">color</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	لمزيد من المعلومات انظر <a href="https://wiki.hsoub.com/CSS/var" rel="external">توثيق var</a>.
</p>

<h3>
	الدالة radial-gradient()‎
</h3>

<p>
	تستخدم الدالة <code>radial-gradient()‎</code> لإنشاء تدرج لوني بين لونين أو أكثر على شكل أشعة تبدأ من المركز، ويمكن أن يكون شكلها دائريًا أو على شكل قطع ناقص.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_9094_19" style="">
<span class="pln">radial</span><span class="pun">-</span><span class="pln">gradient</span><span class="pun">(</span><span class="pln">red</span><span class="pun">,</span><span class="pln"> orange</span><span class="pun">,</span><span class="pln"> yellow</span><span class="pun">);</span></pre>

<p>
	لمزيد من المعلومات انظر <a href="https://wiki.hsoub.com/CSS/radial-gradient" rel="external">توثيق radial-gradient</a>.
</p>

<h3>
	الدالة linear-gradient
</h3>

<p>
	تستخدم الدالة <code>linear-gradient()‎</code> لإنشاء تدرج لوني بين لونين أو أكثر على امتداد خط مستقيم،
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_9094_21" style="">
<span class="pln">linear</span><span class="pun">-</span><span class="pln">gradient</span><span class="pun">(</span><span class="pln"> </span><span class="lit">0deg</span><span class="pun">,</span><span class="pln"> red</span><span class="pun">,</span><span class="pln"> yellow </span><span class="lit">50</span><span class="pun">%,</span><span class="pln"> blue</span><span class="pun">);</span></pre>

<p>
	لمزيد من المعلومات انظر <a href="https://wiki.hsoub.com/CSS/linear-gradient" rel="external">توثيق linear-gradient</a>.
</p>

<h2>
	المتغيرات: الخاصيات المُخصصة في CSS
</h2>

<p>
	أسماء الخاصيات التي تُسبَق بشرطتين <code>--</code>، مثل <code>‎--example-name</code>، تُمثِّل الخاصيات المخصصة (custom properties) التي تُسنَد لها قيمةٌ يمكن إعادة استخدامها في المستند عبر الدالة <code>var()‎</code>.
</p>

<p>
	<strong>مثال</strong>
</p>

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

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_9094_24" style="">
<span class="pun">:</span><span class="pln">root </span><span class="pun">{</span><span class="pln">
    </span><span class="pun">--</span><span class="pln">red</span><span class="pun">:</span><span class="pln"> </span><span class="com">#b00;</span><span class="pln">
    </span><span class="pun">--</span><span class="pln">blue</span><span class="pun">:</span><span class="pln"> </span><span class="com">#4679bd;</span><span class="pln">
    </span><span class="pun">--</span><span class="pln">grey</span><span class="pun">:</span><span class="pln"> </span><span class="com">#ddd;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="typ">Bx1</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">var</span><span class="pun">(--</span><span class="pln">red</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="kwd">var</span><span class="pun">(--</span><span class="pln">grey</span><span class="pun">);</span><span class="pln">
    border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> solid </span><span class="kwd">var</span><span class="pun">(--</span><span class="pln">red</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_9094_26" style="">
<span class="pun">:</span><span class="pln">root </span><span class="pun">{</span><span class="pln">
    </span><span class="pun">--</span><span class="pln">W200</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">W100</span><span class="pun">:</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="pun">.</span><span class="typ">Bx2</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">var</span><span class="pun">(--</span><span class="pln">W200</span><span class="pun">);</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">var</span><span class="pun">(--</span><span class="pln">W200</span><span class="pun">);</span><span class="pln">
    margin</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">var</span><span class="pun">(--</span><span class="pln">W10</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

<h3>
	إعادة تعريف قيم المتغيرات
</h3>

<ul>
<li>
		ملف HTML
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_9094_28" style="">
<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">"button"</span><span class="tag">&gt;</span><span class="pln">Button Green</span><span class="tag">&lt;/a&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">"button button_red"</span><span class="tag">&gt;</span><span class="pln">Button Red</span><span class="tag">&lt;/a&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">"button"</span><span class="tag">&gt;</span><span class="pln">Button Hovered On</span><span class="tag">&lt;/a&gt;</span></pre>

<ul>
<li>
		ملف CSS
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_9094_30" style="">
<span class="pln">  </span><span class="pun">.</span><span class="pln">button </span><span class="pun">{</span><span class="pln">
      </span><span class="pun">--</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> green</span><span class="pun">;</span><span class="pln">
      padding</span><span class="pun">:</span><span class="pln"> </span><span class="pun">.</span><span class="lit">5rem</span><span class="pun">;</span><span class="pln">
      border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> solid </span><span class="kwd">var</span><span class="pun">(--</span><span class="pln">color</span><span class="pun">);</span><span class="pln">
      color</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">var</span><span class="pun">(--</span><span class="pln">color</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="pun">.</span><span class="pln">button</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">color</span><span class="pun">:</span><span class="pln"> blue</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="pun">.</span><span class="pln">button</span><span class="pun">-</span><span class="pln">red </span><span class="pun">{</span><span class="pln">
      </span><span class="pun">--</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> red</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="53013" href="https://academy.hsoub.com/uploads/monthly_2020_11/49U74.png.c00b622717b777bf55c6afe0267dc777.png" rel=""><img alt="49U74.png" class="ipsImage ipsImage_thumbnailed" data-fileid="53013" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/49U74.png.c00b622717b777bf55c6afe0267dc777.png"></a>
</p>

<h3>
	قواعد استخدام المتغيرات في CSS
</h3>

<ul>
<li>
		يجب أن تحتوي أسماء المتغيرات على الحروف وعلامة (-) فقط.
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_9094_32" style="">
<span class="pln">  </span><span class="com">/* Invalid variables names */</span><span class="pln">
  </span><span class="pun">--</span><span class="lit">123color</span><span class="pun">:</span><span class="pln"> blue</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">--#</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> red</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">--</span><span class="pln">bg_color</span><span class="pun">:</span><span class="pln"> yellow
  </span><span class="pun">--</span><span class="pln">$width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">

  </span><span class="com">/* Valid variable names */</span><span class="pln">
  </span><span class="pun">--</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> red</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">--</span><span class="pln">bg</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> yellow
  </span><span class="pun">--</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span></pre>

<ul>
<li>
		اسماء المتغيرات حساسة لحالة الأحرف
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_9094_34" style="">
<span class="pln">  </span><span class="com">/* The variable names below are all different variables */</span><span class="pln">
  </span><span class="pun">--</span><span class="pln">pcolor</span><span class="pun">:</span><span class="pln"> </span><span class="pun">;</span><span class="pln">
  </span><span class="pun">--</span><span class="typ">Pcolor</span><span class="pun">:</span><span class="pln"> </span><span class="pun">;</span><span class="pln">
  </span><span class="pun">--</span><span class="pln">pColor</span><span class="pun">:</span><span class="pln"> </span><span class="pun">;</span></pre>

<ul>
<li>
		يجب أن يكون لكل متغير قيمة (حرف المسافة (space) قيمة صالحة للمتغير).
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_9094_36" style="">
<span class="pln">  </span><span class="com">/* Invalid */</span><span class="pln">
  </span><span class="pun">--</span><span class="pln">color</span><span class="pun">:;</span><span class="pln">

  </span><span class="com">/* Valid */</span><span class="pln">
  </span><span class="pun">--</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> </span><span class="pun">;</span><span class="pln"> </span><span class="com">/* space is assigned */</span></pre>

<ul>
<li>
		متغيرات CSS لا تدعم التسلسل، أي لا يمكن استخدام الدالة var()‎ داخل دالة أخرى.
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_9094_38" style="">
<span class="pln">  </span><span class="com">/* Invalid */</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">logo</span><span class="pun">{</span><span class="pln">
      </span><span class="pun">--</span><span class="pln">logo</span><span class="pun">-</span><span class="pln">url</span><span class="pun">:</span><span class="pln"> </span><span class="str">'logo'</span><span class="pun">;</span><span class="pln">
      background</span><span class="pun">:</span><span class="pln"> url</span><span class="pun">(</span><span class="str">'assets/img/'</span><span class="pln"> </span><span class="kwd">var</span><span class="pun">(--</span><span class="pln">logo</span><span class="pun">-</span><span class="pln">url</span><span class="pun">)</span><span class="pln"> </span><span class="str">'.png'</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="com">/* Invalid */</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">logo</span><span class="pun">{</span><span class="pln">
      </span><span class="pun">--</span><span class="pln">logo</span><span class="pun">-</span><span class="pln">url</span><span class="pun">:</span><span class="pln"> </span><span class="str">'assets/img/logo.png'</span><span class="pun">;</span><span class="pln">
      background</span><span class="pun">:</span><span class="pln"> url</span><span class="pun">(</span><span class="kwd">var</span><span class="pun">(--</span><span class="pln">logo</span><span class="pun">-</span><span class="pln">url</span><span class="pun">));</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="com">/* Valid */</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">logo</span><span class="pun">{</span><span class="pln">
      </span><span class="pun">--</span><span class="pln">logo</span><span class="pun">-</span><span class="pln">url</span><span class="pun">:</span><span class="pln"> url</span><span class="pun">(</span><span class="str">'assets/img/logo.png'</span><span class="pun">);</span><span class="pln">
      background</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">var</span><span class="pun">(--</span><span class="pln">logo</span><span class="pun">-</span><span class="pln">url</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span></pre>

<ul>
<li>
		يجب وضع الوحدات داخل تعريف المتغير
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_9094_40" style="">
<span class="pln">  </span><span class="com">/* Invalid */</span><span class="pln">
  </span><span class="pun">--</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10</span><span class="pun">;</span><span class="pln">
  width</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">var</span><span class="pun">(--</span><span class="pln">width</span><span class="pun">)</span><span class="pln">px</span><span class="pun">;</span><span class="pln">

  </span><span class="com">/* Valid */</span><span class="pln">
  </span><span class="pun">--</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10px</span><span class="pun">;</span><span class="pln">
  width</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">var</span><span class="pun">(--</span><span class="pln">width</span><span class="pun">);</span><span class="pln">

  </span><span class="com">/* Valid */</span><span class="pln">
  </span><span class="pun">--</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10</span><span class="pun">;</span><span class="pln">
  width</span><span class="pun">:</span><span class="pln"> calc</span><span class="pun">(</span><span class="lit">1px</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> </span><span class="kwd">var</span><span class="pun">(--</span><span class="pln">width</span><span class="pun">));</span><span class="pln"> </span><span class="com">/* multiply by 1 unit to convert */</span><span class="pln">
  width</span><span class="pun">:</span><span class="pln"> calc</span><span class="pun">(</span><span class="lit">1em</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> </span><span class="kwd">var</span><span class="pun">(--</span><span class="pln">width</span><span class="pun">));</span></pre>

<h3>
	استخدام المتغيرات مع استعلامات الوسائط
</h3>

<p>
	يُمكن إعادة تعريف قيم المتغيرات في استعلامات الوسائط للحصول على صفحات متجاوبة.
</p>

<p>
	<strong>مثال</strong>
</p>

<ul>
<li>
		ملف HTML
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_9094_42" style="">
<span class="pln">  </span><span class="tag">&lt;div&gt;&lt;/div&gt;</span><span class="pln">
  </span><span class="tag">&lt;div&gt;&lt;/div&gt;</span><span class="pln">
  </span><span class="tag">&lt;div&gt;&lt;/div&gt;</span><span class="pln">
  </span><span class="tag">&lt;div&gt;&lt;/div&gt;</span></pre>

<ul>
<li>
		ملف CSS
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_9094_44" style="">
<span class="pln">  </span><span class="pun">:</span><span class="pln">root</span><span class="pun">{</span><span class="pln">
      </span><span class="pun">--</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">25</span><span class="pun">%;</span><span class="pln">
      </span><span class="pun">--</span><span class="pln">content</span><span class="pun">:</span><span class="pln"> </span><span class="str">'This is desktop'</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="lit">@media</span><span class="pln"> only screen </span><span class="kwd">and</span><span class="pln"> </span><span class="pun">(</span><span class="pln">max</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">767px</span><span class="pun">){</span><span class="pln">
      </span><span class="pun">:</span><span class="pln">root</span><span class="pun">{</span><span class="pln">
      </span><span class="pun">--</span><span class="pln">width</span><span class="pun">:</span><span class="lit">50</span><span class="pun">%;</span><span class="pln">
      </span><span class="pun">--</span><span class="pln">content</span><span class="pun">:</span><span class="pln"> </span><span class="str">'This is mobile'</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="lit">@media</span><span class="pln"> only screen </span><span class="kwd">and</span><span class="pln"> </span><span class="pun">(</span><span class="pln">max</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">480px</span><span class="pun">){</span><span class="pln">
      </span><span class="pun">:</span><span class="pln">root</span><span class="pun">{</span><span class="pln">
      </span><span class="pun">--</span><span class="pln">width</span><span class="pun">:</span><span class="lit">100</span><span class="pun">%;</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  div</span><span class="pun">{</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> calc</span><span class="pun">(</span><span class="kwd">var</span><span class="pun">(--</span><span class="pln">width</span><span class="pun">)</span><span class="pln"> </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">100px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  div</span><span class="pun">:</span><span class="pln">before</span><span class="pun">{</span><span class="pln">
      content</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">var</span><span class="pun">(--</span><span class="pln">content</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="com">/* Other Styles */</span><span class="pln">
  body </span><span class="pun">{</span><span class="pln">
      padding</span><span class="pun">:</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">
  div</span><span class="pun">{</span><span class="pln">
      display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">;</span><span class="pln">
      align</span><span class="pun">-</span><span class="pln">items</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln">
      justify</span><span class="pun">-</span><span class="pln">content</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">weight</span><span class="pun">:</span><span class="pln">bold</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">
      margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10px</span><span class="pun">;</span><span class="pln">
      border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">4px</span><span class="pln"> solid black</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">
  </span><span class="pun">}</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="53014" href="https://academy.hsoub.com/uploads/monthly_2020_11/GXWRP.gif.ee8498765284a327c440b043169fcd39.gif" rel=""><img alt="GXWRP.gif" class="ipsImage ipsImage_thumbnailed" data-fileid="53014" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/GXWRP.gif.ee8498765284a327c440b043169fcd39.gif"></a>
</p>

<p>
	اطَّلع على تجربة حيَّة لهذا المثال على <a href="https://codepen.io/mkumaran/pen/BZaXvz" rel="external nofollow">CodePen</a>.
</p>

<h2>
	نموذج الكائنات (CSS Object Model - CSSOM)
</h2>

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

<p>
	لعرض أي صفحة ويب، ينفذ المتصفح الخطوات التالية:
</p>

<ol>
<li>
		يفحص المتصفح وثيقة HTML ويبني DOM.
	</li>
	<li>
		يفحص المتصفح وثيقة CSS ويبني نموذج الكائنات CSSOM.
	</li>
	<li>
		يدمج المتصفح بين DOM و CSSOM لإنشاء شجرة العرض التي تُمثل الصفحة.
	</li>
</ol>
<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="53015" href="https://academy.hsoub.com/uploads/monthly_2020_11/ZH4c7.png.e7140f5460809b514a8781532ebde961.png" rel=""><img alt="ZH4c7.png" class="ipsImage ipsImage_thumbnailed" data-fileid="53015" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/ZH4c7.thumb.png.bd30eff4a1f4c4dbe863016dbf6d3faa.png"></a>
</p>

<h3>
	مثال
</h3>

<p>
	إليك المثال التالي حول إضافة صورة الخلفية background-image باستخدام نموذج الكائنات CSSOM
</p>

<p>
	أولُا يجب الحصول على نقاط مرجعية تمثل بداية ونهاية القواعد في وثيقة CSS.
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_9094_46" style="">
<span class="kwd">var</span><span class="pln"> stylesheet </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">stylesheet</span><span class="pun">[</span><span class="lit">0</span><span class="pun">].</span><span class="pln">cssRules</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">var</span><span class="pln"> end </span><span class="pun">=</span><span class="pln"> stylesheet</span><span class="pun">.</span><span class="pln">length </span><span class="pun">-</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span></pre>

<p>
	ومن ثم تُضاف القاعدة background-image للعنصر body في نهاية وثيقة CSS.
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_9094_48" style="">
<span class="pln">stylesheet</span><span class="pun">.</span><span class="pln">insertRule</span><span class="pun">(</span><span class="str">"</span><span class="pln">body </span><span class="pun">{</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="str">'http://cdn.sstatic.net/Sites/stackoverflow/img/favicon.ico'</span><span class="pun">);</span><span class="pln"> </span><span class="pun">}</span><span class="str">", end);</span></pre>

<h2>
	أنماط التصميم (CSS Design Patterns)
</h2>

<p>
	أنماط التصميم (Design Patterns) هي أساليب نموذجية تحل المشاكل التي تتكرر كثيرًا في تصميم البرمجيات، ويمكن تشبيهها بالمخططات التي تستخدمها -وتُعدَّلها أيضًا- من أجل إصلاح مشكلة بعينها في شيفرتك.
</p>

<p>
	<strong>بعض أنماط التصميم الشائعة في CSS</strong>
</p>

<ul>
<li>
		<a href="http://getbem.com/" rel="external nofollow">BEM</a>
	</li>
	<li>
		<a href="https://www.smashingmagazine.com/2011/12/an-introduction-to-object-oriented-css-oocss/" rel="external nofollow">OOCSS</a>
	</li>
	<li>
		<a href="https://smacss.com/" rel="external nofollow">SMACSS</a>
	</li>
</ul>
<h3>
	نمط BEM
</h3>

<p>
	هي منهجة صُممت من قبل شركة التكنولوجيا الروسية <a href="https://en.wikipedia.org/wiki/Yandex" rel="external nofollow">Yandex</a>، ومن ثم اكتسبت شعبية كبيرة بين مبرمجين الويب في الولايات المتحدة و أوروبا الغربية ومنها إلى بقية العالم، وتُشير BEM إلى الكلمات Block، وElements وModifiers على التوالي.
</p>

<ul>
<li>
		Blocks: أو الكتل، وهي العناصر أو الكيانات المُستقلة ولها معنى محدد، مثل العناصر <code>header</code>، و <code>container</code>، <code>وmenu</code>، وغيرها.
	</li>
	<li>
		Elements: أو العناصر، وهي أجزاء من الكُتل والتي ليس لها معنى محدد، مثل <code>menu item</code>، و<code>list item</code>، وغيرها.
	</li>
	<li>
		Modifiers: أو الصفات التعريفية، وتستخدم لتغيير طريقة عرض أو سلوك العنصر، مثل الخواص <code>disabled</code>، و<code>highlighted</code>، و<code>checked</code>، وغيرها.
	</li>
</ul>
<p>
	هناك بعض القواعد لتطبيق منهجية أو نمط BEM وهي:
</p>

<ul>
<li>
		أنماط الكتل لا تعتمد بأي شكل من الأشكال على بقية العناصر في الصفحة.
	</li>
	<li>
		يجب أن تكون أسماء الكُتل قصيرة، مع تجنب استخدام المحارف (-) و (_).
	</li>
	<li>
		يجب أن تأخذ أسماء مُحددات العناصر الشكل <code>blockname__elementname</code>.
	</li>
	<li>
		يجب أن تأخذ أسماء مُحددات الصفات التعريفية الشكل <code>blockname--modifiername</code> أو <code>blockname__element-name--modifiername</code>.
	</li>
</ul>
<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_9094_50" style="">
<span class="tag">&lt;style&gt;</span><span class="pln">
form </span><span class="pun">{</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="com">// Block</span><span class="pln">
</span><span class="pun">.</span><span class="pln">form</span><span class="pun">--</span><span class="pln">theme</span><span class="pun">-</span><span class="pln">xmas </span><span class="pun">{</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="com">// Block + modifier</span><span class="pln">
</span><span class="pun">.</span><span class="pln">form</span><span class="pun">--</span><span class="pln">simple </span><span class="pun">{</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="com">// Block + modifier</span><span class="pln">
</span><span class="pun">.</span><span class="pln">form__input </span><span class="pun">{</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="com">// Block &gt; element</span><span class="pln">
</span><span class="pun">.</span><span class="pln">form__submit </span><span class="pun">{</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="com">// Block &gt; element</span><span class="pln">
</span><span class="pun">.</span><span class="pln">form__submit</span><span class="pun">--</span><span class="pln">disabled </span><span class="pun">{</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="com">// Block &gt; element + modifier</span><span class="pln">
</span><span class="tag">&lt;/style&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">"form form--theme-xmas form--simple"</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__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="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__submit form__submit--disabled"</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="tag">/&gt;</span><span class="pln">
&lt;/form</span></pre>

<p>
	للتفصيل أكثر حول BEM، ننصحك بالإطلاع على مقال «<a href="https://academy.hsoub.com/programming/css/%D8%AF%D9%84%D9%8A%D9%84%D9%83-%D8%A5%D9%84%D9%89-%D9%85%D9%86%D9%87%D8%AC%D9%8A%D8%A9-bem-r688/" rel="">دليلك إلى منهجية BEM</a>».
</p>

<p>
	ترجمة -وبتصرف- للفصول Functions - Custom Properties (Variables)‎ - Counters- CSS Object Model (CSSOM)‎ - CSS design patterns من كتاب <a href="https://books.goalkicker.com/CSSBook/" rel="external nofollow">CSS Notes for Professionals</a>
</p>
]]></description><guid isPermaLink="false">1060</guid><pubDate>Wed, 09 Dec 2020 13:08:01 +0000</pubDate></item><item><title>&#x627;&#x633;&#x62A;&#x639;&#x644;&#x627;&#x645;&#x627;&#x62A; &#x627;&#x644;&#x648;&#x633;&#x627;&#x626;&#x637; (Media Queries) &#x641;&#x64A; CSS</title><link>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/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2020_11/10.png.8b5276a6c73ea8e2da1164dba39da033.png" /></p>

<p>
	تسمح استعلامات الوسائط (media queries) بتطبيق أنماط CSS مختلفة بناءً على نوع جهاز العرض (شاشة أو طابعة أو غير ذلك) وحجمه، فيُحدَّد نوع الجهاز عن طريق نوع الوسط <code>media type</code>، بينما تُحدد مواصفات الجهاز الأخرى مثل اللون وأبعاد شاشة العرض باستخدام خصائص الوسط <code>media features</code>.
</p>

<p>
	<strong>الصيغة العامة لكتابة وسائط الاستعلامات media queries</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8276_7" style="">
<span class="lit">@media</span><span class="pln"> </span><span class="pun">[...]</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="com">/* القواعد التي ستُطبق عند استيفاء شروط استعلامات الوسيط */</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	<strong>تحديد نوع الجهاز</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8276_9" style="">
<span class="lit">@media</span><span class="pln"> </span><span class="kwd">print</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="com">/* القواعد التي ستُطبق عند استيفاء شروط استعلامات الوسيط */</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	<strong>تحديد نوع وخصائص الجهاز</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8276_11" style="">
<span class="lit">@media</span><span class="pln"> screen </span><span class="kwd">and</span><span class="pln"> </span><span class="pun">(</span><span class="pln">max</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">600px</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="com">/* القواعد التي ستُطبق عند استيفاء شروط استعلامات الوسيط */</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	<strong>تحديد وضعية الجهاز (أفقي أم رأسي)</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8276_13" style="">
<span class="lit">@media</span><span class="pln"> </span><span class="pun">(</span><span class="pln">orientation</span><span class="pun">:</span><span class="pln"> portrait</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="com">/* القواعد التي ستُطبق عند استيفاء شروط استعلامات الوسيط */</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8276_15" style="">
<span class="lit">@media</span><span class="pln"> screen </span><span class="kwd">and</span><span class="pln"> </span><span class="pun">(</span><span class="pln">min</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">720px</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">
        background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> skyblue</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	تُحدد استعلامات الوسائط في المثال أعلاه شرطين لتطبيق قواعد CSS هما:
</p>

<ol>
<li>
		<p>
			يجب عرض الصفحة على شاشة، أي ألَّا تكون مطبوعة أو ما شابه ذلك.
		</p>
	</li>
	<li>
		<p>
			يجب أن يكون عرض الشاشة 720 بكسل على الأقل.
		</p>
	</li>
</ol>
<p>
	تُطبق القاعدة <code>background-color: skyblue</code> في حال تحقق الشرطين أعلاه ويُصبح لون الصفحة أزرق سماوي.
</p>

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

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

<p>
	ملخص القول، المعاملات التي تأخذها القاعدة <code>‎@media</code> هي باختصار:
</p>

<table>
<thead><tr>
<th style="text-align:right">
				المعامل
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr></thead>
<tbody>
<tr>
<td style="text-align:right">
				mediatype
			</td>
			<td style="text-align:right">
				(اختياري) يُعرِّف الوسط (الجهاز) الذي تُعرض عليه الصفحة،
			</td>
		</tr>
<tr>
<td style="text-align:right">
				not
			</td>
			<td style="text-align:right">
				(اختياري) يُطبِّق أنماط CSS على كل الأجهزة عدا الجهاز المحدد به.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				media feature
			</td>
			<td style="text-align:right">
				يًحدِّد خصائص استعلامات الوسائط. الجدول التالي يبين الخصائص المتاحة.
			</td>
		</tr>
</tbody>
</table>
<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>
<h2>
	تحديد نوع الوسط أو الجهاز عبر media type
</h2>

<p>
	يستخدم المعامل <code>media type</code> لتحديد نوع الجهاز المُراد تطبيق قواعد CSS عليه، وهو معامل اختياري يُوضع مباشرة بعد التعريف <code>media@</code>. يوضح المثال التالي كيفية استخدامه:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8276_17" style="">
<span class="lit">@media</span><span class="pln"> </span><span class="kwd">print</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    html </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"> white</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	تُعطي الشيفرة أعلاه صفحة HTML خلفية بيضاء عند الطباعة.
</p>

<p>
	يُمكن إضافة المعامل <code>not</code> قبل نوع الجهاز لتطبيق قواعد CSS على كل الأجهزة عدا الجهاز المحدد، أو المعامل <code>only</code> والذي يُطبق قواعد CSS على الجهاز المحدد فقط كما هو موضح في الأمثلة التالية:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8276_19" style="">
<span class="lit">@media</span><span class="pln"> </span><span class="kwd">not</span><span class="pln"> </span><span class="kwd">print</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    html </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"> green</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8276_21" style="">
<span class="lit">@media</span><span class="pln"> only screen </span><span class="pun">{</span><span class="pln">
    </span><span class="pun">.</span><span class="pln">fadeInEffects </span><span class="pun">{</span><span class="pln">
        display</span><span class="pun">:</span><span class="pln"> block</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	<strong>انواع الأجهزة</strong>
</p>

<table>
<thead><tr>
<th style="text-align:right">
				نوع الجهاز أو الوسط
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr></thead>
<tbody>
<tr>
<td style="text-align:right">
				all
			</td>
			<td style="text-align:right">
				كل الأجهزة.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				screen
			</td>
			<td style="text-align:right">
				أجهزة الحاسوب.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				print
			</td>
			<td style="text-align:right">
				الطابعات، وتستخدم لعمل نسخة مطبوعة من الصفحة.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				handheld
			</td>
			<td style="text-align:right">
				تشمل الهواتف المحمولة والأجهزة ذات الشاشات الصغيرة.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				projection
			</td>
			<td style="text-align:right">
				تستعمل لعمل العروض المرئية presentations، مثل جهاز الإسقاط projector
			</td>
		</tr>
<tr>
<td style="text-align:right">
				aural
			</td>
			<td style="text-align:right">
				الأجهزة الصوتية.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				braille
			</td>
			<td style="text-align:right">
				أجهزة برايل اللمسية.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				embossed
			</td>
			<td style="text-align:right">
				طابعات برايل.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				tv
			</td>
			<td style="text-align:right">
				أجهزة التلفاز.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				tty
			</td>
			<td style="text-align:right">
				الأجهزة ذات شبكات الأحرف الثابتة.
			</td>
		</tr>
</tbody>
</table>
<h2>
	استعلامات الوسائط للشاشات الشبكية وغير الشبكية
</h2>

<p>
	على الرغم من أن هذا النوع من استعلامات لوسائط يعمل فقط على مصفحات المبنية على مُحرِّك Webkit إلَّا انه قد يكون مفيدًا في بعض الأحيان، يوضح المثال التالي كيفية استعمالها:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8276_23" style="">
<span class="com">/* ---- الشاشات غير الشبكية ---- */</span><span class="pln">
</span><span class="lit">@media</span><span class="pln"> screen
    </span><span class="kwd">and</span><span class="pln"> </span><span class="pun">(</span><span class="pln">min</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1200px</span><span class="pun">)</span><span class="pln">
    </span><span class="kwd">and</span><span class="pln"> </span><span class="pun">(</span><span class="pln">max</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1600px</span><span class="pun">)</span><span class="pln">
    </span><span class="kwd">and</span><span class="pln"> </span><span class="pun">(-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">min</span><span class="pun">-</span><span class="pln">device</span><span class="pun">-</span><span class="pln">pixel</span><span class="pun">-</span><span class="pln">ratio</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="com">/* CSS rules */</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">/* ---- الشاشات الشبكية ---- */</span><span class="pln">
</span><span class="lit">@media</span><span class="pln"> screen
    </span><span class="kwd">and</span><span class="pln"> </span><span class="pun">(</span><span class="pln">min</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1200px</span><span class="pun">)</span><span class="pln">
    </span><span class="kwd">and</span><span class="pln"> </span><span class="pun">(</span><span class="pln">max</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1600px</span><span class="pun">)</span><span class="pln">
    </span><span class="kwd">and</span><span class="pln"> </span><span class="pun">(-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">min</span><span class="pun">-</span><span class="pln">device</span><span class="pun">-</span><span class="pln">pixel</span><span class="pun">-</span><span class="pln">ratio</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2</span><span class="pun">)</span><span class="pln">
    </span><span class="kwd">and</span><span class="pln"> </span><span class="pun">(</span><span class="pln">min</span><span class="pun">-</span><span class="pln">resolution</span><span class="pun">:</span><span class="pln"> </span><span class="lit">192dpi</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="com">/* CSS rules */</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	<strong>معلومات أساسية</strong>
</p>

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

<p>
	نسبة بكسلات الجهاز (device pixel ratio) هي نسبة البكسلات الفيزيائية إلى المنطقية. على سبيل المثال الأجهزة MacBook Pro Retina، و iPhone4 لها نسبة بكسلات 2، أي أن عدد البكسلات الفيزيائية ضعف عدد البكسلات المنطقية.
</p>

<h2>
	<strong>خصائص الوسيط (الجهاز) (media features)</strong>
</h2>

<table>
<thead><tr>
<th style="text-align:right">
				الخاصية
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr></thead>
<tbody>
<tr>
<td style="text-align:right">
				aspect-ratio
			</td>
			<td style="text-align:right">
				نسبة ارتفاع الجهاز إلى عرضه.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				color
			</td>
			<td style="text-align:right">
				تُشير إلى عدد البِتَّات (الثنائيات) المستعملة لتمثيل اللون في جهاز العرض المتسهدف، وتكون قيمتها صفر إذا كان الجهاز غير ملون.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				color-index
			</td>
			<td style="text-align:right">
				تشير إلى عدد المُدخلات في جدول ألوان جهاز العرض المستهدف.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				gird
			</td>
			<td style="text-align:right">
				تُحدِّد ما إذا كان الجهاز شبكي أم انه يسخدم الصور النقطية.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				height
			</td>
			<td style="text-align:right">
				تُحدد ارتفاع مساحة العرض الخاصة بالجهاز.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				max-width
			</td>
			<td style="text-align:right">
				تُحدد أكبر عرض تُطبق عليه قواعد CSS.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				min-width
			</td>
			<td style="text-align:right">
				تُحدد أقل عرض تُطبق عليه قواعد CSS.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				max-height
			</td>
			<td style="text-align:right">
				تُحدد أكبر ارتفاع تُطبق عليه قواعد CSS.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				min-height
			</td>
			<td style="text-align:right">
				تُحدد أقل ارتفاع تُطبق عليه قواعد CSS.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				monochrome
			</td>
			<td style="text-align:right">
				تشير إلى عدد البِتَّات (الثنائيات) في البكسل الواحد على جهاز عرض ذو تدرج رمادي.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				orientation
			</td>
			<td style="text-align:right">
				تُحدد اتجاه التدوير (أفقي أو رأسي) الذي تُطبَّق فيه قواعد CSS.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				resolution
			</td>
			<td style="text-align:right">
				تشير إلى وضوح (كثافة بكسلات) جهاز العرض.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				scan
			</td>
			<td style="text-align:right">
				تشير إلى عملية المسح الضوئي لأجهزة العرض التلفازية.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				width
			</td>
			<td style="text-align:right">
				تُحدد عرض مساحة العرض الخاصة بالجهاز.
			</td>
		</tr>
</tbody>
</table>
<p>
	<strong>بعض الخصائص الملغية</strong>
</p>

<table>
<thead><tr>
<th style="text-align:right">
				الخاصية
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr></thead>
<tbody>
<tr>
<td style="text-align:right">
				device-aspect-ratio
			</td>
			<td style="text-align:right">
				تُطبق أنماط CSS فقط على الاجهزة التي تطابق نسبة ارتفاعها إلى عرضها النسبة المحددة بهذه الخاصية.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				max-device-width
			</td>
			<td style="text-align:right">
				مماثلة لخاصية max-width لكنها تقيس عرض الشاشة الكُلي بدلًا عن عرض شاشة المتصفح.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				min-device-width
			</td>
			<td style="text-align:right">
				مماثلة لخاصية min-width لكنها تقيس عرض الشاشة الكُلي بدلًا عن عرض شاشة المتصفح.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				max-device-height
			</td>
			<td style="text-align:right">
				مماثلة لخاصية max-height لكنها تقيس ارتفاع الشاشة الكُلي بدلًا عن ارتفاع شاشة المتصفح.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				min-device-height
			</td>
			<td style="text-align:right">
				مماثلة لخاصية min-height لكنها تقيس ارتفاع الشاشة الكُلي بدلًا عن ارتفاع شاشة المتصفح.
			</td>
		</tr>
</tbody>
</table>
<h2>
	العرض (Width) مقابل إطار العرض (Viewport)
</h2>

<p>
	من المهم تحديد عرض الصفحة (viewport) ليكون موافقاً لعرض الجهاز (device-width) باستخدام البيانات الوصفية <code>meta tags</code>. توضع البيانات الوصفية داخل رمز
</p>

<p>
	وتُكتب بالطريقة الموضحة في المثال التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8276_25" style="">
<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></pre>

<p>
	تُحدد خاصية <code>width</code> في استعلامات الوسائط عرض المساحة الفعلية المستعملة لعرض المحتوى، بينما تحدد <code>view-port</code> عرض الجهاز نفسه.
</p>

<p>
	تستخدم العديد من الأجهزة عدد من البكسلات الفيزيائية لتمثيل بكسل فيزيائي واحد. على سبيل المثال وضوح شاشة جهاز iPhone 6 Plus هو 2208 * 1242 لكنَّ مساحة العرض الفعلية هي 736 * 414، أي أن كل ثلاثة بكسلات منطقية تُمثل بكسل فيزيائي واحد.
</p>

<p>
	عدم ضبط البيانات الوصفية meta tag ضبطاً صحيحاً يؤدي إلى عرض الصفحة بوضوحها الحقيقي مما يتسبب في ظهورها مُصغَّرة (نصوص وصور بحجم أصغر).
</p>

<h2>
	استخدام استعلامات الوسائط لاستهداف شاشات محددة
</h2>

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

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8276_27" style="">
<span class="lit">@meida</span><span class="pln"> only screen </span><span class="kwd">and</span><span class="pln"> </span><span class="pun">(</span><span class="pln">min</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">300px</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">and</span><span class="pln"> </span><span class="pun">(</span><span class="pln">max</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">767</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="com">/*
        تطبق القواعد المحددة في هذا الجزء فقط إذا كان عرض الشاشة بين 300 بكسل و 767 بكسل
    */</span><span class="pln">
    </span><span class="pun">.</span><span class="pln">site</span><span class="pun">-</span><span class="pln">title </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">80</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="lit">@meida</span><span class="pln"> only screen </span><span class="kwd">and</span><span class="pln"> </span><span class="pun">(</span><span class="pln">min</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">768px</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">and</span><span class="pln"> </span><span class="pun">(</span><span class="pln">max</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1023</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="com">/*
        تطبق القواعد المحددة في هذا الجزء فقط إذا كان عرض الشاشة بين 768 بكسل و 1023 بكسل
    */</span><span class="pln">
    </span><span class="pun">.</span><span class="pln">site</span><span class="pun">-</span><span class="pln">title </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">80</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="lit">@media</span><span class="pln"> only screen </span><span class="kwd">and</span><span class="pln"> </span><span class="pun">(</span><span class="pln">min</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1024</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="com">/*
        تطبق القواعد المحددة في هذا الجزء فقط إذا كان عرض الشاشة أكبر من 1024 بكسل
    */</span><span class="pln">
    </span><span class="pun">.</span><span class="pln">site</span><span class="pun">-</span><span class="pln">title </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">120</span><span class="pun">%;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

<h2>
	إنشاء استعلامات الوسائط عبر العنصر link
</h2>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8276_29" 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">media</span><span class="pun">=</span><span class="atv">"min-width: 600px"</span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="atv">"example.css"</span><span class="pln"> </span><span class="tag">/&gt;</span></pre>

<p>
	يُحمَّل ملف CSS المحدد في الرابط أعلاه في كل الحالات ولكن لا يُطبق إلا إذا كان عرض شاشة الجهاز أكبر من 600 بكسل.
</p>

<h2>
	استعلامات الوسائط في متصفح IE 8
</h2>

<p>
	<a href="http://www.brianhadaway.com/responsive-web-design-using-css3-media-queries/" rel="external nofollow">استعلامات الوسائط</a> غير مدعومة في متصفح IE 8 والإصدارات السابقة له.
</p>

<p>
	تُوجد بعض الحلول البديلة التي تستخدم Javascript وفيما يلي بعض هذه الحلول:
</p>

<ol>
<li>
		استخدام مكتبة <a href="https://github.com/scottjehl/Respond" rel="external nofollow">Respond.Js</a>
	</li>
</ol>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8276_31" style="">
<span class="pln">   </span><span class="com">&lt;!--[if It IE 9]&gt;
   &lt;script&gt;
       &lt;src="respond.min.js"&gt;
   &lt;/script&gt;
   &lt;![endif]</span></pre>

<ol start="2">
<li>
		استخدام مكتبة <a href="https://code.google.com/p/css3-mediaqueries-js/" rel="external nofollow">CSS Mediaqueries</a>
	</li>
</ol>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8276_33" style="">
<span class="pln">   </span><span class="com">&lt;!--[if It IE 9]&gt;
   &lt;script&gt;
       &lt;src="css3-mediaqueries.js"&gt;
   &lt;/script&gt;
   &lt;![endif]</span></pre>

<p>
	إذا لم تكن ترغب في استعمال Javascript فعليك إضافة ملف CSS منفصل يتم تحميله فقط في حالة عرض الصفحة على المتصفحات السابقة لمتصفح IE 9.
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8276_35" style="">
<span class="com">&lt;!--[if It IE 9]&gt;
&lt;link rel="stylesheet" type="text/css" media="all" href="style.ieIt9.css" /&gt;
&lt;![endif]--&gt;</span></pre>

<p>
	<a href="http://browserhacks.com/" rel="external nofollow">اطّلع على المزيد من الطرق لدعم استعلامات الوسائط ي المتصفحات السابقة لمتصفح IE 9.</a>
</p>

<h2>
	تقسيم الصفحات عبر استعلامات الوسائط
</h2>

<table>
<thead><tr>
<th style="text-align:right">
				القيمة
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr></thead>
<tbody>
<tr>
<td style="text-align:right">
				auto
			</td>
			<td style="text-align:right">
				تُضاف فواصل الصفحات تلقائيًا.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				always
			</td>
			<td style="text-align:right">
				تُضيف فواصل الصفحات دائمًا.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				avoid
			</td>
			<td style="text-align:right">
				تتجنب اضافة فواصل الصفحات ما أمكن.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				left
			</td>
			<td style="text-align:right">
				تُضيف فواصل الصفحات، وتعتبر الصفحة التالية صفحة يُسرى.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				right
			</td>
			<td style="text-align:right">
				تُضيف فواصل الصفحات، وتعتبر الصفحة التالية صفحة يُمنى.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				initial
			</td>
			<td style="text-align:right">
				تُرجع القيمة الإبتدائية للخاصية.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				inherit
			</td>
			<td style="text-align:right">
				ترث قيمة الخاصية من العنصر الأب.
			</td>
		</tr>
</tbody>
</table>
<p>
	<strong>ملاحظة</strong>: تستخدم هذه الخواص عند طباعة صفحات الويب، لذلك من الشائع استخدامها مع استعلامات الوسائط
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8276_37" style="">
<span class="lit">@media</span><span class="pln"> </span><span class="kwd">print</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    p </span><span class="pun">{</span><span class="pln">
        page</span><span class="pun">-</span><span class="kwd">break</span><span class="pun">-</span><span class="pln">inside</span><span class="pun">:</span><span class="pln"> avoid</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    h1 </span><span class="pun">{</span><span class="pln">
        page</span><span class="pun">-</span><span class="kwd">break</span><span class="pun">-</span><span class="pln">before</span><span class="pun">:</span><span class="pln"> always</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    h2 </span><span class="pun">{</span><span class="pln">
        page</span><span class="pun">-</span><span class="kwd">break</span><span class="pun">-</span><span class="pln">after</span><span class="pun">:</span><span class="pln"> avoid</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

<ul>
<li>
		القاعدة الأولى تمنع إضافة فواصل الصفحات داخل الفقرة، وبمعنى آخر أنها تمنع فصل الفقرة على صفحتين.
	</li>
	<li>
		القاعدة الثانية تضيف تبدأ صفحة جديدة قبل كل عناصر <code>h1</code>، أي أن كل عنصر <code>h1</code> سيبدأ في صفحة جديدة.
	</li>
	<li>
		القاعدة الثالثة تمنع بدء صفحة جديدة بعد عناصر <code>h2</code>.
	</li>
</ul>
<h1>
	وسائط الميزات (Feature Queries)
</h1>

<table>
<thead><tr>
<th style="text-align:right">
				المعامل
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr></thead>
<tbody>
<tr>
<td style="text-align:right">
				(property: value)
			</td>
			<td style="text-align:right">
				تكون صحيحة إذا كانت الخاصية المحددة مدعومة في المتصفح الذي تُعرض عليه الصفحة.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				and
			</td>
			<td style="text-align:right">
				تكون صحيحة إذا وقفط إذا تحقق الشرطان معًا.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				not
			</td>
			<td style="text-align:right">
				تكون صحيحة إذا لم يتحقق الشرط.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				or
			</td>
			<td style="text-align:right">
				تكون صحيحة إذا تحقق أحد الشروط.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				(...)
			</td>
			<td style="text-align:right">
				مجموعة الشروط.
			</td>
		</tr>
</tbody>
</table>
<h2>
	استخدام supports@
</h2>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8276_39" style="">
<span class="lit">@supports</span><span class="pln"> </span><span class="pun">(</span><span class="pln">display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="com">/* Flexbox is available, so use it */</span><span class="pln">
    </span><span class="pun">.</span><span class="kwd">my</span><span class="pun">-</span><span class="pln">container </span><span class="pun">{</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre>

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

<h2>
	الاستعلام عن عدد من الميزات
</h2>

<p>
	تستخدم العمليات <code>and</code> و<code>not</code> و<code>or</code> للاستعلام عن عدد من الميزات.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8276_41" style="">
<span class="lit">@supports</span><span class="pln"> </span><span class="pun">(</span><span class="pln">transform</span><span class="pun">:</span><span class="pln"> translateZ</span><span class="pun">(</span><span class="lit">1px</span><span class="pun">))</span><span class="pln"> </span><span class="kwd">and</span><span class="pln"> </span><span class="pun">(</span><span class="pln">transform</span><span class="pun">-</span><span class="pln">style</span><span class="pun">:</span><span class="pln"> preserve</span><span class="pun">-</span><span class="lit">3d</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">and</span><span class="pln"> </span><span class="pun">(</span><span class="pln">perspective</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="com">/* Probably do some fancy 3d stuff here */</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="lit">@supports</span><span class="pln"> </span><span class="pun">(</span><span class="pln">display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">or</span><span class="pln"> </span><span class="pun">(</span><span class="pln">display</span><span class="pun">:</span><span class="pln"> table</span><span class="pun">-</span><span class="pln">cell</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="com">/* Will be used if the browser supports flexbox or display: table-cell */</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="lit">@supports</span><span class="pln"> </span><span class="kwd">not</span><span class="pln"> </span><span class="pun">(-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">transform</span><span class="pun">:</span><span class="pln"> translate</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="pun">{</span><span class="pln">
    </span><span class="com">/* Will *not* be used if the browser supports -webkit-transform: translate(...) */</span><span class="pln">
</span><span class="pun">}</span></pre>

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

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8276_43" style="">
<span class="lit">@supports</span><span class="pln"> </span><span class="pun">((</span><span class="pln">display</span><span class="pun">:</span><span class="pln"> block</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">and</span><span class="pln"> </span><span class="pun">(</span><span class="pln">zoom</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pun">))</span><span class="pln"> </span><span class="kwd">or</span><span class="pln"> </span><span class="pun">((</span><span class="pln">display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">and</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">not</span><span class="pln"> </span><span class="pun">(</span><span class="pln">display</span><span class="pun">:</span><span class="pln"> table</span><span class="pun">-</span><span class="pln">cell</span><span class="pun">)))</span><span class="pln"> </span><span class="kwd">or</span><span class="pln">
</span><span class="pun">(</span><span class="pln">transform</span><span class="pun">:</span><span class="pln"> translateX</span><span class="pun">(</span><span class="lit">1px</span><span class="pun">))</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="com">/* ... */</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	تُطبَّق الشيفرة المحددة داخل هذا الاستعلام إذا كان:
</p>

<ol>
<li>
		يدعم المتصفح الخاصيتين <code>display: block</code> و <code>zoom: 1</code>، أو إذا كان
	</li>
	<li>
		يدعم الخاصية <code>display: flex</code> ولا يدعم الخاصية <code>display: table-cell</code>، أو إذا كان
	</li>
	<li>
		يدعم الخاصية <code>transform: translate(1px)‎</code>.
	</li>
</ol>
<p>
	ترجمة -وبتصرف- للفصل Media Queries والفصل Feature Queries من كتاب <a href="https://goalkicker.com/CSSBook/" rel="external nofollow">CSS Notes for Professionals</a>
</p>
]]></description><guid isPermaLink="false">1059</guid><pubDate>Sat, 05 Dec 2020 13:04:01 +0000</pubDate></item><item><title>&#x627;&#x644;&#x627;&#x646;&#x62A;&#x642;&#x627;&#x644;&#x627;&#x62A; (Transitions) &#x648;&#x627;&#x644;&#x62D;&#x631;&#x643;&#x627;&#x62A; (Animations) &#x641;&#x64A; CSS</title><link>https://academy.hsoub.com/programming/css/%D8%A7%D9%84%D8%A7%D9%86%D8%AA%D9%82%D8%A7%D9%84%D8%A7%D8%AA-transitions-%D9%88%D8%A7%D9%84%D8%AD%D8%B1%D9%83%D8%A7%D8%AA-animations-%D9%81%D9%8A-css-r1058/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2020_11/9.png.3c258d27f2a5dcde46b75f3ae83a0dfd.png" /></p>

<h2>
	الانتقالات عبر الخاصية <code>transition</code>
</h2>

<table>
<thead><tr>
<th style="text-align:right">
				الخاصية
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr></thead>
<tbody>
<tr>
<td style="text-align:right">
				transition-property
			</td>
			<td style="text-align:right">
				تُستعمل لتحديد خصائص CSS التي ستخضع لتأثير الانتقال.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				transition-duration
			</td>
			<td style="text-align:right">
				تُحدِّد الزمن الذي سيستغرقه تأثير الانتقال للوصول إلى القيمة النهائية للخاصية، والقيمة الافتراضية <code>0s</code> ستلغي تأثير الانتقال
			</td>
		</tr>
<tr>
<td style="text-align:right">
				transition-timing-function
			</td>
			<td style="text-align:right">
				تُستعمل لوصف كيف ستتأثر القيم الوسطية لخاصيات CSS بتأثير الانتقال، أي أنها تسمح لك بتحديد منحني التسارع (acceleration curve) لتأثير الانتقال. انظر <a href="https://www.w3.org/TR/css-transitions-1/#transition-timing-function" rel="external nofollow">التوثيق</a> لمزيد من المعلومات.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				transition-delay
			</td>
			<td style="text-align:right">
				تُحدِّد الزمن الذي يجب انتظاره بين وقوع الحدث الذي سيؤدي إلى بدء تأثير الانتقال وبين بداية التأثير
			</td>
		</tr>
</tbody>
</table>
<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>
<p>
	إليك مثال بسيط لتغيير لون العنصر من اللون الأحمر إلى اللون الأخضر تدريجًا باستعمال الخاصية <code>transition</code> خلال ثانية واحدة عند تمرير مؤشر الفأرة فوقه:
</p>

<ul>
<li>
		ملف CSS
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_7" style="">
<span class="pln">  div </span><span class="pun">{</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">150px</span><span class="pun">;</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">150px</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"> red</span><span class="pun">;</span><span class="pln">
      transition</span><span class="pun">:</span><span class="pln"> background</span><span class="pun">-</span><span class="pln">color </span><span class="lit">1s</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  div</span><span class="pun">:</span><span class="pln">hover </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"> green</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<ul>
<li>
		ملف HTML
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5167_9" style="">
<span class="pln">  </span><span class="tag">&lt;div&gt;&lt;/div&gt;</span></pre>

<h3>
	دالة التسارع <code>cubic-bezier</code>
</h3>

<p>
	تسمح لك دالة <code>cubic-bezier</code> بتخصيص منحى التسارع للحصول على انتقالات سلسة، وتأخذ أربعة معاملات:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_11" style="">
<span class="pln">cubic</span><span class="pun">-</span><span class="pln">bezier</span><span class="pun">(</span><span class="pln">P1_x</span><span class="pun">,</span><span class="pln"> P1_y</span><span class="pun">,</span><span class="pln"> P2_x</span><span class="pun">,</span><span class="pln"> P2_y</span><span class="pun">)</span></pre>

<p style="text-align: center;">
	<img alt="4jlAK.png" class="ipsImage ipsImage_thumbnailed" data-fileid="53000" data-unique="yzifqvhgg" src="https://academy.hsoub.com/uploads/monthly_2020_11/4jlAK.png.e970a3b48dca84d0d636d3c629d8a884.png"></p>

<p>
	تُرسم هذه المعاملات على <a href="https://en.wikipedia.org/wiki/B%C3%A9zier_curve#Cubic_B.C3.A9zier_curves" rel="external nofollow">مُنحنى bezier</a>، ودائمًا ما يكون المعاملين P0 و P3 ثابتين، يكون P0 في النقطة (0،0) و P3 في النقطة (1،1)، وبالتالي يجب أن تكون قيم معاملات الدالة <code>cubic-bezier</code> بين صفر وواحد.
</p>

<p style="text-align: center;">
	<img alt="FabHY.png" class="ipsImage ipsImage_thumbnailed" data-fileid="53003" data-unique="rlnmdte2s" src="https://academy.hsoub.com/uploads/monthly_2020_11/FabHY.png.a683b97fb0d25cf6b0d91c6b232d268d.png"></p>

<p>
	يُمكن التعبير عن جميع منحنيات التسارع باستخدام دالة <code>cubic-bezier</code> كما هو موضح في المثال التالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_13" style="">
<span class="pln">linear</span><span class="pun">:</span><span class="pln"> cubic</span><span class="pun">-</span><span class="pln">bezier</span><span class="pun">(</span><span class="lit">0.0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1.0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1.0</span><span class="pun">)</span><span class="pln">

ease</span><span class="pun">-</span><span class="kwd">in</span><span class="pun">:</span><span class="pln"> cubic</span><span class="pun">-</span><span class="pln">bezier</span><span class="pun">(</span><span class="lit">0.42</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1.0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1.0</span><span class="pun">)</span><span class="pln">

ease</span><span class="pun">-</span><span class="kwd">out</span><span class="pun">:</span><span class="pln"> cubic</span><span class="pun">-</span><span class="pln">bezier</span><span class="pun">(</span><span class="lit">0.0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.58</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1.0</span><span class="pun">)</span><span class="pln">

ease</span><span class="pun">-</span><span class="kwd">in</span><span class="pun">-</span><span class="kwd">out</span><span class="pun">:</span><span class="pln"> cubic</span><span class="pun">-</span><span class="pln">bezier</span><span class="pun">(</span><span class="lit">0.42</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">0.58</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1.0</span><span class="pun">)</span></pre>

<p>
	<strong>مثال</strong>
</p>

<ul>
<li>
		ملف CSS
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_15" style="">
<span class="pln">  div </span><span class="pun">{</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
      border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> solid</span><span class="pun">;</span><span class="pln">
      transition</span><span class="pun">-</span><span class="kwd">property</span><span class="pun">:</span><span class="pln"> height</span><span class="pun">,</span><span class="pln"> width</span><span class="pun">;</span><span class="pln">
      transition</span><span class="pun">-</span><span class="pln">duration</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1s</span><span class="pun">,</span><span class="pln"> </span><span class="lit">500ms</span><span class="pun">;</span><span class="pln">
      transition</span><span class="pun">-</span><span class="pln">timing</span><span class="pun">-</span><span class="kwd">function</span><span class="pun">:</span><span class="pln"> linear</span><span class="pun">;</span><span class="pln">
      transition</span><span class="pun">-</span><span class="pln">delay</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0s</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1s</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  div</span><span class="pun">:</span><span class="pln">hover </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">
      width</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></pre>

<ul>
<li>
		ملف HTML
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5167_17" style="">
<span class="pln">  </span><span class="tag">&lt;div&gt;&lt;/div&gt;</span></pre>

<ul>
<li>
		<p>
			<code>transition-property</code>: تُحدِّد هذه الخاصية الخصائص التي ستخضع لتأثير الانتقال. وفي هذا المثال سيزيد ارتفاع وعرض الحاوية تدريجيًا عند تمرير مؤشر الفأرة فوقها.
		</p>
	</li>
	<li>
		<p>
			<code>transition-duration</code>: تُحدِّد الزمن الذي سيستغرقه تأثير الانتقال للوصول إلى القيمة النهائية للخاصية. وفي هذا المثال تستغرق الخاصية <code>height</code> ثانية واحدة للإنتقال من القيمة 100 بكسل إلى 200 بكسل، بينما تستغرق الخاصية <code>width</code> نصف ثانية (500 ملي ثانية).
		</p>
	</li>
	<li>
		<p>
			<code>transition-timing-function</code>: تُحدد منحى التسارع للانتقال. القيمة الخطية (linear) تعني أن لعملية الإنتقال سرعة ثابتة.
		</p>
	</li>
	<li>
		<p>
			<code>transition-delay</code>: تُحدِّد الزمن الذي يجب انتظاره بين وقوع الحدث الذي سيؤدي إلى بدء تأثير الانتقال وبين بداية التأثير. وفي هذا المثال يبدأ تأثير الانتقال للخاصية <code>height</code> لحظيًا (أي فور تمرير مؤشر الفأرة فوق الحاوية)، بينما يبدأ تأثير الإنتقال للخاصية <code>width</code> بعد مرور ثانية واحدة من ذلك.
		</p>
	</li>
</ul>
<h2>
	إنشاء الحركات باستخدام خاصية <code>transition</code>
</h2>

<p>
	يُمكن استخدام الخاصية <code>transition</code> لإنشاء الحركات البسيطة والغير معقدة.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_19" style="">
<span class="pun">.</span><span class="pln">example </span><span class="pun">{</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> </span><span class="com">#fff;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">example</span><span class="pun">:</span><span class="pln">hover </span><span class="pun">{</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">120px</span><span class="pun">;</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> </span><span class="com">#ff0000;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	اطَّلع على تجربة حيَّة لهذا المثال على <a href="https://jsfiddle.net/0kcm6rwo/" rel="external nofollow">JSFiddle</a>.
</p>

<p>
	عند تمرير مؤشر الفأرة على أي عنصر يمتلك الصنف <code>example.</code> يتحول الإرتفاع مباشرة إلى 120 بكسل ويتغير لون الخلفية إلى اللون الأحمر (ff0000‎#)، وبإضافة خاصية <code>transition</code> يُمكن التحكم في المدة الزمنية التي يستغرقها هذا الإنتقال.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_21" style="">
<span class="pun">.</span><span class="pln">example </span><span class="pun">{</span><span class="pln">
    </span><span class="pun">...</span><span class="pln">
    transition</span><span class="pun">:</span><span class="pln"> all </span><span class="lit">400ms</span><span class="pln"> ease</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	اطَّلع على تجربة حية لهذا المثال على <a href="https://jsfiddle.net/v2j4ggue/1/" rel="external nofollow">JSFiddle</a>.
</p>

<p>
	<strong>دعم المتصفحات لخاصية <code>transition</code></strong>
</p>

<p>
	خاصية <code>transition</code> مدعومة في جميع المتصفحات الأساسية عدا متصفح IE9 وبعض الإصدارات القديمة من متصفح Firefox، ويُمكن استعمال البوادئ الخاصة بهذه المتصفحات لدعم خاصية <code>transition</code> فيها.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_23" style="">
<span class="pun">.</span><span class="pln">example </span><span class="pun">{</span><span class="pln">
    transition</span><span class="pun">:</span><span class="pln"> all </span><span class="lit">400ms</span><span class="pln"> ease</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">-</span><span class="pln">moz</span><span class="pun">-</span><span class="pln">transition</span><span class="pun">:</span><span class="pln"> all </span><span class="lit">400ms</span><span class="pln"> ease</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">transition</span><span class="pun">:</span><span class="pln"> all </span><span class="lit">400ms</span><span class="pln"> ease</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<h2>
	تحريك العناصر عبر الخاصية <code>animation</code>
</h2>

<p>
	تستعمل الخاصية <code>animation</code> لتطبيق حركة محددة على عنصر، وتأخذ إحدى القيم التالية:
</p>

<table>
<thead><tr>
<th style="text-align:right">
				المعامل
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr></thead>
<tbody>
<tr>
<td style="text-align:right">
				property
			</td>
			<td style="text-align:right">
				تحدِّد خصائص CSS التي ستتأثر بالحركات.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				duration
			</td>
			<td style="text-align:right">
				تحدِّد الزمن اللازم لإكمال دورة كاملة من الحركة.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				timing-function
			</td>
			<td style="text-align:right">
				تُستَعمل لوصف كيف ستتأثر القيم الوسطية لخصائص CSS بالحركة، أي أنها تسمح لك بتحديد منحني التسارع (acceleration curve) للحركة خلال دورة واحدة. انظر <a href="https://easings.net/" rel="external nofollow">دليل منحنيات التسارع</a>.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				delay
			</td>
			<td style="text-align:right">
				تُحدِّد متى ستبدأ الحركة، ويمكنك تأخير بدء الحركة فترةً من الزمن، أو البدء مباشرةً، أو البدء مباشرةً لكن مع تجاوز جزء من دورة الحركة.
			</td>
		</tr>
</tbody>
</table>
<h3>
	إنشاء الحركات مخصصة باستخدام <code>keyframes@</code>
</h3>

<p>
	تستخدم القاعدة<code>‎@keyframes</code> للتحكم بالخطوات البينية (intermediate steps) في سلسلة حركات CSS عبر تعريف أنماط للإطارات المفتاحية (keyframes)، مما يعطينا تحكمًا كبيرًا في أنماط العنصر في الخطوات البينية بالموازنة مع الانتقالات <code>transition</code>.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_25" style="">
<span class="lit">@keyframes</span><span class="pln"> rainbow</span><span class="pun">-</span><span class="pln">background </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"> background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> </span><span class="com">#ff0000; }</span><span class="pln">
    </span><span class="lit">8.333</span><span class="pun">%</span><span class="pln">  </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">#ff8000; }</span><span class="pln">
    </span><span class="lit">16.667</span><span class="pun">%</span><span class="pln"> </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">#ffff00; }</span><span class="pln">
    </span><span class="lit">25.000</span><span class="pun">%</span><span class="pln"> </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">#80ff00; }</span><span class="pln">
    </span><span class="lit">33.333</span><span class="pun">%</span><span class="pln"> </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">#00ff00; }</span><span class="pln">
    </span><span class="lit">41.667</span><span class="pun">%</span><span class="pln"> </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">#00ff80; }</span><span class="pln">
    </span><span class="lit">50.000</span><span class="pun">%</span><span class="pln"> </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">#00ffff; }</span><span class="pln">
    </span><span class="lit">58.333</span><span class="pun">%</span><span class="pln"> </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">#0080ff; }</span><span class="pln">
    </span><span class="lit">66.667</span><span class="pun">%</span><span class="pln"> </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">#0000ff; }</span><span class="pln">
    </span><span class="lit">75.000</span><span class="pun">%</span><span class="pln"> </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">#8000ff; }</span><span class="pln">
    </span><span class="lit">83.333</span><span class="pun">%</span><span class="pln"> </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">#ff00ff; }</span><span class="pln">
    </span><span class="lit">91.667</span><span class="pun">%</span><span class="pln"> </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">#ff0080; }</span><span class="pln">
    </span><span class="lit">100.00</span><span class="pun">%</span><span class="pln"> </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">#ff0000; }</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="typ">RainbowBackground</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    animation</span><span class="pun">:</span><span class="pln"> rainbow</span><span class="pun">-</span><span class="pln">background </span><span class="lit">5s</span><span class="pln"> infinite</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	اطَّلع على تجربة حيَّة للمثال أعلاه على <a href="https://jsfiddle.net/s9m3od3p/6/" rel="external nofollow">JSFiddle</a>.
</p>

<p>
	<strong>ملاحظات</strong>
</p>

<p>
	تُكتب قاعدة <code>keyframes@</code> بالصيغة الموضحة بالشيفرة أدناه حُيث <code>rainbow-background</code> هو اسم الحركة.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_27" style="">
<span class="lit">@keyframes</span><span class="pln"> rainbow</span><span class="pun">-</span><span class="pln">background </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">background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> </span><span class="com">#ff0000; }</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	تمثل القيمة 0% نُقطة بداية الحركة، أي الأنماط التي ستُطبق عند بدء الحركة، وتنتقل الحركة تلقائيًا للنُقطة الثانية عند مرور 8.333% من زمن الحركة، ومن ثم إلى النقطة الثالثة عند مرور 16.667% من زمن الحركة وهكذا.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_29" style="">
<span class="pun">.</span><span class="typ">Rainbowbackground</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    animation</span><span class="pun">:</span><span class="pln"> rainbow</span><span class="pun">-</span><span class="pln">background </span><span class="lit">5s</span><span class="pln"> infinite</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	تُضيف هذه الشفرة الحركة <code>rainbow-background</code> لكل العناصر التي تمتلك الصنف <code>RainbowBackground.</code>.
</p>

<p>
	تأخذ خاصية <code>animation</code> عدد من المعاملات هي:
</p>

<ul>
<li>
		<code>animation-name</code> : يُحدِّد اسم الحركة.
	</li>
	<li>
		<code>animation-duration</code> : يُحدِّد الزمن اللازم لإكمال دورة كاملة من الحركة.
	</li>
	<li>
		<code>animation-iteration-count</code> : (اختياري) يُحدِّد عدد تكرارات الحركة، ويأخذ القيمة <code>infinite</code> في حال كانت الحركة لانهائية (مستمرة).
	</li>
	<li>
		<code>animation-delay</code> : (إختياري) يُحدِّد متى ستبدأ الحركة، ويُمكن أن يأخذ قيم موجبة أو سالبة أو صفر وهي القيمة الإفتراضية له. القيم السالبة تعني أن الحركة ستبدأ مُتقدمة قليلًا حسب المقدار المحدد.
	</li>
	<li>
		<code>animation-timing-function</code> : (إختياري) يُحدِّد منحني التسارع (acceleration curve) للحركة خلال دورة واحدة.
	</li>
</ul>
<p>
	تأخذ الخاصية <code>background-color</code> في المثال التالي القيمة <code>FF0000#</code> عند النقطتين 0% و 100% لذلك يُمكن تعريف هاتين النقطتين بسطر واحد كما هو موضح بالشيفرة التالية:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_31" style="">
<span class="lit">0</span><span class="pun">%,</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%</span><span class="pln"> </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">#ff000- }</span></pre>

<p>
	<strong>دعم المتصفحات لقاعدة keyframes@</strong>
</p>

<p>
	إن أردت استعمال قاعدة <code>keyframes@</code> في المتصفحات القديمة يجب إضافة البادئة <code>webkit-</code> كما هو موضح في الشيفرة التالية:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_33" style="">
<span class="pun">@-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">keyframes </span><span class="pun">{}</span><span class="pln">

</span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">animation</span><span class="pun">:</span><span class="pln"> </span><span class="pun">...</span></pre>

<h2>
	أمثلة لاستعمال الخاصية animation
</h2>

<p>
	<strong>مثال: الصيغة المختزلة لخاصية animation</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_35" style="">
<span class="pln">animation</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3s</span><span class="pln"> ease</span><span class="pun">-</span><span class="kwd">in</span><span class="pln"> </span><span class="lit">1s</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> reverse both paused slidein</span><span class="pun">;</span><span class="pln">

</span><span class="com">/* ترتيب الخصائص */</span><span class="pln">
animation</span><span class="pun">:</span><span class="pln"> </span><span class="str">&lt;duration&gt;</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln">timing</span><span class="pun">-</span><span class="kwd">function</span><span class="pun">&gt;</span><span class="pln"> </span><span class="str">&lt;delay&gt;</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln">iteration</span><span class="pun">-</span><span class="pln">count</span><span class="pun">&gt;</span><span class="pln"> </span><span class="str">&lt;direction&gt;</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln">fill</span><span class="pun">-</span><span class="pln">mode</span><span class="pun">&gt;</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln">play</span><span class="pun">-</span><span class="pln">state</span><span class="pun">&gt;</span><span class="pln"> </span><span class="str">&lt;name&gt;</span></pre>

<p>
	<strong>مثال: حذف بعض الخصائص الاختيارية للخاصية animation</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_37" style="">
<span class="pln">animation</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3s</span><span class="pln"> linear </span><span class="lit">1s</span><span class="pln"> slidein</span><span class="pun">;</span><span class="pln">

</span><span class="com">/* ترتيب الخصائص */</span><span class="pln">
animation</span><span class="pun">:</span><span class="pln"> </span><span class="str">&lt;duration&gt;</span><span class="pln"> </span><span class="str">&lt;linear&gt;</span><span class="pln"> </span><span class="str">&lt;delay&gt;</span><span class="pln"> </span><span class="str">&lt;name&gt;</span></pre>

<p>
	<strong>مثال: أبسط تعريف لخاصية <code>animation</code></strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_39" style="">
<span class="pln">animation</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3s</span><span class="pln"> slidein</span><span class="pun">;</span><span class="pln">

</span><span class="com">/* ترتيب الخصائص */</span><span class="pln">
animation</span><span class="pun">:</span><span class="pln"> </span><span class="str">&lt;duration&gt;</span><span class="pln"> </span><span class="str">&lt;name&gt;</span></pre>

<p>
	<strong>مثال: كتابة خصائص الحركات منفصلة</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_41" style="">
<span class="pln">animation</span><span class="pun">-</span><span class="pln">duration</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3s</span><span class="pun">;</span><span class="pln">
animation</span><span class="pun">-</span><span class="pln">timing</span><span class="pun">-</span><span class="kwd">function</span><span class="pun">:</span><span class="pln"> ease</span><span class="pun">-</span><span class="kwd">in</span><span class="pun">;</span><span class="pln">
animation</span><span class="pun">-</span><span class="pln">delay</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1s</span><span class="pun">;</span><span class="pln">
animation</span><span class="pun">-</span><span class="pln">iteration</span><span class="pun">-</span><span class="pln">count</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2</span><span class="pun">;</span><span class="pln">
animation</span><span class="pun">-</span><span class="pln">direction</span><span class="pun">:</span><span class="pln"> reverse</span><span class="pun">;</span><span class="pln">
animation</span><span class="pun">-</span><span class="pln">fill</span><span class="pun">-</span><span class="pln">mode</span><span class="pun">:</span><span class="pln"> both</span><span class="pun">;</span><span class="pln">
animation</span><span class="pun">-</span><span class="pln">play</span><span class="pun">-</span><span class="pln">state</span><span class="pun">:</span><span class="pln"> paused</span><span class="pun">;</span><span class="pln">
animation</span><span class="pun">-</span><span class="pln">name</span><span class="pun">:</span><span class="pln"> slidein</span></pre>

<h2>
	تحسين أداء عملية التحريك عبر <code>will-change</code>
</h2>

<p>
	تستعمل خاصية <code>transition</code> وقاعدة <code>keyframes@</code> معالج الرسومات (GPU) استعمالًا ثقيلًا، ويمكن تحسين أداء هاتين الخاصيتين باستخدام الخاصية <code>will-change</code> التي تُخبر المتصفح أن هناك جزء من الصفحة قابل للتغيير في لحظة زمنية معينة. تأخذ الخاصية <code>will-change</code> اسماء الخصائص التي تتأثر بالخاصية <code>transition</code> أو بالقاعدة <code>keyframes@</code> وتخبر المتصفح أن هذه الخصائص ستتغير في لحظة ما.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_43" style="">
<span class="pun">.</span><span class="pln">example </span><span class="pun">{</span><span class="pln">
    </span><span class="pun">...</span><span class="pln">
    will</span><span class="pun">-</span><span class="pln">change</span><span class="pun">:</span><span class="pln"> transform</span><span class="pun">,</span><span class="pln"> opacity</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<h2>
	التحويلات ثُنائية الأبعاد (2D Transforms)
</h2>

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

<table>
<thead><tr>
<th style="text-align:right">
				الدالة أو المعامل
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr></thead>
<tbody>
<tr>
<td style="text-align:right">
				<code>(rotate(x</code>
			</td>
			<td style="text-align:right">
				تُستخدم لتدوير العنصر حول المحور Z.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				<code>(translate(x,y</code>
			</td>
			<td style="text-align:right">
				تُستخدم لتحريك العنصر على المحورين X و Y.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				<code>(translateX(x</code>
			</td>
			<td style="text-align:right">
				تُستخدم لتحريك العنصر على المحور X.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				<code>(translateY(y</code>
			</td>
			<td style="text-align:right">
				تُستخدم لتحريك العنصر على المحور Y.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				<code>(scale(x,y</code>
			</td>
			<td style="text-align:right">
				تُستخدم لإعادة تحجيم أحد العناصر على المحورين X و Y مما يؤدي إلى تكبيره أو تصغيره.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				<code>(scaleX(x</code>
			</td>
			<td style="text-align:right">
				تُستخدم لإعادة تحجيم أحد العناصر على المحور X.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				<code>(scaleY(y</code>
			</td>
			<td style="text-align:right">
				تُستخدم لإعادة تحجيم أحد العناصر على المحور Y.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				<code>(skew(x,y</code>
			</td>
			<td style="text-align:right">
				تستخدم لجعل العنصر منحرفًا، أي كأنَّنا أمسكنا بضلعين متقابلين من المستطيل وحركناهما باتجاهين مختلفين، مما يؤدي إلى تحويل المستطيل إلى متوازي أضلاع.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				<code>(skewX(x</code>
			</td>
			<td style="text-align:right">
				تستخدم لجعل العنصر منحرفًا في الاتجاه الأفقي (محور X).
			</td>
		</tr>
<tr>
<td style="text-align:right">
				<code>(skewY(y</code>
			</td>
			<td style="text-align:right">
				تستخدم لجعل العنصر منحرفًا في الاتجاه الرأسي (محور Y).
			</td>
		</tr>
<tr>
<td style="text-align:right">
				<code>matrix()‎</code>
			</td>
			<td style="text-align:right">
				تستخدم الدالة <code>matrix()‎</code> لتطبيق مصفوفة تحويلات في الفضاء ثنائي الأبعاد، ويمكن أن تحتوي المصفوفة على أكثر من تحويل في آنٍ واحد.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				angle
			</td>
			<td style="text-align:right">
				تُحدد زاوية التحويل التي ستُمرَّر إلى الدالة، ويمكن أن تكون بالدرجات أو بالتقدير الدائري (راديان) أو بعدد اللدورات.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				length-or-percentage
			</td>
			<td style="text-align:right">
				تُحدد مسافة التحويل التي ستُمرَّر إلى الدالة.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				scale-factor
			</td>
			<td style="text-align:right">
				يُحدد عدد مرات تكبير أو تصغير العنصر.
			</td>
		</tr>
</tbody>
</table>
<h3>
	دالة <code>rotate()‎</code>
</h3>

<p>
	تستخدم الدالة <code>rotate()‎</code> لتدوير العنصر في الفضاء ثنائي الأبعاد بمقدار الزاوية <code>&lt;angle&gt;</code> المُمرَّرة إليه، القيم الموجبة للزاوية ستؤدي إلى تدوير العنصر باتجاه عقارب الساعة، أما القيم السالبة تُدَوِّر العنصر في عكس اتجاه عقارب الساعة.
</p>

<p>
	<strong>مثال</strong>
</p>

<ul>
<li>
		ملف HTML
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5167_45" style="">
<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">"rotate"</span><span class="tag">&gt;&lt;/div&gt;</span></pre>

<ul>
<li>
		ملف CSS
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_47" style="">
<span class="pln">  </span><span class="pun">.</span><span class="pln">rotate </span><span class="pun">{</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
      background</span><span class="pun">:</span><span class="pln"> teal</span><span class="pun">;</span><span class="pln">
      transform</span><span class="pun">:</span><span class="pln"> rotate</span><span class="pun">(</span><span class="lit">45deg</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	ويكون مركز الدوران بشكل إفتراضي في منتصف العنصر، ويمكن تغييره عن طريق الخاصية <code>transform-origin</code> كما هو موضح في المثال التالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_49" style="">
<span class="pln">transform</span><span class="pun">-</span><span class="pln">origin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%</span><span class="pln"> </span><span class="lit">50</span><span class="pun">%;</span></pre>

<h3>
	دالة <code>scale()‎</code>
</h3>

<p>
	تستخدم الدالة <code>scale()‎</code> لإعادة تحجيم أحد العناصر مما يؤدي إلى تكبيره أو تصغيره، وتأخذ هذه الدالة قيمتين رقميتين <code>&lt;number&gt;</code>، القيمة الأولى (sx) تؤدي إلى إعادة تحجيم العنصر على المحور X، أما القيمة الثانية (sy) فتُعيد تحجيمه على المحور Y، وإذا وفّرنا قيمةً واحدةً سيفترض المتصفح أن القيمتان (sx) و(sy) متساويتان.
</p>

<p>
	إذا كانت القيمة أكبر من 1، سيزداد حجم العنصر على المحور المُحدَّد، وأمّا إذا كانت مساويةً للرقم 1 فسيبقى العنصر على حاله (بدون تصغير أو تكبير) على المحور المُحدَّد، أما إذا كانت القيمة بين الصفر والواحد فستؤدي إلى تصغير العنصر، أما القيمة 0 فستخفي العنصر تمامًا من الصفحة؛ ويُسمَح باستخدام القيم السالبة، لكنها لن تؤدي إلى إعادة تحجيم العنصر وإنما قلبه (flip) في الاتجاه المُحدَّد.
</p>

<p>
	<strong>مثال</strong>
</p>

<ul>
<li>
		ملف HTML
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5167_51" style="">
<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">"scale"</span><span class="tag">&gt;&lt;/div&gt;</span></pre>

<ul>
<li>
		ملف CSS
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_53" style="">
<span class="pln">  </span><span class="pun">.</span><span class="pln">scale </span><span class="pun">{</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
      background</span><span class="pun">:</span><span class="pln"> teal</span><span class="pun">;</span><span class="pln">
      transform</span><span class="pun">:</span><span class="pln"> scale</span><span class="pun">(</span><span class="lit">0.5</span><span class="pun">,</span><span class="pln"> </span><span class="lit">1.3</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span></pre>

<h3>
	دالة <code>skew()‎</code>
</h3>

<p>
	تستخدم الدالة <code>skew()‎</code> لجعل العنصر منحرفًا، أي كأنَّنا أمسكنا بضلعين متقابلين من المستطيل وحرَّكناهما باتجاهين مختلفين، مما يردي إلى تحويل المستطيل إلى متوازي أضلاع.
</p>

<p>
	تأخذ هذه الدالة قيمةً واحدةً أو قيمتين، وكلا القيمتين هي زاوية ، تؤدي القيمة الأولى إلى انحراف العنصر على المحور X، وتؤدي الثانية إلى انحراف العنصر على المحور Y، إذا لم تتوافر القيمة الثانية فستُعدّ أنها صفر.
</p>

<p>
	<strong>مثال</strong>
</p>

<ul>
<li>
		ملف HTML
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5167_55" style="">
<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">"skew"</span><span class="tag">&gt;&lt;/div&gt;</span></pre>

<ul>
<li>
		ملف CSS
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_57" style="">
<span class="pln">  </span><span class="pun">.</span><span class="pln">skew </span><span class="pun">{</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
      background</span><span class="pun">:</span><span class="pln"> teal</span><span class="pun">;</span><span class="pln">
      transform</span><span class="pun">:</span><span class="pln"> skew</span><span class="pun">(</span><span class="lit">20deg</span><span class="pun">,</span><span class="pln"> </span><span class="pun">-</span><span class="lit">30deg</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	اطَّلع على تجربة حيَّة لهذا المثال على <a href="https://jsfiddle.net/MadalinaTn/gtt4osms/1/" rel="external nofollow">JSFiddle</a>.
</p>

<h3>
	التحويلات المُتعددة
</h3>

<p>
	يُمكن إضافة عدد من التحويلات للعنصر كما هو موضح في المثال التالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_59" style="">
<span class="pln">transform</span><span class="pun">:</span><span class="pln"> rotate</span><span class="pun">(</span><span class="lit">15deg</span><span class="pun">)</span><span class="pln"> translateX</span><span class="pun">(</span><span class="lit">200px</span><span class="pun">);</span></pre>

<p>
	هذه الشيفرة تُدَوِّر العنصر 15 درجة في إتجاه عقارب الساعة ومن ثم تحركة لإتجاه اليمين بمقدار 200 بكسل.
</p>

<p>
	يجب ملاحظة أن المحاور ستُدور مع العنصر مما يجعل إتجاه التحريك مائل بزاوية 15 درجة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="53006" href="https://academy.hsoub.com/uploads/monthly_2020_11/Ur0RG.jpg.57b56ac01e8158d3903b3ea02f5f981c.jpg" rel=""><img alt="Ur0RG.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="53006" data-unique="78frkp80p" src="https://academy.hsoub.com/uploads/monthly_2020_11/Ur0RG.thumb.jpg.591702ff48d277aab7e148366f16e22d.jpg"></a>
</p>

<p>
	لتحريك العنصر أفقيًا يجب تغيير ترتيب الخواص كما هو موضح في المثال التالي:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5167_61" style="">
<span class="tag">&lt;style&gt;</span><span class="pln">
</span><span class="pun">.</span><span class="pln">transform </span><span class="pun">{</span><span class="pln">
    transform</span><span class="pun">:</span><span class="pln"> translateX</span><span class="pun">(</span><span class="lit">200px</span><span class="pun">)</span><span class="pln"> rotate</span><span class="pun">(</span><span class="lit">15deg</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&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">"transform"</span><span class="tag">&gt;&lt;/div&gt;</span></pre>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="53005" href="https://academy.hsoub.com/uploads/monthly_2020_11/QozeC.jpg.55dd66e294fe89c742d2054f07189a6f.jpg" rel=""><img alt="QozeC.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="53005" data-unique="hz0kr69y5" src="https://academy.hsoub.com/uploads/monthly_2020_11/QozeC.thumb.jpg.ed8b13e23fa233d08ef8cf172b10d5e7.jpg"></a>
</p>

<h3>
	دالة <code>translate()‎</code>
</h3>

<p>
	تستخدم الدالة <code>translate()‎</code> لتحريك العنصر وفق القيم المُمرَّرة إلى الدالة، إذ تمثل القيمة الأولى التحريك على المحور X، وتمثل القيمة الثانية التحريك على المحور Y، وإذا لم تُحدد القيمة الثانية فسيتحرَّك العنصر على المحور X فقط؛ ويمكن أن تكون كلا القيمتين طولًا مطلقًا <code>&lt;length&gt;</code> أو نسبةً مئويةً <code>&lt;percentage&gt;</code> من أبعاد صندوق العنصر.
</p>

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

<p>
	<strong>مثال</strong>
</p>

<ul>
<li>
		ملف HTML
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5167_63" style="">
<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">"translate"</span><span class="tag">&gt;&lt;/div&gt;</span></pre>

<ul>
<li>
		ملف CSS
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_65" style="">
<span class="pln">  </span><span class="pun">.</span><span class="pln">translate </span><span class="pun">{</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
      background</span><span class="pun">:</span><span class="pln"> teal</span><span class="pun">;</span><span class="pln">
      transform</span><span class="pun">:</span><span class="pln"> translate</span><span class="pun">(</span><span class="lit">200px</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></pre>

<p>
	ويمكن تحريك العنصر على محور X فقط باستعمال الخاصية <code>translateX</code> أو على محور Y فقط باستعمال الخاصية <code>translateY</code>.
</p>

<p>
	<strong>مثال: تحريك العنصر على محور X فقط</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_67" style="">
<span class="pun">.</span><span class="pln">translate </span><span class="pun">{</span><span class="pln">
    transform</span><span class="pun">:</span><span class="pln"> translateX</span><span class="pun">(</span><span class="lit">200px</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	<strong>مثال: تحريك العنصر على محور Y فقط</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_69" style="">
<span class="pun">.</span><span class="pln">translate </span><span class="pun">{</span><span class="pln">
    transform</span><span class="pun">:</span><span class="pln"> translateY</span><span class="pun">(</span><span class="lit">50</span><span class="pun">%);</span><span class="pln">
</span><span class="pun">}</span></pre>

<h3>
	الخاصية <code>transform-origin</code>
</h3>

<p>
	تسمح الخاصية <code>transform-origin</code> بتحديد مبدأ الإحداثيات للتحويلات التي ستجرى على العنصر، والقيمة الافتراضية لمبدأ الاحداثيات هي مركز العنصر، وتأخذ هذه الخاصية قيمتان تحددان الأحداثيات على المحورين X و Y على التوالي.
</p>

<p>
	<strong>مثال</strong>
</p>

<ul>
<li>
		ملف HTML
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5167_71" style="">
<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">"transform originl"</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">"transform origin2"</span><span class="tag">&gt;&lt;/div&gt;</span></pre>

<ul>
<li>
		ملف CSS
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_73" style="">
<span class="pln">  transform </span><span class="pun">{</span><span class="pln">
      display</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">inline</span><span class="pun">-</span><span class="pln">block</span><span class="pun">;</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">200px</span><span class="pun">;</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
      background</span><span class="pun">:</span><span class="pln"> teal</span><span class="pun">;</span><span class="pln">
      transition</span><span class="pun">:</span><span class="pln"> transform </span><span class="lit">1s</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">origin1 </span><span class="pun">{</span><span class="pln">
      transform</span><span class="pun">-</span><span class="pln">origin</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="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">origin2 </span><span class="pun">{</span><span class="pln">
      transform</span><span class="pun">-</span><span class="pln">origin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</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">transform</span><span class="pun">:</span><span class="pln">hover </span><span class="pun">{</span><span class="pln">
      transform</span><span class="pun">:</span><span class="pln"> rotate</span><span class="pun">(</span><span class="lit">30deg</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span></pre>

<h2>
	التحويلات ثلاثية الأبعاد (3D Transforms)
</h2>

<h3>
	إنشاء شكل مؤشر البوصلة باستخدام التحويلات ثلاثية الأبعاد
</h3>

<ul>
<li>
		ملف CSS
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_75" style="">
<span class="pln">  div</span><span class="pun">.</span><span class="pln">needle </span><span class="pun">{</span><span class="pln">
      margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">150px</span><span class="pun">;</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">150px</span><span class="pun">;</span><span class="pln">
      transform</span><span class="pun">:</span><span class="pln"> rotateY</span><span class="pun">(</span><span class="lit">85deg</span><span class="pun">)</span><span class="pln"> rotateZ</span><span class="pun">(</span><span class="lit">45deg</span><span class="pun">);</span><span class="pln">
      background</span><span class="pun">-</span><span class="pln">image</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 top left</span><span class="pun">,</span><span class="pln"> </span><span class="com">#555 0%, #555 40%, #444 50%, #333 97%);</span><span class="pln">
      box</span><span class="pun">-</span><span class="pln">shadow</span><span class="pun">:</span><span class="pln"> inset </span><span class="lit">6px</span><span class="pln"> </span><span class="lit">6px</span><span class="pln"> </span><span class="lit">22px</span><span class="pln"> </span><span class="lit">8px</span><span class="pln"> </span><span class="com">#272727;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<ul>
<li>
		ملف HTML
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5167_77" style="">
<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">"needle"</span><span class="tag">&gt;&lt;/div&gt;</span></pre>

<p>
	عندما نُطبق خاصية التدوير <code>rotate</code>، يحدث الدوران حول محور Z فقط، وفي أفضل الأحوال يكون الشكل الناتج هو شكل الماس (diamond shape)، لذلك نُضيف الخاصية <code>rotateY</code> لضغط العنصر في محور Y لإنتاج شكل الإبرة أو مؤشر البوصلة.
</p>

<p>
	ناتج هذا المثال هو إبرة (مؤشر بوصلة) ترتكز على طرفها، ولإنشاء إبرة ترتكز على قاعدتها يجب استبدال الخاصية <code>rotateY</code> بالخاصية <code>rotateX</code> مع إبقاء نفس قيم الزوايا.
</p>

<p>
	الصور أدناه توضح ناتج هذا المثال
</p>

<p>
	<strong>صورة العنصر قبل تطبيق التحويلات</strong>
</p>

<p style="text-align: center;">
	<img alt="MdwTb.png" class="ipsImage ipsImage_thumbnailed" data-fileid="53004" data-unique="zerlu3do8" src="https://academy.hsoub.com/uploads/monthly_2020_11/MdwTb.png.661d8bab37d40d4f2ced9dafe412fbec.png"></p>

<p>
	<strong>صورة العنصر في حال استخدام التحويلات ثنائية الأبعاد</strong>
</p>

<p style="text-align: center;">
	<img alt="7Puvn.png" class="ipsImage ipsImage_thumbnailed" data-fileid="53001" data-unique="i70qkyczn" src="https://academy.hsoub.com/uploads/monthly_2020_11/7Puvn.png.af00f991deb18a3fbb25e21394a5d11f.png"></p>

<p>
	<strong>صورة العنصر بعد تطبيق التحويلات ثلاثية الأبعاد</strong>
</p>

<p style="text-align: center;">
	<img alt="8Z7d8.png" class="ipsImage ipsImage_thumbnailed" data-fileid="53002" data-unique="gawki39f2" src="https://academy.hsoub.com/uploads/monthly_2020_11/8Z7d8.png.b49ec4879e59b98cad64196e08d2b7ce.png"></p>

<h2>
	إنشاء نص ثلاثي الأبعاد مع تأثير الظل
</h2>

<ul>
<li>
		ملف HTML
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5167_79" style="">
<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">"title"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;h1</span><span class="pln"> </span><span class="atn">data-content</span><span class="pun">=</span><span class="atv">"HOVER"</span><span class="tag">&gt;</span><span class="pln">
          Hover
      </span><span class="tag">&lt;/h1&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span></pre>

<ul>
<li>
		ملف CSS
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_81" style="">
<span class="pln">  </span><span class="pun">*{</span><span class="pln">margin</span><span class="pun">:</span><span class="lit">0</span><span class="pun">;</span><span class="pln">padding</span><span class="pun">:</span><span class="lit">0</span><span class="pun">;}</span><span class="pln">
  html</span><span class="pun">,</span><span class="pln">body</span><span class="pun">{</span><span class="pln">
      height</span><span class="pun">:</span><span class="lit">100</span><span class="pun">%;</span><span class="pln">
      width</span><span class="pun">:</span><span class="lit">100</span><span class="pun">%;</span><span class="pln">
      overflow</span><span class="pun">:</span><span class="pln">hidden</span><span class="pun">;</span><span class="pln">
      background</span><span class="pun">:#</span><span class="lit">0099CC</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="com">#title{</span><span class="pln">
      position</span><span class="pun">:</span><span class="pln">absolute</span><span class="pun">;</span><span class="pln">
      top</span><span class="pun">:</span><span class="lit">50</span><span class="pun">%;</span><span class="pln"> left</span><span class="pun">:</span><span class="lit">50</span><span class="pun">%;</span><span class="pln">
      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="lit">50</span><span class="pun">%);</span><span class="pln">
      perspective</span><span class="pun">-</span><span class="pln">origin</span><span class="pun">:</span><span class="lit">50</span><span class="pun">%</span><span class="pln"> </span><span class="lit">50</span><span class="pun">%;</span><span class="pln">
      perspective</span><span class="pun">:</span><span class="lit">300px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  h1</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="lit">12vmin</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">'Open Sans'</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">
      color</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="lit">0</span><span class="pun">,</span><span class="lit">0</span><span class="pun">,</span><span class="lit">0.8</span><span class="pun">);</span><span class="pln">
      line</span><span class="pun">-</span><span class="pln">height</span><span class="pun">:</span><span class="lit">1em</span><span class="pun">;</span><span class="pln">
      transform</span><span class="pun">:</span><span class="pln">rotateY</span><span class="pun">(</span><span class="lit">50deg</span><span class="pun">);</span><span class="pln">
      perspective</span><span class="pun">:</span><span class="lit">150px</span><span class="pun">;</span><span class="pln">
      perspective</span><span class="pun">-</span><span class="pln">origin</span><span class="pun">:</span><span class="lit">0</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">
  h1</span><span class="pun">:</span><span class="pln">after</span><span class="pun">{</span><span class="pln">
      content</span><span class="pun">:</span><span class="pln">attr</span><span class="pun">(</span><span class="pln">data</span><span class="pun">-</span><span class="pln">content</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">
      left</span><span class="pun">:</span><span class="lit">0</span><span class="pun">;</span><span class="pln">top</span><span class="pun">:</span><span class="lit">0</span><span class="pun">;</span><span class="pln">
      transform</span><span class="pun">-</span><span class="pln">origin</span><span class="pun">:</span><span class="lit">50</span><span class="pun">%</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%;</span><span class="pln">
      transform</span><span class="pun">:</span><span class="pln">rotateX</span><span class="pun">(-</span><span class="lit">90deg</span><span class="pun">);</span><span class="pln">
      color</span><span class="pun">:#</span><span class="lit">0099CC</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="com">#title:before{</span><span class="pln">
      content</span><span class="pun">:</span><span class="str">''</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">
      top</span><span class="pun">:-</span><span class="lit">150</span><span class="pun">%;</span><span class="pln"> left</span><span class="pun">:-</span><span class="lit">25</span><span class="pun">%;</span><span class="pln">
      width</span><span class="pun">:</span><span class="lit">180</span><span class="pun">%;</span><span class="pln"> height</span><span class="pun">:</span><span class="lit">328</span><span class="pun">%;</span><span class="pln">
      background</span><span class="pun">:</span><span class="pln">rgba</span><span class="pun">(</span><span class="lit">255</span><span class="pun">,</span><span class="lit">255</span><span class="pun">,</span><span class="lit">255</span><span class="pun">,</span><span class="lit">0.7</span><span class="pun">);</span><span class="pln">
      transform</span><span class="pun">-</span><span class="pln">origin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%;</span><span class="pln">
      transform</span><span class="pun">:</span><span class="pln"> translatez</span><span class="pun">(-</span><span class="lit">200px</span><span class="pun">)</span><span class="pln"> rotate</span><span class="pun">(</span><span class="lit">40deg</span><span class="pun">)</span><span class="pln"> skewX</span><span class="pun">(</span><span class="lit">35deg</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="lit">0</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="lit">100</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>

<p style="text-align: center;">
	<img alt="3dtext.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="52999" data-unique="a284l9yhi" src="https://academy.hsoub.com/uploads/monthly_2020_11/3dtext.PNG.b4a1d467e5eef58b7ac9fd2ac69482e1.PNG"></p>

<p>
	اطَّلع على تجربة حيَّة لهذا المثال على <a href="http://codepen.io/web-tiki/pen/azeKNy" rel="external nofollow">Codepen</a>.
</p>

<h3>
	الخاصية backface-visibility
</h3>

<p>
	تُحدد الخاصية <code>backface-visibility</code> ما إذا كان الوجه الخلفي للعنصر ظاهرًا للمستخدم، ويكون الوجه الخلفي للعنصر ذو خلفية شفافة، ويسمح بعرض صورة معكوسة (mirrored) للوجه الأمامي للعنصر، ويمكن أن تأخذ إحدى القيم الآتية:
</p>

<ul>
<li>
		<code>visible</code>: يكون الوجه الخلفي للعنصر ظاهرًا.
	</li>
	<li>
		<code>hidden</code>: تُخفي الوجه الخلفي للعنصر.
	</li>
	<li>
		<code>inherit</code>: ترث قيمة الخاصية من العنصر الأب.
	</li>
	<li>
		<code>initial</code>: تُرجِع القيمة الإبتدائية للخاصية.
	</li>
</ul>
<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5167_83" style="">
<span class="tag">&lt;style&gt;</span><span class="pln">
</span><span class="pun">.</span><span class="pln">flip </span><span class="pun">{</span><span class="pln">
    </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">transform</span><span class="pun">:</span><span class="pln"> rotateY</span><span class="pun">(</span><span class="lit">180deg</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">-</span><span class="pln">moz</span><span class="pun">-</span><span class="pln">transform</span><span class="pun">:</span><span class="pln"> rotateY</span><span class="pun">(</span><span class="lit">180deg</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">-</span><span class="pln">ms</span><span class="pun">-</span><span class="pln">transform</span><span class="pun">:</span><span class="pln"> rotateY</span><span class="pun">(</span><span class="lit">180deg</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">backface</span><span class="pun">-</span><span class="pln">visibility</span><span class="pun">:</span><span class="pln"> visible</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">-</span><span class="pln">moz</span><span class="pun">-</span><span class="pln">backface</span><span class="pun">-</span><span class="pln">visibility</span><span class="pun">:</span><span class="pln"> visible</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">-</span><span class="pln">ms</span><span class="pun">-</span><span class="pln">backface</span><span class="pun">-</span><span class="pln">visibility</span><span class="pun">:</span><span class="pln"> visible</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">flip</span><span class="pun">.</span><span class="pln">back </span><span class="pun">{</span><span class="pln">
    </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">backface</span><span class="pun">-</span><span class="pln">visibility</span><span class="pun">:</span><span class="pln"> hidden</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">-</span><span class="pln">moz</span><span class="pun">-</span><span class="pln">backface</span><span class="pun">-</span><span class="pln">visibility</span><span class="pun">:</span><span class="pln"> hidden</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">-</span><span class="pln">ms</span><span class="pun">-</span><span class="pln">backface</span><span class="pun">-</span><span class="pln">visibility</span><span class="pun">:</span><span class="pln"> hidden</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&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">"flip"</span><span class="tag">&gt;</span><span class="pln">Loren ipsum</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">"flip back"</span><span class="tag">&gt;</span><span class="pln">Lorem ipsum</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	اطَّلع على تجربة حيَّة لهذا المثال على <a href="https://jsfiddle.net/3z3z843c/" rel="external nofollow">JSFiddle</a>.
</p>

<h3>
	رسم مُكعَّب باستخدام التحويلات ثُلاثية الأبعاد
</h3>

<ul>
<li>
		ملف HTML
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5167_85" style="">
<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">"cube"</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">"cubeFace"</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">"cubeFace face2"</span><span class="tag">&gt;&lt;/div&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span></pre>

<ul>
<li>
		ملف CSS
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_87" style="">
<span class="pln">  body </span><span class="pun">{</span><span class="pln">
      perspective</span><span class="pun">-</span><span class="pln">origin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50</span><span class="pun">%</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%;</span><span class="pln">
      perspective</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1500px</span><span class="pun">;</span><span class="pln">
      overflow</span><span class="pun">:</span><span class="pln"> hidden</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">cube </span><span class="pun">{</span><span class="pln">
      position</span><span class="pun">:</span><span class="pln"> relative</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">20</span><span class="pun">%;</span><span class="pln">
      transform</span><span class="pun">-</span><span class="pln">style</span><span class="pun">:</span><span class="pln"> preserve</span><span class="pun">-</span><span class="lit">3d</span><span class="pun">;</span><span class="pln">
      transform</span><span class="pun">-</span><span class="pln">origin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50</span><span class="pun">%</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%;</span><span class="pln">
      transform</span><span class="pun">:</span><span class="pln"> rotateY</span><span class="pun">(</span><span class="lit">45deg</span><span class="pun">)</span><span class="pln"> rotateX</span><span class="pun">(</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">cubeFace </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">
      top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
      left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">40</span><span class="pun">%;</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">20</span><span class="pun">%;</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</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">
      transform</span><span class="pun">-</span><span class="pln">style</span><span class="pun">:</span><span class="pln"> inherit</span><span class="pun">;</span><span class="pln">
      background</span><span class="pun">:</span><span class="pln"> </span><span class="com">#C52329;</span><span class="pln">
      box</span><span class="pun">-</span><span class="pln">shadow</span><span class="pun">:</span><span class="pln"> inset </span><span class="lit">0</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">5px</span><span class="pln"> </span><span class="com">#333;</span><span class="pln">
      transform</span><span class="pun">-</span><span class="pln">origin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50</span><span class="pun">%</span><span class="pln"> </span><span class="lit">50</span><span class="pun">%;</span><span class="pln">
      transform</span><span class="pun">:</span><span class="pln"> rotateX</span><span class="pun">(</span><span class="lit">90deg</span><span class="pun">);</span><span class="pln">
      backface</span><span class="pun">-</span><span class="pln">visibility</span><span class="pun">:</span><span class="pln"> hidden</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">face2 </span><span class="pun">{</span><span class="pln">
      transform</span><span class="pun">-</span><span class="pln">origin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50</span><span class="pun">%</span><span class="pln"> </span><span class="lit">50</span><span class="pun">%;</span><span class="pln">
      transform</span><span class="pun">:</span><span class="pln"> rotatez</span><span class="pun">(</span><span class="lit">90deg</span><span class="pun">)</span><span class="pln"> translateX</span><span class="pun">(</span><span class="lit">100</span><span class="pun">%)</span><span class="pln"> rotateY</span><span class="pun">(</span><span class="lit">90deg</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">cubeFace</span><span class="pun">:</span><span class="pln">before</span><span class="pun">,</span><span class="pln"> </span><span class="pun">.</span><span class="pln">cubeFace</span><span class="pun">:</span><span class="pln">after </span><span class="pun">{</span><span class="pln">
      content</span><span class="pun">:</span><span class="pln"> </span><span class="str">''</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">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%;</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%;</span><span class="pln">
      transform</span><span class="pun">-</span><span class="pln">origin</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="pun">;</span><span class="pln">
      background</span><span class="pun">:</span><span class="pln"> inherit</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"> inherit</span><span class="pun">;</span><span class="pln">
      backface</span><span class="pun">-</span><span class="pln">visibility</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="pun">.</span><span class="pln">cubeFace</span><span class="pun">:</span><span class="pln">before </span><span class="pun">{</span><span class="pln">
      top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%;</span><span class="pln">
      left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
      transform</span><span class="pun">:</span><span class="pln"> rotateX</span><span class="pun">(-</span><span class="lit">90deg</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">cubeFace</span><span class="pun">:</span><span class="pln">after </span><span class="pun">{</span><span class="pln">
      top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
      left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%;</span><span class="pln">
      transform</span><span class="pun">:</span><span class="pln"> rotateY</span><span class="pun">(</span><span class="lit">90deg</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	اطَّلع على تجربة حيَّة لهذا المثال على <a href="http://codepen.io/web-tiki/pen/NNwqBa" rel="external nofollow">JSFiddle</a>.
</p>

<h2>
	البوادئ ودعم المتصفحات
</h2>

<table>
<thead><tr>
<th style="text-align:right">
				البادئة
			</th>
			<th style="text-align:right">
				المتصفحات
			</th>
		</tr></thead>
<tbody>
<tr>
<td style="text-align:right">
				-webkit-
			</td>
			<td style="text-align:right">
				Google Chrome, Safari, الإصدارات الأحدث من Opera 12 وما بعد, Android, Blackberry, UC
			</td>
		</tr>
<tr>
<td style="text-align:right">
				-moz-
			</td>
			<td style="text-align:right">
				Mozilla Firefox
			</td>
		</tr>
<tr>
<td style="text-align:right">
				-ms-
			</td>
			<td style="text-align:right">
				Internet Explorer, Edge
			</td>
		</tr>
<tr>
<td style="text-align:right">
				-o- و -xv-
			</td>
			<td style="text-align:right">
				Opera حتى الإصدار 12
			</td>
		</tr>
<tr>
<td style="text-align:right">
				-khyml-
			</td>
			<td style="text-align:right">
				Konquerer
			</td>
		</tr>
</tbody>
</table>
<p>
	<strong>مثال</strong>
</p>

<ul>
<li>
		خاصية <code>transition</code>
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_89" style="">
<span class="pln">  div </span><span class="pun">{</span><span class="pln">
      </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">transition</span><span class="pun">:</span><span class="pln"> all </span><span class="lit">4s</span><span class="pln"> ease</span><span class="pun">;</span><span class="pln">
      </span><span class="pun">-</span><span class="pln">moz</span><span class="pun">-</span><span class="pln">transition</span><span class="pun">:</span><span class="pln"> all </span><span class="lit">4s</span><span class="pln"> ease</span><span class="pun">;</span><span class="pln">
      </span><span class="pun">-</span><span class="pln">o</span><span class="pun">-</span><span class="pln">transition</span><span class="pun">:</span><span class="pln"> all </span><span class="lit">4s</span><span class="pln"> ease</span><span class="pun">;</span><span class="pln">
      transition</span><span class="pun">:</span><span class="pln"> all </span><span class="lit">4s</span><span class="pln"> ease</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<ul>
<li>
		خاصية <code>transform</code>
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5167_91" style="">
<span class="pln">  div </span><span class="pun">{</span><span class="pln">
      </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">transform</span><span class="pun">:</span><span class="pln"> rotate</span><span class="pun">(</span><span class="lit">45deg</span><span class="pun">);</span><span class="pln">
      </span><span class="pun">-</span><span class="pln">moz</span><span class="pun">-</span><span class="pln">transform</span><span class="pun">:</span><span class="pln"> rotate</span><span class="pun">(</span><span class="lit">45deg</span><span class="pun">);</span><span class="pln">
      </span><span class="pun">-</span><span class="pln">ms</span><span class="pun">-</span><span class="pln">transform</span><span class="pun">:</span><span class="pln"> rotate</span><span class="pun">(</span><span class="lit">45deg</span><span class="pun">);</span><span class="pln">
      </span><span class="pun">-</span><span class="pln">o</span><span class="pun">-</span><span class="pln">transform</span><span class="pun">:</span><span class="pln"> rotate</span><span class="pun">(</span><span class="lit">45deg</span><span class="pun">);</span><span class="pln">
      transform</span><span class="pun">:</span><span class="pln"> rotate</span><span class="pun">(</span><span class="lit">45deg</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	للمزيد من التفاصيل حول التحريك، ننصحك بقراءة هذه السلسلة، <a href="https://academy.hsoub.com/programming/css/%D8%A7%D9%84%D9%85%D8%B1%D8%AC%D8%B9-%D8%A7%D9%84%D8%B4%D8%A7%D9%85%D9%84-%D8%A5%D9%84%D9%89-%D8%A7%D9%84%D8%AA%D8%AD%D8%B1%D9%8A%D9%83-%D8%B9%D8%A8%D8%B1-css-r692/" rel="">المرجع الشامل إلى التحريك عبر CSS</a>.
</p>

<p>
	ترجمة -وبتصرف- للفصول [Transitions, Animations, 2D Transforms, 3D Transforms] من كتاب <a href="https://goalkicker.com/CSSBook/" rel="external nofollow">CSS Notes for Professionals</a>
</p>
]]></description><guid isPermaLink="false">1058</guid><pubDate>Wed, 02 Dec 2020 13:02:01 +0000</pubDate></item><item><title>&#x627;&#x644;&#x639;&#x646;&#x627;&#x635;&#x631; &#x627;&#x644;&#x639;&#x627;&#x626;&#x645;&#x629; Floats &#x641;&#x64A; CSS</title><link>https://academy.hsoub.com/programming/css/%D8%A7%D9%84%D8%B9%D9%86%D8%A7%D8%B5%D8%B1-%D8%A7%D9%84%D8%B9%D8%A7%D8%A6%D9%85%D8%A9-floats-%D9%81%D9%8A-css-r1057/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2020_11/8.png.161a639ac0cfd12b1d1fee07862a4b6e.png" /></p>

<h2>
	تعويم نص حول صورة
</h2>

<p>
	من أبسط استعمالات خاصية <code>float</code> تعويم نص حول صورة، كما هو موضح بالمثال التالي:
</p>

<ul>
<li>
		ملف HTML
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_2445_8" style="">
<span class="pln">  </span><span class="tag">&lt;p&gt;</span><span class="pln">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed
  cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. Duis sagittis
  ipsum. Praesent mauris. Fusce nec tellus sed augue semper porta. Mauris massa. Vestibulum lacinia
  arcu eget nulla.</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">"http://lorempixel.com/200/100/"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">

  </span><span class="tag">&lt;p&gt;</span><span class="pln">Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
  Curabitur sodales ligula in libero. Sed dignissim lacinia nunc. Curabitur tortor. Pellentesque
  nibh. Aenean quam. In scelerisque sem at dolor. Maecenas mattis. Sed convallis tristique sem. Proin
  ut ligula vel nunc egestas porttitor. Morbi lectus risus, iaculis vel, suscipit quis, luctus non, massa. Fusce ac turpis quis ligula lacinia aliquet.</span><span class="tag">&lt;/p&gt;</span></pre>

<ul>
<li>
		ملف CSS:
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_2445_10" style="">
<span class="pln">  img </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">
      margin</span><span class="pun">-</span><span class="pln">right</span><span class="pun">:</span><span class="lit">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" href="https://academy.hsoub.com/uploads/monthly_2020_11/srUS7.png.5c118a2ed392f0af733eac77837decaf.png" data-fileid="52974" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="52974" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/srUS7.thumb.png.af6d8926c1929bbeaef0058f440b6889.png" alt="srUS7.png"></a>
</p>

<p>
	اطّلع على تجربة حية لهذا المثال على <a href="http://codepen.io/vishak-kavalur/pen/pbxvLx" rel="external nofollow">Codepen</a>.
</p>

<h2>
	الرابط العجيب بين الخاصية clear والخاصية float
</h2>

<p>
	ترتبط خاصية <code>clear</code> ارتباطًا وثيقًا خاصية <code>float</code>، وتستخدم لمنع تعويم العناصر على جانب معين من الحاوية، ويمكن أن تأخذ القيم التالية:
</p>

<table>
<thead><tr>
<th style="text-align:right">
				القيمة
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr></thead>
<tbody>
<tr>
<td style="text-align:right">
				none
			</td>
			<td style="text-align:right">
				تسمح بتعويم العناصر على الجانبين.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				left
			</td>
			<td style="text-align:right">
				تمنع تعويم العناصر على الجانب الأيسر من الحاوية.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				right
			</td>
			<td style="text-align:right">
				تمنع تعويم العناصر على الجانب الأيمن من الحاوية.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				both
			</td>
			<td style="text-align:right">
				تمنع تعويم العناصر على الجانبين.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				initial
			</td>
			<td style="text-align:right">
				تسترجع القيمة الابتدائية لخاصية float.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				inherit
			</td>
			<td style="text-align:right">
				تُوَرِّث قيمة خاصية float من العنصر الأب للإبن.
			</td>
		</tr>
</tbody>
</table>
<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>
<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_2445_12" style="">
<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;style&gt;</span><span class="pln">
            img </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">
            p</span><span class="pun">.</span><span class="pln">clear </span><span class="pun">{</span><span class="pln">
                clear</span><span class="pun">:</span><span class="pln"> both</span><span class="pun">;</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
        </span><span class="tag">&lt;/style&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;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"https://static.pexels.com/photos/69372/pexels-photo-69372-medium.jpeg"</span><span class="pln"> </span><span class="atn">width</span><span class="pun">=</span><span class="atv">"100"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="tag">&lt;p&gt;</span><span class="pln">Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem
        ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum </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">"clear"</span><span class="tag">&gt;</span><span class="pln">Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum
        Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum </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>

<h2>
	مفهوم Clearfix
</h2>

<p>
	مفهوم clearfix هو مفهوم آخر مرتبط خاصية float، والأمثلة التالية توضح كيفية استخدامه:
</p>

<p>
	<strong>استخدام Clearfix مع هوامش متداخلة</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_2445_14" style="">
<span class="pun">.</span><span class="pln">cf</span><span class="pun">:</span><span class="pln">after </span><span class="pun">{</span><span class="pln">
    content</span><span class="pun">:</span><span class="pln"> </span><span class="str">""</span><span class="pun">;</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> table</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">cf</span><span class="pun">:</span><span class="pln">after </span><span class="pun">{</span><span class="pln">
    clear</span><span class="pun">:</span><span class="pln"> both</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	<strong>استخدام Clearfix لمنع تداخل الهوامش العلوية</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_2445_16" style="">
<span class="pln">cf</span><span class="pun">:</span><span class="pln">before</span><span class="pun">,</span><span class="pln">
</span><span class="pun">.</span><span class="pln">cf</span><span class="pun">:</span><span class="pln">after </span><span class="pun">{</span><span class="pln">
    content</span><span class="pun">:</span><span class="pln"> </span><span class="str">" "</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* انظر الملاحظة رقم 1 */</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> table</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* انظر الملاحظة رقم 2 */</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">cf</span><span class="pun">:</span><span class="pln">after </span><span class="pun">{</span><span class="pln">
    clear</span><span class="pun">:</span><span class="pln"> both</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	ملاحظات:
</p>

<p>
	1- إضافة حرف الفراغ للعناصر الزائفة <code>after:</code> و<code>before:</code> يمنع ظهور فراغات حول العنصر.
</p>

<p>
	2- يجب استعمال <code>table</code> بدلاً عن <code>block</code> في حال استخدام <code>before:</code> لاحتواء هوامش العنصر الابن.
</p>

<p>
	<strong>استخدام Clearfix في المتصفحات القديمة مثل IE6 و IE7</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_2445_18" style="">
<span class="pun">.</span><span class="pln">cf</span><span class="pun">:</span><span class="pln">before</span><span class="pun">,</span><span class="pln">
</span><span class="pun">.</span><span class="pln">cf</span><span class="pun">:</span><span class="pln">after </span><span class="pun">{</span><span class="pln">
    content</span><span class="pun">:</span><span class="pln"> </span><span class="str">" "</span><span class="pun">;</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> table</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">cf</span><span class="pun">:</span><span class="pln">after </span><span class="pun">{</span><span class="pln">
    clear</span><span class="pun">:</span><span class="pln"> both</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="com">/**
* For IE 6/7 only
* Include this rule to trigger hasLayout and contain floats.
*/</span><span class="pln">
</span><span class="pun">.</span><span class="pln">cf </span><span class="pun">{</span><span class="pln">
    </span><span class="pun">*</span><span class="pln">zoom</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_2445_20" style="">
<span class="pun">.</span><span class="pln">cf</span><span class="pun">:</span><span class="pln">before</span><span class="pun">,</span><span class="pln">
</span><span class="pun">.</span><span class="pln">cf</span><span class="pun">:</span><span class="pln">after </span><span class="pun">{</span><span class="pln">
    content</span><span class="pun">:</span><span class="pln"> </span><span class="str">" "</span><span class="pun">;</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> table</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">cf</span><span class="pun">:</span><span class="pln">after </span><span class="pun">{</span><span class="pln">
    clear</span><span class="pun">:</span><span class="pln"> both</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="com">/**
* For IE 6/7 only
* Include this rule to trigger hasLayout and contain floats.
*/</span><span class="pln">
</span><span class="pun">.</span><span class="pln">cf </span><span class="pun">{</span><span class="pln">
    </span><span class="pun">*</span><span class="pln">zoom</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	اطَّلع على تجربة حيَّة لاستخدامات clearfix على <a href="http://codepen.io/PhilippeVay/pen/OXEqgW?editors=0100" rel="external nofollow">codepen</a>.
</p>

<p>
	مصادر أخرى: <a href="http://www.cssmojo.com/clearfix_block-formatting-context_and_hasLayout/" rel="external nofollow">كل ما تريد ان تعرفه عن clearfix</a>.
</p>

<h2>
	تحويل حاوية div إلى حاوية سطرية (inline) باستخدام خاصية float
</h2>

<p>
	عنصر div هو عنصر كُتَلي، أي أنه يأخذ كل عرض الشاشة، وتوضع العناصر الإخوة له رأسيًا فوق بعضها البعض.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_2445_22" style="">
<span class="tag">&lt;div&gt;</span><span class="pln">
    </span><span class="tag">&lt;p&gt;</span><span class="pln">This is DIV 1</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;p&gt;</span><span class="pln">This is DIV 2</span><span class="tag">&lt;/p&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" href="https://academy.hsoub.com/uploads/monthly_2020_11/qgqNg.png.1c95ba14b63cf5e3cd3d6e8a57fbb412.png" data-fileid="52973" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="52973" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/qgqNg.thumb.png.fabb004b8024bdd150075097431ada1a.png" alt="qgqNg.png"></a>
</p>

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

<p>
	<strong>مثال</strong>
</p>

<ul>
<li>
		ملف HTML:
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_2445_24" style="">
<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">"outer-div"</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">"inner-div1"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;p&gt;</span><span class="pln">This is DIV 1</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">"inner-div2"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;p&gt;</span><span class="pln">This is DIV 2</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>

<ul>
<li>
		ملف CSS:
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_2445_26" style="">
<span class="pln">  </span><span class="pun">.</span><span class="pln">inner</span><span class="pun">-</span><span class="pln">div1 </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">
      margin</span><span class="pun">-</span><span class="pln">right</span><span class="pun">:</span><span class="lit">0px</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">
      background </span><span class="pun">:</span><span class="pln"> </span><span class="com">#337ab7;</span><span class="pln">
      padding</span><span class="pun">:</span><span class="lit">50px</span><span class="pln"> </span><span class="lit">0px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="pun">.</span><span class="pln">inner</span><span class="pun">-</span><span class="pln">div2 </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">
      margin</span><span class="pun">-</span><span class="pln">right</span><span class="pun">:</span><span class="lit">0px</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">
      background </span><span class="pun">:</span><span class="pln"> </span><span class="com">#dd2c00;</span><span class="pln">
      padding</span><span class="pun">:</span><span class="lit">50px</span><span class="pln"> </span><span class="lit">0px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  p </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" href="https://academy.hsoub.com/uploads/monthly_2020_11/gy6fO.png.43167550f7d9ede2d913f526e4b3d4f8.png" data-fileid="52972" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="52972" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/gy6fO.thumb.png.4b3ae772d210ad003434af8d626b10df.png" alt="gy6fO.png"></a>
</p>

<p>
	اطّلع على تجربة حيَّة لهذا المثال على <a href="http://codepen.io/vishak-kavalur/pen/bZxbBy" rel="external nofollow">Codepen</a>.
</p>

<h2>
	إصلاح الطوفان بضبط الطفحان
</h2>

<p>
	تحصل مشاكل بين العناصر عندما يطبق الطوفان على عنصر بينها لذا يمكن ضبط خاصية الطفحان overflow إلى القيمة hidden أو auto أو scroll لعنصر محدد لإصلاح تلك المشاكل.
</p>

<p>
	<strong>ملاحظة</strong>: استخدام القاعدة <code>overflow: scroll</code> سيظهر شريط التمرير بشكل دائم.
</p>

<h2>
	إنشاء تخطيط بسيط ذو عمودين بعرض ثابت
</h2>

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

<ul>
<li>
		ملف HTML
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_2445_28" style="">
<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"</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">"sidebar"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;h2&gt;</span><span class="pln">Sidebar</span><span class="tag">&lt;/h2&gt;</span><span class="pln">
          </span><span class="tag">&lt;p&gt;</span><span class="pln">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio.</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">"content"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;h1&gt;</span><span class="pln">Content</span><span class="tag">&lt;/h1&gt;</span><span class="pln">
          </span><span class="tag">&lt;p&gt;</span><span class="pln">Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
          Curabitur sodales ligula in libero. Sed dignissim lacinia nunc. Curabitur tortor. Pellentesque
          nibh. Aenean quam. In scelerisque sem at dolor. Maecenas mattis. Sed convallis tristique sem. Proin
          ut ligula vel nunc egestas porttitor. Morbi lectus risus, iaculis vel, suscipit quis, luctus non,
          massa. Fusce ac turpis quis ligula lacinia aliquet. </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>

<ul>
<li>
		ملف CSS:
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_2445_30" style="">
<span class="pln">  </span><span class="pun">.</span><span class="pln">wrapper </span><span class="pun">{</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">600px</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="pun">;</span><span class="pln">
      background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> pink</span><span class="pun">;</span><span class="pln">

      </span><span class="com">/* انظر الملاحظة 1 */</span><span class="pln">
      overflow</span><span class="pun">:</span><span class="pln">hidden</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="pun">.</span><span class="pln">sidebar </span><span class="pun">{</span><span class="pln">
      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">float</span><span class="pun">:</span><span class="pln"> left</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"> blue</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="pun">.</span><span class="pln">content </span><span class="pun">{</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">450px</span><span class="pun">;</span><span class="pln">
      </span><span class="kwd">float</span><span class="pun">:</span><span class="pln"> right</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"> yellow</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	ملاحظة: العناصر العائمة (floating elements) ليس لديها ارتفاع محدد، و يُجبر استعمال القاعدة <code>overflow: hidden</code> العنصر الأب على التمدد وأخذ ارتفاع العناصر الأبناء.
</p>

<h2>
	إنشاء تخطيط ذو ثلاث أعمدة بعرض ثابت
</h2>

<ul>
<li>
		ملف HTML:
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_2445_32" style="">
<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"</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">"left-sidebar"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;h1&gt;</span><span class="pln">Left Sidebar</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. </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">"content"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;h1&gt;</span><span class="pln">Content</span><span class="tag">&lt;/h1&gt;</span><span class="pln">
          </span><span class="tag">&lt;p&gt;</span><span class="pln">Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
          Curabitur sodales ligula in libero. Sed dignissim lacinia nunc. Curabitur tortor. Pellentesque
          nibh. Aenean quam. In scelerisque sem at dolor. Maecenas mattis. Sed convallis tristique sem. Proin
          ut ligula vel nunc egestas porttitor. Morbi lectus risus, iaculis vel, suscipit quis, luctus non,
          massa. </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">"right-sidebar"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;h1&gt;</span><span class="pln">Right Sidebar</span><span class="tag">&lt;/h1&gt;</span><span class="pln">
          </span><span class="tag">&lt;p&gt;</span><span class="pln">Fusce ac turpis quis ligula lacinia aliquet.</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>

<ul>
<li>
		ملف CSS:
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_2445_34" style="">
<span class="pln">  </span><span class="pun">.</span><span class="pln">wrapper </span><span class="pun">{</span><span class="pln">
      width</span><span class="pun">:</span><span class="lit">600px</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">pink</span><span class="pun">;</span><span class="pln">
      padding</span><span class="pun">:</span><span class="lit">20px</span><span class="pun">;</span><span class="pln">
      overflow</span><span class="pun">:</span><span class="pln">hidden</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">left</span><span class="pun">-</span><span class="pln">sidebar </span><span class="pun">{</span><span class="pln">
      width</span><span class="pun">:</span><span class="lit">150px</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">blue</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="pun">.</span><span class="pln">content </span><span class="pun">{</span><span class="pln">
      width</span><span class="pun">:</span><span class="lit">300px</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">yellow</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="pun">.</span><span class="pln">right</span><span class="pun">-</span><span class="pln">sidebar </span><span class="pun">{</span><span class="pln">
      width</span><span class="pun">:</span><span class="lit">150px</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">green</span><span class="pun">;</span><span class="pln">
      </span><span class="kwd">float</span><span class="pun">:</span><span class="pln">right</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<h2>
	إنشاء تخطيط ذو عمودين بعرض ديناميكي (غير ثابت)
</h2>

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

<ul>
<li>
		ملف HTML:
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_2445_36" style="">
<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">"sidebar"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;h1&gt;</span><span class="pln">Sidebar</span><span class="tag">&lt;/h1&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">"http://lorempixel.com/150/200/"</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</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"content"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;h1&gt;</span><span class="pln">Content</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. Integer nec odio. Praesent libero. Sed
      cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. Duis sagittis
      ipsum. Praesent mauris. Fusce nec tellus sed augue semper porta. Mauris massa. Vestibulum lacinia
      arcu eget nulla. </span><span class="tag">&lt;/p&gt;</span><span class="pln">
      </span><span class="tag">&lt;p&gt;</span><span class="pln">Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
      Curabitur sodales ligula in libero. Sed dignissim lacinia nunc. Curabitur tortor. Pellentesque
      nibh. Aenean quam. In scelerisque sem at dolor. Maecenas mattis. Sed convallis tristique sem. Proin
      ut ligula vel nunc egestas porttitor. Morbi lectus risus, iaculis vel, suscipit quis, luctus non,
      massa. Fusce ac turpis quis ligula lacinia aliquet. Mauris ipsum. Nulla metus metus, ullamcorper
      vel, tincidunt sed, euismod in, nibh.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span></pre>

<ul>
<li>
		ملف CSS:
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_2445_38" style="">
<span class="pln">  </span><span class="pun">.</span><span class="pln">sidebar </span><span class="pun">{</span><span class="pln">
      </span><span class="com">/* `display:table;` shrink-wraps the column */</span><span class="pln">
      display</span><span class="pun">:</span><span class="pln">table</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">
      background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln">blue</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

      </span><span class="pun">.</span><span class="pln">content </span><span class="pun">{</span><span class="pln">
      </span><span class="com">/* `overflow:hidden;` prevents `.content` from flowing under `.sidebar` */</span><span class="pln">
      overflow</span><span class="pun">:</span><span class="pln">hidden</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">yellow</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	اطَّلع على تجربة حيَّة لهذا المثال على <a href="https://jsfiddle.net/ooprqsL0/" rel="external nofollow">JSFiddle</a>.
</p>

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

<p>
	تُحدد الخاصية <code>shape-outside</code> شكل مساحة التعويم، وهي المساحة التي تُحيط بالعنصر المُعَوَّم.
</p>

<table>
<thead><tr>
<th style="text-align:right">
				المعامل
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr></thead>
<tbody>
<tr>
<td style="text-align:right">
				<code>none</code>
			</td>
			<td style="text-align:right">
				تعني أن مساحة التعويم (float area) (المساحة حول العنصر العائم) لا تتأثر.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				<code>basic-shape</code>
			</td>
			<td style="text-align:right">
				تُحدد شكل مساحة التعويم وتأخذ إحدى القيم ()inset أو ()circle، أو ()ellipse، أو ()polygon.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				<code>shape-box</code>
			</td>
			<td style="text-align:right">
				تحدد الصندوق الذي سيأخذ الشكل، وتأخذ إحدى القيم margin-box، أو border-box، أو padding-box، أو content-box.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				<code>image</code>
			</td>
			<td style="text-align:right">
				تُحدد صورة توضع داخل الشكل.
			</td>
		</tr>
</tbody>
</table>
<p>
	<strong>مثال</strong>
</p>

<ul>
<li>
		ملف CSS
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_2445_40" style="">
<span class="pln">  img</span><span class="pun">:</span><span class="pln">nth</span><span class="pun">-</span><span class="pln">of</span><span class="pun">-</span><span class="pln">type</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">
      shape</span><span class="pun">-</span><span class="pln">outside</span><span class="pun">:</span><span class="pln"> circle</span><span class="pun">(</span><span class="lit">80px</span><span class="pln"> at </span><span class="lit">50</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">float</span><span class="pun">:</span><span class="pln"> left</span><span class="pun">;</span><span class="pln">
      width</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">

  img</span><span class="pun">:</span><span class="pln">nth</span><span class="pun">-</span><span class="pln">of</span><span class="pun">-</span><span class="pln">type</span><span class="pun">(</span><span class="lit">2</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      shape</span><span class="pun">-</span><span class="pln">outside</span><span class="pun">:</span><span class="pln"> circle</span><span class="pun">(</span><span class="lit">80px</span><span class="pln"> at </span><span class="lit">50</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">float</span><span class="pun">:</span><span class="pln"> right</span><span class="pun">;</span><span class="pln">
      width</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">
  p </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">
      line</span><span class="pun">-</span><span class="pln">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="pun">}</span></pre>

<ul>
<li>
		ملف HTML
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_2445_42" style="">
<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">"http://images.clipartpanda.com/circle-clip-art-circlergb.jpg"</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">"http://images.clipartpanda.com/circle-clip-art-circlergb.jpg"</span><span class="tag">&gt;</span><span class="pln">
  </span><span class="tag">&lt;p&gt;</span><span class="pln">Some paragraph whose text content is required to be wrapped such that it follows the curve of
  the circle on either side. And then there is some filler text just to make the text long enough.
  Lorem Ipsum Dolor Sit Amet....</span><span class="tag">&lt;/p&gt;</span></pre>

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2020_11/umeRym.png.95b809ba6784dc4948bc27de6fc484f7.png" data-fileid="52975" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="52975" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/umeRym.png.95b809ba6784dc4948bc27de6fc484f7.png" alt="umeRym.png"></a>
</p>

<p>
	ولكن عند استخدام الخاصية <code>shape-outside</code> يُعاد تعريف الشكل الخارجي للعنصر ويصبح دائريًا مما يجعل النص يطفو حول الدائرية التخيلية التي ترسمها هذه الخاصية، كما هو موضح في الصورة التالية:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2020_11/xbFg3m.png.d89389050f1d8d63aa7948e3edfd92b0.png" data-fileid="52976" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="52976" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/xbFg3m.png.d89389050f1d8d63aa7948e3edfd92b0.png" alt="xbFg3m.png"></a>
</p>

<h3>
	خاصية شكل الهامش (shape-margin)
</h3>

<p>
	تُستخدم الخاصية <code>shape-margin</code> لتعريف شكل الهوامش للعنصر، وتأخذ نفس قيم الخاصية <code>shape-outside</code>.
</p>

<p>
	<strong>مثال</strong>
</p>

<ul>
<li>
		ملف CSS
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_2445_44" style="">
<span class="pln">  img</span><span class="pun">:</span><span class="pln">nth</span><span class="pun">-</span><span class="pln">of</span><span class="pun">-</span><span class="pln">type </span><span class="pun">{</span><span class="pln">
      shape</span><span class="pun">-</span><span class="pln">outside</span><span class="pun">:</span><span class="pln"> circle</span><span class="pun">(</span><span class="lit">80px</span><span class="pln"> at </span><span class="lit">50</span><span class="pun">%</span><span class="pln"> </span><span class="lit">50</span><span class="pun">%);</span><span class="pln">
      shape</span><span class="pun">-</span><span class="pln">margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10px</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">
      width</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">
  img</span><span class="pun">:</span><span class="pln">nth</span><span class="pun">-</span><span class="pln">of</span><span class="pun">-</span><span class="pln">type</span><span class="pun">(</span><span class="lit">2</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      shape</span><span class="pun">-</span><span class="pln">outside</span><span class="pun">:</span><span class="pln"> circle</span><span class="pun">(</span><span class="lit">80px</span><span class="pln"> at </span><span class="lit">50</span><span class="pun">%</span><span class="pln"> </span><span class="lit">50</span><span class="pun">%);</span><span class="pln">
      shape</span><span class="pun">-</span><span class="pln">margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10px</span><span class="pun">;</span><span class="pln">
      </span><span class="kwd">float</span><span class="pun">:</span><span class="pln"> right</span><span class="pun">;</span><span class="pln">
      width</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">
  p </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">
      line</span><span class="pun">-</span><span class="pln">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="pun">}</span></pre>

<ul>
<li>
		ملف HTML
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_2445_46" style="">
<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">"http://images.clipartpanda.com/circle-clip-art-circlergb.jpg"</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">"http://images.clipartpanda.com/circle-clip-art-circlergb.jpg"</span><span class="tag">&gt;</span><span class="pln">
  </span><span class="tag">&lt;p&gt;</span><span class="pln">Some paragraph whose text content is required to be wrapped such that it follows the curve of
  the circle on either side. And then there is some filler text just to make the text long enough.
      Lorem Ipsum Dolor Sit Amet....</span><span class="tag">&lt;/p&gt;</span></pre>

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" href="https://academy.hsoub.com/uploads/monthly_2020_11/GKLvlm.png.5a6fc954dd5f7533ea6980c1095fa86a.png" data-fileid="52971" rel=""><img class="ipsImage ipsImage_thumbnailed" data-fileid="52971" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/GKLvlm.png.5a6fc954dd5f7533ea6980c1095fa86a.png" alt="GKLvlm.png"></a>
</p>

<p>
	ترجمة -وبتصرف- للفصول [Floats, Shapes For Floats] من كتاب <a href="https://goalkicker.com/CSSBook/" rel="external nofollow">CSS Notes for Professionals</a>
</p>
]]></description><guid isPermaLink="false">1057</guid><pubDate>Sat, 28 Nov 2020 13:05:02 +0000</pubDate></item><item><title>&#x62A;&#x646;&#x633;&#x64A;&#x642; &#x627;&#x644;&#x635;&#x648;&#x631; &#x641;&#x64A; CSS</title><link>https://academy.hsoub.com/programming/css/%D8%AA%D9%86%D8%B3%D9%8A%D9%82-%D8%A7%D9%84%D8%B5%D9%88%D8%B1-%D9%81%D9%8A-css-r1056/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2020_11/7.png.bfea7085b82290f4e7cbadfe215509dd.png" /></p>
<h2>
	المُرشِّحات (Filters)
</h2>

<p>
	تُستخدم الخاصية <code>filter</code> لتطبيق تأثيرات مثل تغيير اللون وتأثير الضبابية على الصور والخلفيات والإطارات.
</p>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				الدالة
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				<code>()blur</code>
			</td>
			<td style="text-align:right">
				تُطَبِق تأثير الضبابية على الصورة المُحدَّدة.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>(brightness(x</code>
			</td>
			<td style="text-align:right">
				تُغيِّر سطوع الصورة.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>(contrast(x</code>
			</td>
			<td style="text-align:right">
				تُغيِّر تباين الصورة.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>(dropshadow(h,v,x,y,z</code>
			</td>
			<td style="text-align:right">
				تُطبِّق تأثير الظلال على الصورة.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>(gray-scale(x</code>
			</td>
			<td style="text-align:right">
				تُحَوِّل ألوان الصورة إلى التدرج الرمادي.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>(hue-rotate(x</code>
			</td>
			<td style="text-align:right">
				تُدَوِّر القيمة اللونية لجميع ألوان الصورة.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>(invert(x</code>
			</td>
			<td style="text-align:right">
				تعكس ألوان الصورة،
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>(opacity(x</code>
			</td>
			<td style="text-align:right">
				تُطبِّق تأثير الشفافية على الصورة.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>(saturate(x</code>
			</td>
			<td style="text-align:right">
				تُغيِّر إشباع الصورة.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>(sepia(x</code>
			</td>
			<td style="text-align:right">
				تُحَوِّل ألوان الصورة إلى البني الداكن.
			</td>
		</tr>
	</tbody>
</table>
<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>
<p>
	<strong>ملاحظة</strong>: يجب استخدام البادئة <code>‎-webkit</code> لدعم خاصية المُرشِّحات <code>filter</code> في المتصفحات القديمة.
</p>

<h2>
	الدالة ()blur
</h2>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5307_7" style=""><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">"donald-duck.png"</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">"donald duck"</span><span class="pln"> </span><span class="atn">title</span><span class="pun">=</span><span class="atv">"donald duck"</span><span class="pln"> </span><span class="tag">/&gt;</span></pre>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5307_9" style=""><span class="pln">  img </span><span class="pun">{</span><span class="pln">
      </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">filter</span><span class="pun">:</span><span class="pln"> blur</span><span class="pun">(</span><span class="lit">1px</span><span class="pun">);</span><span class="pln">
      filter</span><span class="pun">:</span><span class="pln"> blur</span><span class="pun">(</span><span class="lit">1px</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	<strong>النتيجة</strong>
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52956" href="https://academy.hsoub.com/uploads/monthly_2020_11/XYAHi.png.a91f22c9cdf870f772fe2dd4af14650b.png" rel="" data-fileext="png"><img alt="XYAHi.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52956" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/XYAHi.png.a91f22c9cdf870f772fe2dd4af14650b.png"></a>
</p>

<h2>
	الدالة ()dropshadow
</h2>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5307_11" style=""><span class="pln">  </span><span class="tag">&lt;p&gt;</span><span class="pln">
      My shadow always follows me.
  </span><span class="tag">&lt;/p&gt;</span></pre>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5307_13" style=""><span class="pln">  p </span><span class="pun">{</span><span class="pln">
      </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">filter</span><span class="pun">:</span><span class="pln"> drop</span><span class="pun">-</span><span class="pln">shadow</span><span class="pun">(</span><span class="lit">10px</span><span class="pln"> </span><span class="lit">10px</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> green</span><span class="pun">);</span><span class="pln">
      filter</span><span class="pun">:</span><span class="pln"> drop</span><span class="pun">-</span><span class="pln">shadow</span><span class="pun">(</span><span class="lit">10px</span><span class="pln"> </span><span class="lit">10px</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> green</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="52947" href="https://academy.hsoub.com/uploads/monthly_2020_11/70t2C.png.09780ae5fb0fd8a147fb8a797c889c82.png" rel="" data-fileext="png"><img alt="70t2C.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52947" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/70t2C.png.09780ae5fb0fd8a147fb8a797c889c82.png"></a>
</p>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة تطوير واجهات المستخدم
		</p>

		<p class="banner-subtitle">
			ابدأ عملك الحر بتطوير واجهات المواقع والمتاجر الإلكترونية فور انتهائك من الدورة
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/front-end-web-development/" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<img alt="دورة تطوير واجهات المستخدم" src="https://academy.hsoub.com/learn/assets/images/courses/front-end-web-development.png">
	</div>
</div>

<h2>
	الدالة ()hue-rotate
</h2>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5307_15" style=""><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">'donald-duck.png'</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">'Donald Duck'</span><span class="pln"> </span><span class="atn">title</span><span class="pun">=</span><span class="atv">'Donald Duck'</span><span class="pln"> </span><span class="tag">/&gt;</span></pre>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5307_17" style=""><span class="pln">  img </span><span class="pun">{</span><span class="pln">
      </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">filter</span><span class="pun">:</span><span class="pln"> hue</span><span class="pun">-</span><span class="pln">rotate</span><span class="pun">(</span><span class="lit">120deg</span><span class="pun">);</span><span class="pln">
      filter</span><span class="pun">:</span><span class="pln"> hue</span><span class="pun">-</span><span class="pln">rotate</span><span class="pun">(</span><span class="lit">120deg</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="52948" href="https://academy.hsoub.com/uploads/monthly_2020_11/CYvur.png.80ad1c062452c1b3c8f85585bbee658b.png" rel="" data-fileext="png"><img alt="CYvur.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52948" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/CYvur.png.80ad1c062452c1b3c8f85585bbee658b.png"></a>
</p>

<h2>
	الدالة ()invert
</h2>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

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

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5307_21" style=""><span class="pln">  div </span><span class="pun">{</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</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"> white</span><span class="pun">;</span><span class="pln">
      </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">filter</span><span class="pun">:</span><span class="pln"> invert</span><span class="pun">(</span><span class="lit">100</span><span class="pun">%);</span><span class="pln">
      filter</span><span class="pun">:</span><span class="pln"> invert</span><span class="pun">(</span><span class="lit">100</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="52954" href="https://academy.hsoub.com/uploads/monthly_2020_11/tO8fB.png.fcf0570a8739e3136238406ecc082d70.png" rel="" data-fileext="png"><img alt="tO8fB.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52954" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/tO8fB.png.fcf0570a8739e3136238406ecc082d70.png"></a>
</p>

<h2>
	إضافة مُرشِّحات متعددة
</h2>

<p>
	يُمكن تطبيق عدد من المُرشِّحات والفصل بينها بفاصلة.
</p>

<p>
	<strong>مثال</strong>
</p>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5307_23" style=""><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">'donald-duck.png'</span><span class="pln"> </span><span class="atn">alt</span><span class="pun">=</span><span class="atv">'Donald Duck'</span><span class="pln"> </span><span class="atn">title</span><span class="pun">=</span><span class="atv">'Donald Duck'</span><span class="pln"> </span><span class="tag">/&gt;</span></pre>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5307_25" style=""><span class="pln">  img </span><span class="pun">{</span><span class="pln">
      </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">filter</span><span class="pun">:</span><span class="pln"> brightness</span><span class="pun">(</span><span class="lit">200</span><span class="pun">%)</span><span class="pln"> grayscale</span><span class="pun">(</span><span class="lit">100</span><span class="pun">%)</span><span class="pln"> sepia</span><span class="pun">(</span><span class="lit">100</span><span class="pun">%)</span><span class="pln"> invert</span><span class="pun">(</span><span class="lit">100</span><span class="pun">%);</span><span class="pln">
      filter</span><span class="pun">:</span><span class="pln"> brightness</span><span class="pun">(</span><span class="lit">200</span><span class="pun">%)</span><span class="pln"> grayscale</span><span class="pun">(</span><span class="lit">100</span><span class="pun">%)</span><span class="pln"> sepia</span><span class="pun">(</span><span class="lit">100</span><span class="pun">%)</span><span class="pln"> invert</span><span class="pun">(</span><span class="lit">100</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="52953" href="https://academy.hsoub.com/uploads/monthly_2020_11/pxMPC.png.f8a6e883c703e8276305108497a8a172.png" rel="" data-fileext="png"><img alt="pxMPC.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52953" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/pxMPC.png.f8a6e883c703e8276305108497a8a172.png"></a>
</p>

<h2>
	القواطع والأقنعة (Clipping and Masking)
</h2>

<p>
	تستخدم خواص القطع والأقنعة لجعل أجزاء من العنصر شفافة أو معتمة.
</p>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				المعامل
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				clip-source
			</td>
			<td style="text-align:right">
				رابط يُشير لعنصر SVG أو ملف SVG خارجي يحوي تعريف مسار القطع.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				basic-shape
			</td>
			<td style="text-align:right">
				تُحدد شكل مسار القطع، وتأخذ القيمة <code>()inset</code> أو <code>()circle</code> أو <code>()ellipse</code> أو <code>()polygon</code>.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				clip-geometry-box
			</td>
			<td style="text-align:right">
				تأخذ إحدى القيم <code>content-box</code> أو <code>padding-box</code> أو ّ أو <code>margin-box</code> أو <code>fill-box</code> أو <code>stroke-box</code> أو <code>view-box</code>، وتستعمل حواف الصندوق المحدد كمسار للقطع.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				mask-reference
			</td>
			<td style="text-align:right">
				تُشير إلى الصورة التي ستُستخدم كقناع.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				repeat-style
			</td>
			<td style="text-align:right">
				تُحدد كيف ستُكرر صورة القناع على المحورين الأفقي والرأسي، وتأخذ القيمة <code>repeat-x</code> أو <code>repeat-y</code> أو <code>repeat</code> أو <code>space</code> أو <code>round</code> أو <code>no-repeat</code>.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				mask-mode
			</td>
			<td style="text-align:right">
				تأخذ إحدى القيم alpha أو luminance أو auto.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				position
			</td>
			<td style="text-align:right">
				تُحدد موضع القناع، وتسلك سلوك مشابه لسلوك الخاصية <code>background-position</code>.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				geometry-box
			</td>
			<td style="text-align:right">
				تُحدد الصندوق الذي سيأخذ شكل القطع، وتأخذ القيمة <code>content-box</code> أو <code>padding-box</code> أو ّ أو <code>margin-box</code> أو <code>fill-box</code> أو <code>stroke-box</code> أو <code>view-box</code>. لمزيد من المعلومات انظر <a href="https://www.w3.org/TR/css-masking/#the-mask-clip" rel="external nofollow">توثيق W3C</a>.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				bg-size
			</td>
			<td style="text-align:right">
				تُحدد حجم صورة القناع، ولها صياغة مماثلة لصياغة الخاصية <code>background-size</code>.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				compositing-operator
			</td>
			<td style="text-align:right">
				تُحدد عملية التركيب التي ستُطبَّق على طبقات القناع، وتأخذ إحدى القيم add أو substract أو exclude أو multiply. لمزيد من المعلومات انظر <a href="https://www.w3.org/TR/css-masking/#the-mask-composite" rel="external nofollow">توثيق W3C</a>.
			</td>
		</tr>
	</tbody>
</table>

<h3>
	القطع (Clipping)
</h3>

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52958" href="https://academy.hsoub.com/uploads/monthly_2020_11/7x1WOm.png.e45f0173524a628b7e356607d74b91bb.png" rel="" data-fileext="png"><img alt="7x1WOm.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52958" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/7x1WOm.png.e45f0173524a628b7e356607d74b91bb.png"></a>
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5307_27" style=""><span class="pln">clip</span><span class="pun">-</span><span class="pln">path</span><span class="pun">:</span><span class="pln"> circle</span><span class="pun">(</span><span class="lit">100px</span><span class="pln"> at center</span><span class="pun">)</span></pre>

<p>
	يكون الجزء المُعتم (المرئي) من العنصر على شكل دائرة مركزها هو نفس مركز العنصر وقطرها 100 بكسل.
</p>

<h3>
	القناع
</h3>

<p>
	تستخدم لتحديد قناع يوضع فوق العنصر ويحدد الأجزاء المرئية والمعتمة منه، وهناك نوعان من الأقنعة، أقنعة الإضاءة (luminance masks) وأقنعة ألفا (alpha masks).
</p>

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

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5307_29" style=""><span class="pln">mask</span><span class="pun">:</span><span class="pln"> url</span><span class="pun">(</span><span class="pln">masks</span><span class="pun">.</span><span class="pln">svg</span><span class="com">#rectangle) luminance;</span></pre>

<p>
	 
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52959" href="https://academy.hsoub.com/uploads/monthly_2020_11/WGJAym.png.ca7f666307ac8e6785c738786cf2bac1.png" rel="" data-fileext="png"><img alt="WGJAym.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52959" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/WGJAym.png.ca7f666307ac8e6785c738786cf2bac1.png"></a>
</p>

<p>
	<strong>أقنعة ألفا</strong>: ويكون الجزء من العنصر الواقع تحت الجزء الشفاف من القناع مرئيًا بينما يكون باقي العنصر شفافًا.
</p>

<h4>
	تحويل الصورة من معتمة إلى شفافة تدريجيًا
</h4>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5307_31" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    div </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">
        width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">200px</span><span class="pun">;</span><span class="pln">
        background</span><span class="pun">:</span><span class="pln"> url</span><span class="pun">(</span><span class="str">'http://lorempixel.com/200/200/nature/1'</span><span class="pun">);</span><span class="pln">
        mask</span><span class="pun">-</span><span class="pln">image</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"> white</span><span class="pun">,</span><span class="pln"> transparent</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span><span class="pln">

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

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52951" href="https://academy.hsoub.com/uploads/monthly_2020_11/NuDDU.png.8de64eebfaacb1250dd36e97b98b8c41.png" rel="" data-fileext="png"><img alt="NuDDU.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52951" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/NuDDU.png.8de64eebfaacb1250dd36e97b98b8c41.png"></a>
</p>

<p>
	 
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52944" href="https://academy.hsoub.com/uploads/monthly_2020_11/0IzYy.png.397cb6adf589376b95d0fab32a55e954.png" rel="" data-fileext="png"><img alt="0IzYy.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52944" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/0IzYy.png.397cb6adf589376b95d0fab32a55e954.png"></a>
</p>

<p>
	<strong>ملاحظة</strong>: يجب استخدام البادئة <code>webkit</code>- لدعم الخاصية <code>mask-image</code> في بعض المتصفحات.
</p>

<h2>
	استخدام الأقنعة لإنشاء ثقب في الصورة
</h2>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5307_33" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    div </span><span class="pun">{</span><span class="pln">
        width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">200px</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">
        background</span><span class="pun">:</span><span class="pln"> url</span><span class="pun">(</span><span class="pln">http</span><span class="pun">:</span><span class="com">//lorempixel.com/200/200/abstract/6);</span><span class="pln">
        mask</span><span class="pun">-</span><span class="pln">image</span><span class="pun">:</span><span class="pln"> radial</span><span class="pun">-</span><span class="pln">gradient</span><span class="pun">(</span><span class="pln">circle farthest</span><span class="pun">-</span><span class="pln">side at center</span><span class="pun">,</span><span class="pln"> transparent </span><span class="lit">49</span><span class="pun">%,</span><span class="pln"> white </span><span class="lit">50</span><span class="pun">%);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span><span class="pln">

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

<p>
	في المثال أعلاه، أُنشِئت دائرة شفافة في منتصف الصورة باستخدام الخاصية <code>linear-gradient</code>، مما يؤدي لإنشاء ثقب شفاف في الصورة.
</p>

<p>
	<strong>الصورة الأصلية</strong>
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52950" href="https://academy.hsoub.com/uploads/monthly_2020_11/lsyRy.png.57e19e3f120f80a01b3549bb8037558c.png" rel="" data-fileext="png"><img alt="lsyRy.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52950" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/lsyRy.png.57e19e3f120f80a01b3549bb8037558c.png"></a>
</p>

<p>
	<strong>الصورة بعد إنشاء الثقب</strong>
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52945" href="https://academy.hsoub.com/uploads/monthly_2020_11/1DBOI.png.5bec77f22ab978bf765d59bf8ae85b30.png" rel="" data-fileext="png"><img alt="1DBOI.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52945" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/1DBOI.png.5bec77f22ab978bf765d59bf8ae85b30.png"></a>
</p>

<p>
	استخدام الأقنعة لإنشاء صور بأشكال غير منتظمة
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5307_35" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    div </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">
        width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">400px</span><span class="pun">;</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">http</span><span class="pun">:</span><span class="com">//lorempixel.com/400/200/nature/4);</span><span class="pln">
        mask</span><span class="pun">-</span><span class="pln">image</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 top right</span><span class="pun">,</span><span class="pln"> transparent </span><span class="lit">49.5</span><span class="pun">%,</span><span class="pln"> white </span><span class="lit">50.5</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 top
        left</span><span class="pun">,</span><span class="pln"> transparent </span><span class="lit">49.5</span><span class="pun">%,</span><span class="pln"> white </span><span class="lit">50.5</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">white</span><span class="pun">,</span><span class="pln"> white</span><span class="pun">);</span><span class="pln">
        mask</span><span class="pun">-</span><span class="pln">size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">75</span><span class="pun">%</span><span class="pln"> </span><span class="lit">25</span><span class="pun">%,</span><span class="pln"> </span><span class="lit">25</span><span class="pun">%</span><span class="pln"> </span><span class="lit">25</span><span class="pun">%,</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%</span><span class="pln"> </span><span class="lit">75</span><span class="pun">%;</span><span class="pln">
        mask</span><span class="pun">-</span><span class="pln">position</span><span class="pun">:</span><span class="pln"> bottom left</span><span class="pun">,</span><span class="pln"> bottom right</span><span class="pun">,</span><span class="pln"> top left</span><span class="pun">;</span><span class="pln">
        mask</span><span class="pun">-</span><span class="pln">repeat</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">no</span><span class="pun">-</span><span class="pln">repeat</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span><span class="pln">

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

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52952" href="https://academy.hsoub.com/uploads/monthly_2020_11/OLcC9.png.c9c9af421089593aa4719b8732406a46.png" rel="" data-fileext="png"><img alt="OLcC9.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52952" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/OLcC9.png.c9c9af421089593aa4719b8732406a46.png"></a>
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52957" href="https://academy.hsoub.com/uploads/monthly_2020_11/yOsfT.png.36df8cd64926e1ed188aef03fd57ead8.png" rel="" data-fileext="png"><img alt="yOsfT.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52957" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/yOsfT.png.36df8cd64926e1ed188aef03fd57ead8.png"></a>
</p>

<h3>
	القواطع
</h3>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5307_37" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    div </span><span class="pun">{</span><span class="pln">
        width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">200px</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">
        background</span><span class="pun">:</span><span class="pln"> teal</span><span class="pun">;</span><span class="pln">
        clip</span><span class="pun">-</span><span class="pln">path</span><span class="pun">:</span><span class="pln"> polygon</span><span class="pun">(</span><span class="lit">0</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="pln"> </span><span class="lit">100</span><span class="pun">%,</span><span class="pln"> </span><span class="lit">100</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="tag">&lt;/style&gt;</span><span class="pln">

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

<p>
	المثال أعلاه يوضح كيفية استخدام الخاصية <code>clip-path</code> لقطع الشكل المربع إلى شكل مثلث، يبدأ القطع في الحافة العُليا باتجاه اليسار (عند النقطة 0 0)، ومن ثمة يتجه إلى أسفل اليسار (النقطة 100% 0)، وأخيرًا إلى منتصف الضلع الأيمن (عند النقطة 100% 50%)، وتحدد هذه النقاط الثلاث رؤوس المثلث.
</p>

<p>
	<strong>النتيجة</strong>
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52949" href="https://academy.hsoub.com/uploads/monthly_2020_11/HMHSC.png.aa294a43cbdf7c861e0110a272aff175.png" rel="" data-fileext="png"><img alt="HMHSC.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52949" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/HMHSC.png.aa294a43cbdf7c861e0110a272aff175.png"></a>
</p>

<h4>
	إنشاء شكل دائري باستخدام القواطع
</h4>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5307_39" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    div </span><span class="pun">{</span><span class="pln">
        width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">200px</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">
        background</span><span class="pun">:</span><span class="pln"> teal</span><span class="pun">;</span><span class="pln">
        clip</span><span class="pun">-</span><span class="pln">path</span><span class="pun">:</span><span class="pln"> circle</span><span class="pun">(</span><span class="lit">30</span><span class="pun">%</span><span class="pln"> at </span><span class="lit">50</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="tag">&lt;/style&gt;</span><span class="pln">

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

<p>
	المثال أعلاه يوضح كيفية انشاء شكل دائري باستخدام الخاصية <code>clip-path</code>، ويكون الناتج هو شكل دائري نصف قطره 30% من عرض العنصر الأصلي، ومركزه هو نفس مركز العنصر.
</p>

<p>
	اطلع على تجربة حيًة للمثال أعلاه على <a href="https://jsfiddle.net/webtiki/qp69n494/" rel="external nofollow">JSFiddle</a>.
</p>

<p>
	<strong>الصيغة العامة لرسم الشكل الدائري</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5307_41" style=""><span class="pln">circle</span><span class="pun">(</span><span class="pln">radius at x y</span><span class="pun">)</span></pre>

<h2>
	الخاصية Object-fit
</h2>

<p>
	تُحدد الخاصية object-fit كيف يتناسب العنصر مع صندوق ذو ارتفاع وعرض محددين، وغالبًا ما تستخدم مع الصور والفيديوهات، ويمكن أن تأخذ إحدى القيم التالية:
</p>

<p>
	<strong>FILL</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5307_44" style=""><span class="kwd">object</span><span class="pun">-</span><span class="pln">fit</span><span class="pun">:</span><span class="pln"> fill</span><span class="pun">;</span></pre>

<p style="text-align: center;">
	<img alt="xIdvn.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52961" data-unique="u71u0i6fq" src="https://academy.hsoub.com/uploads/monthly_2020_11/xIdvn.png.b421716b9455dfd5bc1456e0bd225568.png">
</p>

<p>
	تُمدد <code>FILL</code> الصورة لملء صندوق المحتوى بغض النظر عن نسبة العرض إلى الارتفاع الأصلية للصورة.
</p>

<p>
	<strong>CONTAIN</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5307_47" style=""><span class="kwd">object</span><span class="pun">-</span><span class="pln">fit</span><span class="pun">:</span><span class="pln"> contain</span><span class="pun">;</span></pre>

<p style="text-align: center;">
	<img alt="qpiUd.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52960" data-unique="mos4r86i4" src="https://academy.hsoub.com/uploads/monthly_2020_11/qpiUd.png.f63b425f2dfbecafdad072d1249069f0.png">
</p>

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

<p>
	<strong>COVER</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5307_49" style=""><span class="kwd">object</span><span class="pun">-</span><span class="pln">fit</span><span class="pun">:</span><span class="pln"> cover</span><span class="pun">;</span></pre>

<p style="text-align: center;">
	<img alt="zxl94.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52962" data-unique="noyakts08" src="https://academy.hsoub.com/uploads/monthly_2020_11/zxl94.png.68b066020c9394e2348e1557a9bf0ad0.png">
</p>

<p>
	تُمدد <code>cover</code> الصورة لملء صندوق المحتوى، مع الحفاظ على نسبة العرض إلى الارتفاع الأصلية للصورة عن طريق قصها.
</p>

<p>
	<strong>NONE</strong>
</p>

<pre class="ipsCode">object-fit: none;
</pre>

<p style="text-align: center;">
	<img alt="YdXVL.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52963" data-unique="2huynryf7" src="https://academy.hsoub.com/uploads/monthly_2020_11/YdXVL.png.54fdf284ee7fc443c4457a1d623c302b.png">
</p>

<p>
	تتجاهل <code>none</code> حجم الصندوق وتُحافظ على الحجم الاصلي للصورة.
</p>

<p>
	<strong>SCALE-DOWN</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_6974_6" style=""><span class="kwd">object</span><span class="pun">-</span><span class="pln">fit</span><span class="pun">:</span><span class="pln"> scale</span><span class="pun">-</span><span class="pln">down</span><span class="pun">;</span></pre>

<p style="text-align: center;">
	<img alt="bnDKA.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52964" data-unique="jixkaqxlb" src="https://academy.hsoub.com/uploads/monthly_2020_11/bnDKA.png.4629a3732e2538d872d15e386cb7cba5.png">
</p>

<p>
	تختار تلقائيًا قيمة <code>object-fit</code> التي تُنتج الصورة الأصغر.
</p>

<p>
	ترجمة -وبتصرف- للفصول [Filter Property, Clipping and Masking] من كتاب <a href="https://goalkicker.com/CSSBook/" rel="external nofollow">CSS Notes for Professionals</a>
</p>
]]></description><guid isPermaLink="false">1056</guid><pubDate>Wed, 25 Nov 2020 13:04:00 +0000</pubDate></item><item><title>&#x62A;&#x646;&#x633;&#x64A;&#x642; &#x627;&#x644;&#x62E;&#x644;&#x641;&#x64A;&#x627;&#x62A; (Backgrounds) &#x641;&#x64A; CSS</title><link>https://academy.hsoub.com/programming/css/%D8%AA%D9%86%D8%B3%D9%8A%D9%82-%D8%A7%D9%84%D8%AE%D9%84%D9%81%D9%8A%D8%A7%D8%AA-backgrounds-%D9%81%D9%8A-css-r1055/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2020_11/6.png.39293185bc50ac992536ae0ec8b3d033.png" /></p>
<p>
	تُمكنك CSS من وضع ألوان، أو تدرجات لونية، أو صور كخلفيات للعناصر، والتحكم في حجمها، وموضعها، وعدد مرات تكرارها.
</p>

<h2>
	إضافة الألوان كخلفيات للعناصر
</h2>

<p>
	تُستعمل الخاصية background-color لإضافة خلفية بلون معين للعنصر، وتقبل القيم <code>transparent</code>، و <code>inherit</code>، و <code>initial</code> أيضًا، ويمكن تطبيقها على العناصر و العناصر الزائفة <code>first-letter::</code> و <code>first-line::</code>.
</p>

<ul>
	<li>
		transparent: تجعل خلفية العنصر شفافة، وهي القيمة الافتراضية للخاصية.
	</li>
	<li>
		inherit: تَرِث قيمة الخاصية من العنصر الأب.
	</li>
	<li>
		initial: تُرجع القيمة الإبتدائية للخاصية.
	</li>
</ul>

<p>
	تُعرَّف الألوان في CSS بعدد من الطُرق وهي:
</p>

<h3>
	الكلمات المحجوزة للألوان
</h3>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_618_7" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    div </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"> red</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span><span class="pln">

</span><span class="tag">&lt;div&gt;</span><span class="pln">This will have a red background</span><span class="tag">&lt;/div&gt;</span></pre>

<h3>
	القيم الست عشرية للألوان
</h3>

<p>
	تُستعمل القيم الست عشرية لتمثيل مكونات الألوان (أو ما يُعرف بترميز RGB) بالنظام الست عشري. فمثلًا يكون اللون <code>ff0000</code>‎<code>#</code> هو اللون الأحمر، حيث يُمثل بالحرفين (ff) اللذان يمثلان المقابل الست عشري للرقم 256.
</p>

<p>
	يُمكن تقسم الترميز الست عشري للألوان إلى ثلاثة أقسام، كل منها يتكون من حرفين ويُمثل أحد الألوان الأحمر أو الأخضر أو الأزرق (على الترتيب من اليسار إلى اليمين)، وفي حال كانت الحروف الممثلة لكل لون متشابهه، يمكن إختصار الترميز الست عشري إلى ثلاث أحرف، فعلى سبيل المثال يُمكن اختصار اللون ‎<code>#ff0000</code> إلى <code>f00</code>‎<code>#</code>.
</p>

<p>
	<strong>ملاحظة</strong>: الترميز الست عشري غير حساس لحالة الأحرف.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_9" style=""><span class="pln">body </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">#de1205; /* red */</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">main </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">#00f; /* blue */</span><span class="pln">
</span><span class="pun">}</span></pre>

<h3>
	ترميز RGB و RGBa
</h3>

<p>
	ترمُز RGB إلى الألوان الأحمر والأخضر والأزرق (على الترتيب من اليسار إلى اليمين)، وتستخدم ثلاث قيم تُمثَّل كل منها القيمة العشرية لأحد الألوان الثلاثة، وتتراوح هذه القيم بين صفر و 255.
</p>

<p>
	يُمكِّن ترميز RGBa من إضافة مُعامل أخير يُسمى معامل ألفا، ويُحدد درجة تعتيم/شفافية العنصر، وتتراوح قيمته بين 0.0 و 1.0.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_12" style=""><span class="pln">header </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"> 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="com">/* black */</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

footer </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"> 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.5</span><span class="pun">);</span><span class="pln"> </span><span class="com">/* black with 50% opacity */</span><span class="pln">
</span><span class="pun">}</span></pre>

<h3>
	ترميز HSL و HSLa
</h3>

<p>
	ترمز hsl للكلمات صبغة (hue) وتستعمل لتحديد اللون، إشباع (saturation) وتستعمل لتحديد تركيز اللون، إضاءة (lightness) وتستعمل لتحديد كمية اللون الأبيض في اللون.
</p>

<p>
	تحدد قيمة الصبغة بزاوية بين صفر و 360 درجة، بينما تحدد قيم الإشباع والإضاءة بنسب مئوية.
</p>

<p>
	يُمكِّن ترميز HSLa من إضافة مُعامل أخير يُسمى معامل ألفا، ويُحدد درجة تعتيم/شفافية العنصر، وتتراوح قيمته بين 0.0 و 1.0.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_14" style=""><span class="pln">li a </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"> hsl</span><span class="pun">(</span><span class="lit">120</span><span class="pun">,</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%,</span><span class="pln"> </span><span class="lit">50</span><span class="pun">%);</span><span class="pln"> </span><span class="com">/* green */</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">#p1 {</span><span class="pln">
    background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> hsla</span><span class="pun">(</span><span class="lit">120</span><span class="pun">,</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%,</span><span class="pln"> </span><span class="lit">50</span><span class="pun">%,</span><span class="pln"> </span><span class="lit">0.3</span><span class="pun">);</span><span class="pln"> </span><span class="com">/* green with 30% opacity */</span><span class="pln">
</span><span class="pun">}</span></pre>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة تطوير واجهات المستخدم
		</p>

		<p class="banner-subtitle">
			ابدأ عملك الحر بتطوير واجهات المواقع والمتاجر الإلكترونية فور انتهائك من الدورة
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/front-end-web-development/" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<img alt="دورة تطوير واجهات المستخدم" src="https://academy.hsoub.com/learn/assets/images/courses/front-end-web-development.png">
	</div>
</div>

<h2>
	استخدام التدرجات اللونية كخلفيات للعناصر
</h2>

<p>
	أُضيفت التدرجات اللونية كإحدى أنواع الصور في CSS3، ويُمكن استعمالها كقيمة للخاصية <code>background-image</code> أو الخاصية المُختزلة <code>background</code>. ويوجد نوعين من التدرجات اللونية هما التدرجات الخطية (linear) و التدرجات الدائرية (radial)، وكلٌّ منهما يمكن أن يكون متكرر أو غير متكرر.
</p>

<ul>
	<li>
		linear-gradient()‎
	</li>
	<li>
		repeating-linear-gradient()‎
	</li>
	<li>
		radial-gradient()‎
	</li>
	<li>
		repeating-radial-gradient()‎
	</li>
</ul>

<h3>
	التدرج الخطي: الدالة linear-gradient()‎
</h3>

<p>
	<strong>الصيغة العامة</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_16" style=""><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">(&lt;</span><span class="pln">direction</span><span class="pun">&gt;?,</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln">color</span><span class="pun">-</span><span class="pln">stop</span><span class="pun">-</span><span class="lit">1</span><span class="pun">&gt;,</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln">color</span><span class="pun">-</span><span class="pln">stop</span><span class="pun">-</span><span class="lit">2</span><span class="pun">&gt;,</span><span class="pln"> </span><span class="pun">...);</span></pre>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				القيمة
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				&lt;direction&gt;<direction></direction>
			</td>
			<td style="text-align:right">
				يُمكن أن يأخذ قيم مثل <code>to top</code>، أو <code>to bottom</code>، أو <code>to right</code>، أو <code>to left</code>، أو تأخذ <a href="https://www.w3.org/TR/css3-values/#angles" rel="external nofollow">زاوية</a> تبدأ من الأعلى وتدور في اتجاه عقارب الساعة، وتُقاس بالوحدات <a href="https://www.w3.org/TR/css3-values/#deg" rel="external nofollow">deg</a>، أو <a href="https://www.w3.org/TR/css3-values/#grad" rel="external nofollow">grad</a>، أو <a href="https://www.w3.org/TR/css3-values/#rad" rel="external nofollow">rad</a>، أو <a href="https://www.w3.org/TR/css3-values/#turn" rel="external nofollow">turn</a>. وإذا لم تُحدد هذه القيمة يكون التدرج من أعلى لأسفل.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				&lt;color-stop-list&gt;<color-stop-list></color-stop-list>
			</td>
			<td style="text-align:right">
				تُحدد قائمة من الألوان، ويُمكن إتباع كل لون بنسبة مئوية أو <a href="https://www.w3.org/TR/css3-values/#lengths" rel="external nofollow">مسافة</a> تُحدد الموضع الذي سيُعرض فيه اللون (إختاري)، مثل:<br>
				<code>yellow 10% rgba(0,0,0, 0.5) 40px, #fff 100%</code>
			</td>
		</tr>
	</tbody>
</table>
<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>
<p>
	<strong>مثال</strong>
</p>

<p>
	إنشاء تدرج لوني يتجه من اليمين إلى اليسار ويتدرج بين اللونين الأحمر والأزرق
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_18" style=""><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">
    background</span><span class="pun">-</span><span class="pln">color</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"> red</span><span class="pun">,</span><span class="pln"> blue</span><span class="pun">);</span><span class="pln"> </span><span class="com">/* you can also use 270deg */</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	إنشاء تدرج لوني يتجه من أسفل اليمين إلى أعلى اليسار
</p>

<pre class="ipsCode">.diagonal-linear-gradient {
    background-color: linear-gradient(to left top, red, yellow 10%);
}
</pre>

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

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_20" style=""><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">rainbow </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"> 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"> red</span><span class="pun">,</span><span class="pln"> orange</span><span class="pun">,</span><span class="pln"> yellow</span><span class="pun">,</span><span class="pln"> green </span><span class="pun">,</span><span class="pln">blue</span><span class="pun">,</span><span class="pln"> indigo</span><span class="pun">,</span><span class="pln"> violet</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

<h3>
	التدرج الدائري: الدالة radial-gradient()‎
</h3>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_22" style=""><span class="pun">.</span><span class="pln">radial</span><span class="pun">-</span><span class="pln">gradient</span><span class="pun">-</span><span class="pln">simple </span><span class="pun">{</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> radial</span><span class="pun">-</span><span class="pln">gradient</span><span class="pun">(</span><span class="pln">red</span><span class="pun">,</span><span class="pln"> blue</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">radial</span><span class="pun">-</span><span class="pln">gradient </span><span class="pun">{</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> radial</span><span class="pun">-</span><span class="pln">gradient</span><span class="pun">(</span><span class="pln">circle farthest</span><span class="pun">-</span><span class="pln">corner at top left</span><span class="pun">,</span><span class="pln"> red</span><span class="pun">,</span><span class="pln"> blue</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				القيمة
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				circle
			</td>
			<td style="text-align:right">
				شكل التدرج اللوني، ويمكن أن تكون circle، أو ellipse وهي القيمة الإفتراضية.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				farthest-corner
			</td>
			<td style="text-align:right">
				كلمة محجوزة تُحدد حجم الشكل النهائي، ويمكن أن تكون closest-side، أو farthest-side، أو closest-corner، أو farthest-corner.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				top left
			</td>
			<td style="text-align:right">
				تُحدد موضع مركز التدرج اللوني.
			</td>
		</tr>
	</tbody>
</table>

<h3>
	التدرجات المُتكررة (Repeating Gradients)
</h3>

<p>
	تأخذ التدرجات اللونية المتكررة نفس معاملات التدرجات اللونية العادية، ولكنها تُكرر التدرج اللوني على خلفية العنصر.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_24" style=""><span class="pun">.</span><span class="pln">bullseye </span><span class="pun">{</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> repeating</span><span class="pun">-</span><span class="pln">radial</span><span class="pun">-</span><span class="pln">gradient</span><span class="pun">(</span><span class="pln">red</span><span class="pun">,</span><span class="pln"> red </span><span class="lit">10</span><span class="pun">%,</span><span class="pln"> white </span><span class="lit">10</span><span class="pun">%,</span><span class="pln"> white </span><span class="lit">20</span><span class="pun">%);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">warning </span><span class="pun">{</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> repeating</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="lit">45deg</span><span class="pun">,</span><span class="pln"> yellow</span><span class="pun">,</span><span class="pln"> yellow </span><span class="lit">10</span><span class="pun">%,</span><span class="pln"> black </span><span class="lit">10</span><span class="pun">%,</span><span class="pln"> black </span><span class="lit">20</span><span class="pun">%);</span><span class="pln">
</span><span class="pun">}</span></pre>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				القيمة
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				-45deg
			</td>
			<td style="text-align:right">
				<a href="https://www.w3.org/TR/css3-values/#angles" rel="external nofollow">زاوية</a> تبدأ من الأعلى وتدور في اتجاه عقارب الساعة، وتُقاس بالوحدات <a href="https://www.w3.org/TR/css3-values/#deg" rel="external nofollow">deg</a>، أو <a href="https://www.w3.org/TR/css3-values/#grad" rel="external nofollow">grad</a>، أو <a href="https://www.w3.org/TR/css3-values/#rad" rel="external nofollow">rad</a>، أو <a href="https://www.w3.org/TR/css3-values/#turn" rel="external nofollow">turn</a>.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				to left
			</td>
			<td style="text-align:right">
				إتجاه التدرج اللوني، وتُكتب بالصيغة: <code>[x-axis(left Or right)][y-axis(top OR bottom)]</code>
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				yellow 10%
			</td>
			<td style="text-align:right">
				قائمة الألوان، ويُمكن إتباع كل لون بنسبة مئوية أو <a href="https://www.w3.org/TR/css3-values/#lengths" rel="external nofollow">مسافة</a> تُحدد الموضع الذي سيُعرض فيه اللون (إختاري).
			</td>
		</tr>
	</tbody>
</table>

<h2>
	استخدام الصور كخلفيات للعناصر
</h2>

<p>
	تُستخدم الخاصية <code>background-image</code> لوضع صورة كخلفية للعنصر المُحدد.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_26" style=""><span class="pun">.</span><span class="pln">myClass </span><span class="pun">{</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="str">'/path/to/image.jpg'</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	ويُمكن تحديد عدد من الصور والفصل بينها بفاصلة، وتكون النتيجة أن تظهر الصور مترادفة حسب ترتيب كتابتها في الشيفرة.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_28" style=""><span class="pun">.</span><span class="pln">myClass </span><span class="pun">{</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="str">'/path/to/image.jpg'</span><span class="pun">),</span><span class="pln">
                      url</span><span class="pun">(</span><span class="str">'/path/to/image2.jpg'</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				القيمة
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				url(...)‎
			</td>
			<td style="text-align:right">
				تُحدد مسار الصورة المُراد استخدامها.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				none
			</td>
			<td style="text-align:right">
				تحذف صورة الخلفية.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				initial
			</td>
			<td style="text-align:right">
				تُرجع القيمة الإفتراضية للخاصية.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				inherit
			</td>
			<td style="text-align:right">
				تَرِث قيمة الخاصية من العنصر الأب.
			</td>
		</tr>
	</tbody>
</table>

<h3>
	بعض الخصائص التي تُستخدم مع الخاصية background-image
</h3>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_30" style=""><span class="pln">background</span><span class="pun">-</span><span class="pln">size</span><span class="pun">:</span><span class="pln"> xpx ypx </span><span class="pun">|</span><span class="pln"> x</span><span class="pun">%</span><span class="pln"> y</span><span class="pun">%;</span><span class="pln">
background</span><span class="pun">-</span><span class="pln">repeat</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">no</span><span class="pun">-</span><span class="pln">repeat </span><span class="pun">|</span><span class="pln"> repeat </span><span class="pun">|</span><span class="pln"> repeat</span><span class="pun">-</span><span class="pln">x </span><span class="pun">|</span><span class="pln"> repeat</span><span class="pun">-</span><span class="pln">y</span><span class="pun">;</span><span class="pln">
background</span><span class="pun">-</span><span class="pln">position</span><span class="pun">:</span><span class="pln"> left offset </span><span class="pun">(</span><span class="pln">px</span><span class="pun">/%)</span><span class="pln"> right offset </span><span class="pun">(</span><span class="pln">px</span><span class="pun">/%)</span><span class="pln"> </span><span class="pun">|</span><span class="pln"> center center </span><span class="pun">|</span><span class="pln"> left top </span><span class="pun">|</span><span class="pln"> right bottom</span><span class="pun">;</span></pre>

<h2>
	حجم الخلفية (Background Size)
</h2>

<p>
	تُستخدم الخاصية background-size للتحكم في تكبير وتصغير صورة الخلفية، وتأخذ قيمة واحدة تُحدد التكبير أو التصغير في الاتجاهين الأفقي والرأسي، أو تأخذ قيمتين تحددان التكبير أو التصغير في كل اتجاه على حدة.
</p>

<p>
	تُحافظ القيمة <code>auto</code> للخاصية <code>background-size</code> على نسبة أبعاد الصورة (نسبة الإرتفاع إلى العرض)، فعلى سبيل المثال إذا كان لدينا صورة بحجم 256px * 256px، فإن جميع القواعد أدناه متكافئة وتؤدي لعرض الصورة بارتفاع وعرض 50 بكسل.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_32" style=""><span class="pln">background</span><span class="pun">-</span><span class="pln">size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pun">;</span><span class="pln">
background</span><span class="pun">-</span><span class="pln">size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pln"> </span><span class="kwd">auto</span><span class="pun">;</span><span class="pln">
background</span><span class="pun">-</span><span class="pln">size</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">auto</span><span class="pln"> </span><span class="lit">50px</span><span class="pun">;</span><span class="pln">
background</span><span class="pun">-</span><span class="pln">size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pln"> </span><span class="lit">50px</span><span class="pun">;</span></pre>

<p>
	الصورة الإبتدائية
</p>

<p style="text-align: center;">
	<img alt="Htt64.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52939" data-unique="gx5haqoa4" src="https://academy.hsoub.com/uploads/monthly_2020_11/Htt64.png.d5e1cb14b901b304234902b5b998f689.png">
</p>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="52933" href="https://academy.hsoub.com/uploads/monthly_2020_11/0Bay0.png.daca497b64673868d1e15aad440b4bbb.png" rel=""><img alt="0Bay0.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52933" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/0Bay0.png.daca497b64673868d1e15aad440b4bbb.png"></a>
</p>

<p>
	ويُمكن أيضًا استعمال نسب مئوية لتحديد التكبير أو التصغير للصورة.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_34" style=""><span class="com">#withbackground {</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="str">'to/some/background.png'</span><span class="pun">);</span><span class="pln">
    background</span><span class="pun">-</span><span class="pln">size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%</span><span class="pln"> </span><span class="lit">66</span><span class="pun">%;</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">200px</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">
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</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>

<p style="text-align: center;">
	<img alt="VYOt6.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52940" data-unique="e4dqcm58o" src="https://academy.hsoub.com/uploads/monthly_2020_11/VYOt6.png.b1416f1bc5a633ca45b0d3d52ab67581.png">
</p>

<p>
	<strong>ملاحظة</strong>: يعتمد سلوك الخاصية <code>background-size</code> على الخاصية <a href="https://www.w3.org/TR/2014/CR-css3-background-20140909/#the-background-origin" rel="external nofollow">background-origin</a>.
</p>

<h4>
	المحافظة على نسبة أبعاد الصورة
</h4>

<p>
	للمحافظة على نسبة أبعاد الصورة عند استخدامها لتغطية عنصر أو وضعها داخله يجب استخدام القيم <code>cover</code> أو <code>contain</code> للخاصية <code>background-size</code>.
</p>

<p style="text-align: center;">
	<img alt="gray-bg.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="52937" data-unique="s5vyy8u55" src="https://academy.hsoub.com/uploads/monthly_2020_11/gray-bg.PNG.be68a2285917da3519180cd107beb645.PNG">
</p>

<p>
	افترض أن المساحة البيضاء في الصورة أعلاه تُمثل شاشة العرض الخاصة بك، استخدام القيمة <code>contain</code> للخاصية <code>background-size</code> سيؤدي إلى تكبير أو تصغير الصورة بحيث يُطابق أحد أبعادها أحد بُعدي الصندوق مع المحافظة على نسبة أبعاد الصورة.
</p>

<p style="text-align: center;">
	<img alt="contain.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="52935" data-unique="g5m4xqhxa" src="https://academy.hsoub.com/uploads/monthly_2020_11/contain.PNG.c23001001d866b6935ff15650b4fc153.PNG">
</p>

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

<p style="text-align: center;">
	<img alt="cover.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="52936" data-unique="nwut5eyuk" src="https://academy.hsoub.com/uploads/monthly_2020_11/cover.PNG.f393485c4ceb307ec3c1d4a53e723df9.PNG">
</p>

<p>
	<strong>مثال</strong>
</p>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_36" style=""><span class="pln">  div </span><span class="pun">&gt;</span><span class="pln"> div </span><span class="pun">{</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">http</span><span class="pun">:</span><span class="com">//i.stack.imgur.com/r5CAq.jpg);</span><span class="pln">
      background</span><span class="pun">-</span><span class="pln">repeat</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">no</span><span class="pun">-</span><span class="pln">repeat</span><span class="pun">;</span><span class="pln">
      background</span><span class="pun">-</span><span class="pln">position</span><span class="pun">:</span><span class="pln"> center center</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">#ccc;</span><span class="pln">
      border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</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">20em</span><span class="pun">;</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10em</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  div</span><span class="pun">.</span><span class="pln">contain </span><span class="pun">{</span><span class="pln">
      background</span><span class="pun">-</span><span class="pln">size</span><span class="pun">:</span><span class="pln"> contain</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  div</span><span class="pun">.</span><span class="pln">cover </span><span class="pun">{</span><span class="pln">
      background</span><span class="pun">-</span><span class="pln">size</span><span class="pun">:</span><span class="pln"> cover</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="com">/********************************************
  Additional styles for the explanation boxes
  *********************************************/</span><span class="pln">

  div </span><span class="pun">&gt;</span><span class="pln"> div </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">1ex</span><span class="pln"> </span><span class="lit">1ex</span><span class="pln"> </span><span class="lit">0</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">
  div </span><span class="pun">+</span><span class="pln"> div </span><span class="pun">{</span><span class="pln">
      clear</span><span class="pun">:</span><span class="pln"> both</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">1px</span><span class="pln"> dashed silver</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="lit">1ex</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  div </span><span class="pun">&gt;</span><span class="pln"> div</span><span class="pun">::</span><span class="pln">after </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">#000;</span><span class="pln">
      color</span><span class="pun">:</span><span class="pln"> </span><span class="com">#fefefe</span><span class="pln">
      margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1ex</span><span class="pun">;</span><span class="pln">
      padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1ex</span><span class="pun">;</span><span class="pln">
      opacity</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0.8</span><span class="pun">;</span><span class="pln">
      display</span><span class="pun">:</span><span class="pln"> block</span><span class="pun">;</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10ex</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">0.7em</span><span class="pun">;</span><span class="pln">
      content</span><span class="pun">:</span><span class="pln"> attr</span><span class="pun">(</span><span class="kwd">class</span><span class="pun">);</span><span class="pln">
  </span><span class="pun">}</span></pre>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_618_38" style=""><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">"contain"</span><span class="tag">&gt;&lt;/div&gt;</span><span class="pln">
      </span><span class="tag">&lt;p&gt;</span><span class="pln">Note the grey background. The image does not cover the whole region, but it's fully
      </span><span class="tag">&lt;em&gt;</span><span class="pln">contained</span><span class="tag">&lt;/em&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</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"cover"</span><span class="tag">&gt;&lt;/div&gt;</span><span class="pln">
      </span><span class="tag">&lt;p&gt;</span><span class="pln">Note the ducks/geese at the bottom of the image. Most of the water is cut, as well as a part
      of the sky. You don't see the complete image anymore, but neither do you see any background color;
      the image </span><span class="tag">&lt;em&gt;</span><span class="pln">covers</span><span class="tag">&lt;/em&gt;</span><span class="pln"> all of the </span><span class="tag">&lt;code&gt;&lt;div&gt;&lt;/code&gt;</span><span class="pln">.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img alt="Gxfig.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52938" data-unique="ziu3d4ihy" src="https://academy.hsoub.com/uploads/monthly_2020_11/Gxfig.png.24b573ebd808e903d849fdb80266dd72.png">
</p>

<h3>
	نقوش الصور (Image Sprites)
</h3>

<p>
	<strong>نقوش الصور</strong> هي مجموعة من الصور مُخزَّنة في صورة واحدة، ويمكن استعمال كل صوره منها على حدة.
</p>

<p>
	<strong>مثال</strong>
</p>

<p style="text-align: center;">
	<img alt="XuyVW.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52941" data-unique="56qyudugk" src="https://academy.hsoub.com/uploads/monthly_2020_11/XuyVW.png.6f1e5cdcc0b2fad00dd13331c5554fd8.png">
</p>

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

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_618_40" style=""><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">"icon icon1"</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">"icon icon2"</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">"icon icon3"</span><span class="tag">&gt;&lt;/div&gt;</span></pre>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_42" style=""><span class="pln">  </span><span class="pun">.</span><span class="pln">icon </span><span class="pun">{</span><span class="pln">
      background</span><span class="pun">:</span><span class="pln"> url</span><span class="pun">(“</span><span class="pln">icons</span><span class="pun">-</span><span class="pln">sprite</span><span class="pun">.</span><span class="pln">png</span><span class="pun">”);</span><span class="pln">
      display</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">inline</span><span class="pun">-</span><span class="pln">block</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">
      width</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">icon1 </span><span class="pun">{</span><span class="pln">
      background</span><span class="pun">-</span><span class="pln">position</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">0px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">icon2 </span><span class="pun">{</span><span class="pln">
      background</span><span class="pun">-</span><span class="pln">position</span><span class="pun">:</span><span class="pln"> </span><span class="pun">-</span><span class="lit">20px</span><span class="pln"> </span><span class="lit">0px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">icon3 </span><span class="pun">{</span><span class="pln">
      background</span><span class="pun">-</span><span class="pln">position</span><span class="pun">:</span><span class="pln"> </span><span class="pun">-</span><span class="lit">40px</span><span class="pln"> </span><span class="lit">0px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	تُفصل الصور عن طريق تحديد مواقعها بالخاصية <code>background-position</code>.
</p>

<h2>
	موضع الخلفية (Background Position)
</h2>

<p>
	تُستخدم الخاصية <a href="https://drafts.csswg.org/css-backgrounds-3/#background-position" rel="external nofollow">background-position</a> لتحديد نقطة بداية الخلفية سواء كانت صورة أو تدرج لوني.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_44" style=""><span class="pun">.</span><span class="pln">myClass </span><span class="pun">{</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="str">'path/to/image.jpg'</span><span class="pun">);</span><span class="pln">
    background</span><span class="pun">-</span><span class="pln">position</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50</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></pre>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				الوحدة
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				value% value%
			</td>
			<td style="text-align:right">
				تُحدد الإزاحة الأفقية لصورة الخلفية كنسبة من عرض الصورة، والإزاحة الرأسية كنسبة من ارتفاعها.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				valuepx valuepx
			</td>
			<td style="text-align:right">
				تُحدد الإزاحات الأفقية والرأسية بالبكسلات، وتُقاس المسافة من أعلى ويسار الصورة.
			</td>
		</tr>
	</tbody>
</table>

<p>
	بالإضافة للخاصية المختزلة background-position والتي تُحدد الإزاحتان الأفقية والرأسية معًا، يُمكن استخدام الخاصية background-position-x لتحديد الإزاحة الأفقية، والخاصية background-position-y لتحديد الإزاحة الرأسية.
</p>

<h3>
	الخاصية background-origin
</h3>

<p>
	تُحدد الخاصية <code>background-origin</code> موضع صورة الخلفية، وفي حال كانت قيمة الخاصية <code>background-attachment</code> هي <code>fixed</code> فلن يكون لهذه الخاصية أي تأثير، والقيمة الإفتراضية لها هي <code>padding-box</code>.
</p>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				القيمة
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				padding-box
			</td>
			<td style="text-align:right">
				يُحدد الموضع نسبةً لصندوق الحواشي.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				border-box
			</td>
			<td style="text-align:right">
				يُحدد الموضع نسبةً لصندوق الإطارات.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				context-box
			</td>
			<td style="text-align:right">
				يُحدد الموضع نسبةّ لصندوق المحتوى.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				initial
			</td>
			<td style="text-align:right">
				تُرجع القيمة الإبتدائية للخاصية.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				inherit
			</td>
			<td style="text-align:right">
				ترث قيمة الخاصية من العنصر الأب.
			</td>
		</tr>
	</tbody>
</table>

<p>
	<strong>مثال</strong>
</p>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_618_47" style=""><span class="pln">  </span><span class="tag">&lt;p&gt;</span><span class="pln">No background-origin (padding-box is default):</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">"example example1"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;h2&gt;</span><span class="pln">Lorem Ipsum Dolor</span><span class="tag">&lt;/h2&gt;</span><span class="pln">
      </span><span class="tag">&lt;p&gt;</span><span class="pln">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod
      tincidunt ut laoreet dolore magna aliquam erat volutpat.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
      </span><span class="tag">&lt;p&gt;</span><span class="pln">Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut
      aliquip ex ea commodo consequat.</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;p&gt;</span><span class="pln">background-origin: border-box:</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">"example example2"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;h2&gt;</span><span class="pln">Lorem Ipsum Dolor</span><span class="tag">&lt;/h2&gt;</span><span class="pln">
      </span><span class="tag">&lt;p&gt;</span><span class="pln">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod
      tincidunt ut laoreet dolore magna aliquam erat volutpat.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
      </span><span class="tag">&lt;p&gt;</span><span class="pln">Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut
      aliquip ex ea commodo consequat.</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;p&gt;</span><span class="pln">background-origin: content-box:</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">"example example3"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;h2&gt;</span><span class="pln">Lorem Ipsum Dolor</span><span class="tag">&lt;/h2&gt;</span><span class="pln">
      </span><span class="tag">&lt;p&gt;</span><span class="pln">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod
      tincidunt ut laoreet dolore magna aliquam erat volutpat.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
      </span><span class="tag">&lt;p&gt;</span><span class="pln">Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut
      aliquip ex ea commodo consequat.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span></pre>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_49" style=""><span class="pln">  </span><span class="pun">.</span><span class="pln">example </span><span class="pun">{</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">300px</span><span class="pun">;</span><span class="pln">
      border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">20px</span><span class="pln"> solid black</span><span class="pun">;</span><span class="pln">
      padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pun">;</span><span class="pln">
      background</span><span class="pun">:</span><span class="pln"> url</span><span class="pun">(</span><span class="pln">https</span><span class="pun">:</span><span class="com">//static.pexels.com/photos/6440/magazines-desk-work-workspace-medium.jpg);</span><span class="pln">
      background</span><span class="pun">-</span><span class="pln">repeat</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">no</span><span class="pun">-</span><span class="pln">repeat</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">example1 </span><span class="pun">{}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">example2 </span><span class="pun">{</span><span class="pln"> background</span><span class="pun">-</span><span class="pln">origin</span><span class="pun">:</span><span class="pln"> border</span><span class="pun">-</span><span class="pln">box</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">example3 </span><span class="pun">{</span><span class="pln"> background</span><span class="pun">-</span><span class="pln">origin</span><span class="pun">:</span><span class="pln"> content</span><span class="pun">-</span><span class="pln">box</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="52942" href="https://academy.hsoub.com/uploads/monthly_2020_11/ycz1z.png.41a3049a618fc8793a0c519d2168a388.png" rel=""><img alt="ycz1z.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52942" data-unique="e5znbbya0" src="https://academy.hsoub.com/uploads/monthly_2020_11/ycz1z.thumb.png.549cd4cd2e97c67bfed99e918083c9ee.png"></a>
</p>

<p>
	<strong>مصادر إضافية</strong>
</p>

<ul>
	<li>
		<a href="https://www.w3.org/TR/css3-background/#the-background-origin" rel="external nofollow">توثيق W3</a>.
	</li>
	<li>
		<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/background-origin" rel="external nofollow">توثيق MDN</a>.
	</li>
</ul>

<h3>
	إضافة صور مُتعددة للخلفية
</h3>

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

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_51" style=""><span class="com">#mydiv {</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">img_1</span><span class="pun">.</span><span class="pln">png</span><span class="pun">),</span><span class="pln"> </span><span class="com">/* top image */</span><span class="pln">
                      url</span><span class="pun">(</span><span class="pln">img_2</span><span class="pun">.</span><span class="pln">png</span><span class="pun">),</span><span class="pln"> </span><span class="com">/* middle image */</span><span class="pln">
                      url</span><span class="pun">(</span><span class="pln">img_3</span><span class="pun">.</span><span class="pln">png</span><span class="pun">);</span><span class="pln"> </span><span class="com">/* bottom image */</span><span class="pln">
    background</span><span class="pun">-</span><span class="pln">position</span><span class="pun">:</span><span class="pln"> right bottom</span><span class="pun">,</span><span class="pln">
                         left top</span><span class="pun">,</span><span class="pln">
                         right top</span><span class="pun">;</span><span class="pln">
    background</span><span class="pun">-</span><span class="pln">repeat</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">no</span><span class="pun">-</span><span class="pln">repeat</span><span class="pun">,</span><span class="pln">
                       repeat</span><span class="pun">,</span><span class="pln">
                       </span><span class="kwd">no</span><span class="pun">-</span><span class="pln">repeat</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	ومن الممكن أيضًا استخدام الصياغة المختزلة للخاصية كما هو موضح في المثال التالي
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_53" style=""><span class="com">#mydiv {</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> url</span><span class="pun">(</span><span class="pln">img_1</span><span class="pun">.</span><span class="pln">ong</span><span class="pun">)</span><span class="pln"> right bottom </span><span class="kwd">no</span><span class="pun">-</span><span class="pln">repeat</span><span class="pun">,</span><span class="pln">
                url</span><span class="pun">(</span><span class="pln">img_2</span><span class="pun">.</span><span class="pln">png</span><span class="pun">)</span><span class="pln"> left top repeat</span><span class="pun">,</span><span class="pln">
                url</span><span class="pun">(</span><span class="pln">img_3</span><span class="pun">.</span><span class="pln">png</span><span class="pun">)</span><span class="pln"> right top </span><span class="kwd">no</span><span class="pun">-</span><span class="pln">repeat</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	يُمكنك أيضًا إضافة تدرج لوني مع الصورة
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_55" style=""><span class="com">#mydiv {</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> url</span><span class="pun">(</span><span class="pln">image</span><span class="pun">.</span><span class="pln">png</span><span class="pun">)</span><span class="pln"> right bottom </span><span class="kwd">no</span><span class="pun">-</span><span class="pln">repeat</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 bottom</span><span class="pun">,</span><span class="pln"> </span><span class="com">#fff 0%, #000 100%);</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	اطَّلع على تجربة حية لهذه الأمثله على <a href="https://jsfiddle.net/z30up2un/" rel="external nofollow">JSFiddle</a>.
</p>

<h3>
	الخاصية background-attachment
</h3>

<p>
	تُحدد الخاصية <code>background-attachment</code> ما إذا كانت صورة الخلفية ثابتة (fixed) أم انها تتحرك مع بقية الصفحة.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_57" style=""><span class="pln">body </span><span class="pun">{</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="str">'img.jpg'</span><span class="pun">);</span><span class="pln">
    background</span><span class="pun">-</span><span class="pln">attachment</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">fixed</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				القيمة
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				scroll
			</td>
			<td style="text-align:right">
				تتحرك صورة الخلفية مع العنصر.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				fixed
			</td>
			<td style="text-align:right">
				صورة الخلفية ثابتة بالنسبة لشاشة العرض.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				local
			</td>
			<td style="text-align:right">
				تتحرك صورة الخلفية مع محتوى العنصر.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				initial
			</td>
			<td style="text-align:right">
				تُرجع القيمة الإبتدائية للخاصية.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				inherit
			</td>
			<td style="text-align:right">
				ترث قيمة الخاصية من العنصر الأب.
			</td>
		</tr>
	</tbody>
</table>

<p>
	<strong>أمثلة</strong>
</p>

<ul>
	<li>
		background-attachment: scroll
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_59" style=""><span class="pln">  body </span><span class="pun">{</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="str">'image.jpg'</span><span class="pun">);</span><span class="pln">
      background</span><span class="pun">-</span><span class="pln">attachment</span><span class="pun">:</span><span class="pln"> scroll</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<ul>
	<li>
		background-attachment: fixed
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_61" style=""><span class="pln">  body </span><span class="pun">{</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="str">'image.jpg'</span><span class="pun">);</span><span class="pln">
      background</span><span class="pun">-</span><span class="pln">attachment</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">fixed</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<ul>
	<li>
		background-attachment: local
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_63" style=""><span class="pln">  div </span><span class="pun">{</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="str">'image.jpg'</span><span class="pun">);</span><span class="pln">
      background</span><span class="pun">-</span><span class="pln">attachment</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">local</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<h3>
	الخاصية background-clip
</h3>

<p>
	تُحدد الخاصية <code>background-clip</code> أين ستتوقف خلفية العنصر على حدود العنصر، سواءً كانت الخلفية لونًا <code>&lt;color&gt;</code> أو صورةً <code>&lt;image&gt;</code>.
</p>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				القيمة
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				border-box
			</td>
			<td style="text-align:right">
				ستمتد الخلفية إلى الحافة الخارجية للإطار (border)، لكنها ستقع تحته.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				padding-box
			</td>
			<td style="text-align:right">
				ستمتد الخلفية إلى الحافة الخارجية لمنطقة الحواشي (padding)، ولن تُرسَم الخلفية تحت الإطار.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				content-box
			</td>
			<td style="text-align:right">
				ستكون حدود الخلفية هي صندوق المحتوى (content box).
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				inherit
			</td>
			<td style="text-align:right">
				ترث قيمة الخاصية من العنصر الأب.
			</td>
		</tr>
	</tbody>
</table>

<p>
	<strong>مثال</strong>
</p>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_65" style=""><span class="pln">  </span><span class="tag">&lt;p&gt;</span><span class="pln">No background-origin (padding-box is default):</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">"example example1"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;h2&gt;</span><span class="pln">Lorem Ipsum Dolor</span><span class="tag">&lt;/h2&gt;</span><span class="pln">
      </span><span class="tag">&lt;p&gt;</span><span class="pln">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod
      tincidunt ut laoreet dolore magna aliquam erat volutpat.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
      </span><span class="tag">&lt;p&gt;</span><span class="pln">Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut
      aliquip ex ea commodo consequat.</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;p&gt;</span><span class="pln">background-origin: border-box:</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">"example example2"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;h2&gt;</span><span class="pln">Lorem Ipsum Dolor</span><span class="tag">&lt;/h2&gt;</span><span class="pln">
      </span><span class="tag">&lt;p&gt;</span><span class="pln">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod
      tincidunt ut laoreet dolore magna aliquam erat volutpat.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
      </span><span class="tag">&lt;p&gt;</span><span class="pln">Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut
      aliquip ex ea commodo consequat.</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;p&gt;</span><span class="pln">background-origin: content-box:</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">"example example3"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;h2&gt;</span><span class="pln">Lorem Ipsum Dolor</span><span class="tag">&lt;/h2&gt;</span><span class="pln">
      </span><span class="tag">&lt;p&gt;</span><span class="pln">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod
      tincidunt ut laoreet dolore magna aliquam erat volutpat.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
      </span><span class="tag">&lt;p&gt;</span><span class="pln">Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut
      aliquip ex ea commodo consequat.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span></pre>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_67" style=""><span class="pln">  </span><span class="pun">.</span><span class="pln">example </span><span class="pun">{</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">300px</span><span class="pun">;</span><span class="pln">
      border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">20px</span><span class="pln"> solid black</span><span class="pun">;</span><span class="pln">
      padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pun">;</span><span class="pln">
      background</span><span class="pun">:</span><span class="pln"> url</span><span class="pun">(</span><span class="pln">https</span><span class="pun">:</span><span class="com">//static.pexels.com/photos/6440/magazines-desk-work-workspace-medium.jpg);</span><span class="pln">
      background</span><span class="pun">-</span><span class="pln">repeat</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">no</span><span class="pun">-</span><span class="pln">repeat</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">example1 </span><span class="pun">{}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">example2 </span><span class="pun">{</span><span class="pln"> background</span><span class="pun">-</span><span class="pln">origin</span><span class="pun">:</span><span class="pln"> border</span><span class="pun">-</span><span class="pln">box</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">example3 </span><span class="pun">{</span><span class="pln"> background</span><span class="pun">-</span><span class="pln">origin</span><span class="pun">:</span><span class="pln"> content</span><span class="pun">-</span><span class="pln">box</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span></pre>

<h3>
	الخاصية background-repeat
</h3>

<p>
	تُحدد الخاصية <code>background-repeat</code> كيف ستتكرر صورة الخلفية؛ إذ يمكن أن تتكرر صورة الخلفية على المحور الأفقي، أو على المحور الرأسي، أو على كلا المحوري، ويمكن ألّا تتكرر أبدًا.
</p>

<p>
	<strong>مثال: تكرار الخلفية على المحور الرأسي</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_69" style=""><span class="pln">div </span><span class="pun">{</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="str">"image.jpg"</span><span class="pun">);</span><span class="pln">
    background</span><span class="pun">-</span><span class="pln">repeat</span><span class="pun">:</span><span class="pln"> repeat</span><span class="pun">-</span><span class="pln">y</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="52934" href="https://academy.hsoub.com/uploads/monthly_2020_11/37rSv.png.61955c0fb7de6af2a8c812e540494858.png" rel=""><img alt="37rSv.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52934" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/37rSv.png.61955c0fb7de6af2a8c812e540494858.png"></a>
</p>

<h3>
	الخاصية background-blend-mode
</h3>

<p>
	تُحدد الخاصية <code>background-blend-mode</code> كيف تمتزج صور الخلفية مع بعضها بعضًا ومع لون الخلفية المُحدَّد للعنصر.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_71" style=""><span class="pun">.</span><span class="kwd">my</span><span class="pun">-</span><span class="pln">div </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">300px</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">
    background</span><span class="pun">-</span><span class="pln">size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%;</span><span class="pln">
    background</span><span class="pun">-</span><span class="pln">repeat</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">no</span><span class="pun">-</span><span class="pln">repeat</span><span class="pun">;</span><span class="pln">
    background</span><span class="pun">-</span><span class="pln">image</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"> black </span><span class="lit">0</span><span class="pun">%,</span><span class="pln">white </span><span class="lit">100</span><span class="pun">%),</span><span class="pln">
    url</span><span class="pun">(</span><span class="str">'https://static.pexels.com/photos/54624/strawberry-fruit-red-sweet-54624-medium.jpeg'</span><span class="pun">);</span><span class="pln">
    background</span><span class="pun">-</span><span class="pln">blend</span><span class="pun">-</span><span class="pln">mode</span><span class="pun">:</span><span class="pln">saturation</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	اطّلع على تجربة حيَّة لهذا المثال على <a href="https://jsfiddle.net/MadalinaTn/y69d28Lb/" rel="external nofollow">JSFiddle</a>.
</p>

<p>
	لمزيد من المعلومات حول الخاصية background-blend-mode انظر <a href="https://wiki.hsoub.com/CSS/background-blend-mode" rel="external">موسوعة حسوب</a>.
</p>

<h2>
	إضافة تأثير الشفافية على خلفية العنصر
</h2>

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

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_73" style=""><span class="com">/* Fallback for web browsers that don't support RGBa */</span><span class="pln">
background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> rgb</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="com">/* RGBa with 0.6 opacity */</span><span class="pln">
background</span><span class="pun">-</span><span class="pln">color</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="com">/* For IE 5.5 - 7*/</span><span class="pln">
filter</span><span class="pun">:</span><span class="pln"> progid</span><span class="pun">:</span><span class="typ">DXImageTransform</span><span class="pun">.</span><span class="typ">Microsoft</span><span class="pun">.</span><span class="pln">gradient</span><span class="pun">(</span><span class="pln">startColorstr</span><span class="pun">=#</span><span class="lit">99000000</span><span class="pun">,</span><span class="pln"> endColorstr</span><span class="pun">=#</span><span class="lit">99000000</span><span class="pun">);</span><span class="pln">

</span><span class="com">/* For IE 8*/</span><span class="pln">
</span><span class="pun">-</span><span class="pln">ms</span><span class="pun">-</span><span class="pln">filter</span><span class="pun">:</span><span class="pln"> </span><span class="str">"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000,
endColorstr=#99000000)"</span></pre>

<h2>
	الخاصية المختزلة background
</h2>

<p>
	يُمكن استخدام الخاصية المُختزلة <code>background</code> لتحديد خاصية واحدة أو عدد من الخصائص المرتبطة بالخلفيات.
</p>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				الخاصية
			</th>
			<th style="text-align:right">
				الوصف
			</th>
			<th style="text-align:right">
				إصدار CSS
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				background-image
			</td>
			<td style="text-align:right">
				الصورة المُراد استخدامها كخلفية.
			</td>
			<td style="text-align:right">
				+1
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				background-color
			</td>
			<td style="text-align:right">
				اللون المُراد استخدامه كخلفية.
			</td>
			<td style="text-align:right">
				+1
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				background-position
			</td>
			<td style="text-align:right">
				موضع الخلفية.
			</td>
			<td style="text-align:right">
				+1
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				background-size
			</td>
			<td style="text-align:right">
				حجم صورة الخلفية.
			</td>
			<td style="text-align:right">
				+3
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				background-repeat
			</td>
			<td style="text-align:right">
				كيفية تكرار صورة الخلفية.
			</td>
			<td style="text-align:right">
				+1
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				background-origin
			</td>
			<td style="text-align:right">
				مركز الخلفية.
			</td>
			<td style="text-align:right">
				+3
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				background-clip
			</td>
			<td style="text-align:right">
				تحدد كيف ستعرض الخلفية نسبةً لصندوق المحتوى أو صندوق الإطارات أو صندوق الحواشي.
			</td>
			<td style="text-align:right">
				+3
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				background-attachment
			</td>
			<td style="text-align:right">
				تُحدد ما إذا كانت الخلفية ستتحرك مع العنصر الحاوي لها، أم أنها ثابتة.
			</td>
			<td style="text-align:right">
				+1
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				initial
			</td>
			<td style="text-align:right">
				تُرجع القيمة الإبتدائية للخاصية.
			</td>
			<td style="text-align:right">
				+3
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				inherit
			</td>
			<td style="text-align:right">
				ترث قيمة الخاصية من العنصر الأب
			</td>
			<td style="text-align:right">
				+2
			</td>
		</tr>
	</tbody>
</table>

<p>
	<strong>الصيغة العامة</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_75" style=""><span class="pln">background</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[&lt;</span><span class="pln">background</span><span class="pun">-</span><span class="pln">image</span><span class="pun">&gt;]</span><span class="pln"> </span><span class="pun">[&lt;</span><span class="pln">background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">&gt;]</span><span class="pln"> </span><span class="pun">[&lt;</span><span class="pln">background</span><span class="pun">-</span><span class="pln">position</span><span class="pun">&gt;]/[&lt;</span><span class="pln">background</span><span class="pun">-</span><span class="pln">size</span><span class="pun">&gt;]</span><span class="pln">
</span><span class="pun">[&lt;</span><span class="pln">background</span><span class="pun">-</span><span class="pln">repeat</span><span class="pun">&gt;]</span><span class="pln"> </span><span class="pun">[&lt;</span><span class="pln">background</span><span class="pun">-</span><span class="pln">origin</span><span class="pun">&gt;]</span><span class="pln"> </span><span class="pun">[&lt;</span><span class="pln">background</span><span class="pun">-</span><span class="pln">clip</span><span class="pun">&gt;]</span><span class="pln"> </span><span class="pun">[&lt;</span><span class="pln">background</span><span class="pun">-</span><span class="pln">attachment</span><span class="pun">&gt;]</span><span class="pln">
</span><span class="pun">[&lt;</span><span class="pln">initial</span><span class="pun">|</span><span class="pln">inherit</span><span class="pun">&gt;];</span></pre>

<p>
	<strong>ملاحظة</strong>: جميع الخواص اختيارية، والترتيب غير مهم.
</p>

<p>
	<strong>أمثلة</strong>
</p>

<p>
	إضافة خلفية بلون أحمر للعنصر
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_77" style=""><span class="pln">background</span><span class="pun">:</span><span class="pln"> red</span><span class="pun">;</span></pre>

<p>
	استعمال الخاصية <code>background-clip</code>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_79" style=""><span class="pln">background</span><span class="pun">:</span><span class="pln"> border</span><span class="pun">-</span><span class="pln">box red</span><span class="pun">;</span></pre>

<p>
	تحديد تكرار ومركز الخلفية
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_81" style=""><span class="pln">background</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">no</span><span class="pun">-</span><span class="pln">repeat center url</span><span class="pun">(</span><span class="str">'somepng.png'</span><span class="pun">);</span></pre>

<p>
	إضافة أكثر من خلفية للعنصر
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_83" style=""><span class="pln">background</span><span class="pun">:</span><span class="pln"> url</span><span class="pun">(</span><span class="str">'pattern.png'</span><span class="pun">)</span><span class="pln"> green</span><span class="pun">;</span></pre>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_618_85" style=""><span class="pln">background</span><span class="pun">:</span><span class="pln"> </span><span class="com">#000 url(picture.png) top left / 00px auto no-repeat;</span></pre>

<p>
	ترجمة -وبتصرف- للفصل Backgrounds من كتاب <a href="https://goalkicker.com/CSSBook/" rel="external nofollow">CSS Notes for Professionals</a>
</p>
]]></description><guid isPermaLink="false">1055</guid><pubDate>Sat, 21 Nov 2020 13:07:00 +0000</pubDate></item><item><title>&#x627;&#x644;&#x62A;&#x646;&#x633;&#x64A;&#x642;&#x627;&#x62A; &#x627;&#x644;&#x623;&#x633;&#x627;&#x633;&#x64A;&#x629; &#x644;&#x644;&#x639;&#x646;&#x627;&#x635;&#x631; &#x641;&#x64A; CSS</title><link>https://academy.hsoub.com/programming/css/%D8%A7%D9%84%D8%AA%D9%86%D8%B3%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%A3%D8%B3%D8%A7%D8%B3%D9%8A%D8%A9-%D9%84%D9%84%D8%B9%D9%86%D8%A7%D8%B5%D8%B1-%D9%81%D9%8A-css-r1054/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2020_11/5.png.59c043be57e4e946fa392bbc2236672f.png" /></p>
<h2>
	تنسيقات الخطوط
</h2>

<p>
	يمكن استعمال الخاصيات التالية في CSS لتنسيق الخطوط:
</p>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				الخاصية
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				font-style
			</td>
			<td style="text-align:right">
				نمط الخط، مائل (italics) أو منحرف (oblique).
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				font-variant
			</td>
			<td style="text-align:right">
				تأخذ إحدى القيمتين normal أو small-caps.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				font-weight
			</td>
			<td style="text-align:right">
				ثُخن الخط، وتأخذ القيم normal أو bold أو قيم رقمية بين 100 و 900.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				font-size
			</td>
			<td style="text-align:right">
				حجم الخط، ويمكن أن يكون نسبة مئوية أو بالوحدات (px أو em أو غيرها من وحدات CSS).
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				line-height
			</td>
			<td style="text-align:right">
				ارتفاع السطر، ويمكن أن يكون نسبة مئوية أو بالوحدات (px أو em أو غيرها من وحدات CSS).
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				font-family
			</td>
			<td style="text-align:right">
				نوع الخط.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				color
			</td>
			<td style="text-align:right">
				لون الخط.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				font-stretch
			</td>
			<td style="text-align:right">
				تختار نسخة ضيقة (condensed) أو عادية (normal) أو مُوَسَّعة (expanded) من الخط.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				text-align
			</td>
			<td style="text-align:right">
				محاذاة النص، وتأخذ القيم (start، ‏end،‏ left،‏ right،‏ center، ‏justify، ‏match-parent).
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				text-decoration
			</td>
			<td style="text-align:right">
				زخرفة الخط، وتأخذ القيم (none، ‏underline، ‏overline، ‏line-through، ‏initial، ‏inherit).
			</td>
		</tr>
	</tbody>
</table>
<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>
<h3>
	الصياغة المختزلة لخصائص الخطوط
</h3>

<p>
	يُمكن تعريف جميع خصائص الخط في سطر واحد باستخدام الصياغة المختزلة الموضحة في المثال التالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_8" style=""><span class="pln">element </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">font</span><span class="pun">-</span><span class="pln">style</span><span class="pun">]</span><span class="pln"> </span><span class="pun">[</span><span class="pln">font</span><span class="pun">-</span><span class="pln">variant</span><span class="pun">]</span><span class="pln"> </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"> </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">line</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">font</span><span class="pun">-</span><span class="pln">family</span><span class="pun">];</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_10" style=""><span class="pln">p </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">
    font</span><span class="pun">-</span><span class="pln">size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">20px</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="typ">Arial</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="pun">}</span></pre>

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

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_12" style=""><span class="pln">p </span><span class="pun">{</span><span class="pln">
    font</span><span class="pun">:</span><span class="pln"> bold </span><span class="lit">20px</span><span class="pln"> </span><span class="typ">Arial</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="pun">}</span></pre>

<p>
	<strong>ملاحظة</strong>: الخصائص <code>font-style</code>، و<code>font-variant</code>، و<code>font-weight</code>، و<code>line-height</code> خصائص اختيارية وعدم تحديدها في الصياغة المختزلة يعني استخدام القيم الإبتدائية لها، أما الخاصيتين <code>font-size</code> و<code>font-family</code> فهما خاصيتين ضروريتين وعدم تحديدهما يؤدي إلى تجاهل الشيفرة وعدم تطبيقها.
</p>

<p>
	<strong>القيم الإبتدائية لخصائص الخطوط</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_17" style=""><span class="pln">font</span><span class="pun">-</span><span class="pln">style</span><span class="pun">:</span><span class="pln"> normal</span><span class="pun">;</span><span class="pln">
font</span><span class="pun">-</span><span class="pln">variant</span><span class="pun">:</span><span class="pln"> normal</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"> normal</span><span class="pun">;</span><span class="pln">
font</span><span class="pun">-</span><span class="pln">stretch</span><span class="pun">:</span><span class="pln"> normal</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"> medium</span><span class="pun">;</span><span class="pln">
line</span><span class="pun">-</span><span class="pln">height</span><span class="pun">:</span><span class="pln"> normal</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="com">/* يعتمد على نوع الجهاز المستخدم لعرض الصفحة */</span></pre>

<h3>
	الإقتباسات
</h3>

<p>
	تستخدم الخاصية <code>quotes</code> لتحديد شكل علامات التنصيص للعنصر <code>&lt;q&gt;</code>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_19" style=""><span class="pln">q </span><span class="pun">{</span><span class="pln">
    quotes</span><span class="pun">:</span><span class="pln"> </span><span class="str">"&lt;"</span><span class="pln"> </span><span class="str">"&gt;"</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<h3>
	حجم الخط
</h3>

<p>
	تستخدم الخاصية <code>font-size</code> لتحديد حجم الخط ويوضح المثال التالي كيفية استخدامها
</p>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8763_21" style=""><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">"element-one"</span><span class="tag">&gt;</span><span class="pln">Hello I am some text.</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">"element-two"</span><span class="tag">&gt;</span><span class="pln">Hello I am some smaller text.</span><span class="tag">&lt;/div&gt;</span></pre>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_23" style=""><span class="pln">  </span><span class="com">#element-one {</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">30px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="com">#element-two {</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">10px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	بتطبيق الشيفرة أعلاه يصبح حجم الخط داخل العنصر <code>element-one#</code> هو 30 بكسل، و 10 بكسلات داخل العنصر <code>element-two#</code>.
</p>

<h3>
	مُكَدِّسات الخط
</h3>

<p>
	يمكن تحديد عدد من أنواع الخطوط عبر الخاصية <code>font-family</code>، ويُعطي المتصفح الأولوية للخط الأول في التعريف وفي حال عدم توفره ينتقل للخط الثاني وهكذا.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_25" style=""><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">'Segoe UI'</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">
font</span><span class="pun">-</span><span class="pln">family</span><span class="pun">:</span><span class="pln"> </span><span class="typ">Consolas</span><span class="pun">,</span><span class="pln"> </span><span class="str">'Courier New'</span><span class="pun">,</span><span class="pln"> monospace</span><span class="pun">;</span></pre>

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

<h3>
	الخاصية font-variant
</h3>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				القيمة
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				normal
			</td>
			<td style="text-align:right">
				تستعمل الخصائص العادية للخط.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				small-caps
			</td>
			<td style="text-align:right">
				تُحول الحروف الصغيرة لحروف كبيرة ولكن بنفس حجم الخطوط الصغيرة مع تصغير الحروف الصغيرة قليلاً.
			</td>
		</tr>
	</tbody>
</table>

<p>
	<strong>مثال</strong>
</p>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8763_27" style=""><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">"smallcaps"</span><span class="tag">&gt;</span><span class="pln">
      Documentation about CSS Fonts
      </span><span class="tag">&lt;br&gt;</span><span class="pln">
      aNd ExAmpLe
  </span><span class="tag">&lt;/p&gt;</span></pre>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_29" style=""><span class="pln">  </span><span class="pun">.</span><span class="pln">smallcaps </span><span class="pun">{</span><span class="pln">
      font</span><span class="pun">-</span><span class="pln">variant</span><span class="pun">:</span><span class="pln"> small</span><span class="pun">-</span><span class="pln">caps</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img alt="HVJq6.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52931" data-unique="8mb8b7z6y" src="https://academy.hsoub.com/uploads/monthly_2020_11/HVJq6.png.87ed9f0088cc286985761e1e60504af8.png">
</p>

<p>
	<strong>ملاحظة</strong>: الخاصية <code>font-variant</code> خاصية مُختزلة، وتضم الخصائص التالية:
</p>

<ul>
	<li>
		<code>font-variant-caps</code>
	</li>
	<li>
		<code>font-variant-numeric</code>
	</li>
	<li>
		<code>font-variant-alternates</code>
	</li>
	<li>
		<code>font-variant-ligatures</code>
	</li>
	<li>
		<code>font-variant-east-asian</code>
	</li>
</ul>

<h2>
	اتجاه الكتابة
</h2>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_32" style=""><span class="pln">div </span><span class="pun">{</span><span class="pln">
    </span><span class="com">/* اتجاه الكتابة من اليسار لليمين  */</span><span class="pln">
    direction</span><span class="pun">:</span><span class="pln"> ltr</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">ex </span><span class="pun">{</span><span class="pln">
    </span><span class="com">/* اتجاه الكتابة من اليمين لليسار */</span><span class="pln">
    direction</span><span class="pun">:</span><span class="pln"> rtl</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">horizontal</span><span class="pun">-</span><span class="pln">tb </span><span class="pun">{</span><span class="pln">
    </span><span class="com">/* اتجاه الكتابة أفقي من اليمين إلى اليسار */</span><span class="pln">
    writing</span><span class="pun">-</span><span class="pln">mode</span><span class="pun">:</span><span class="pln"> horizontal</span><span class="pun">-</span><span class="pln">tb</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">vertical</span><span class="pun">-</span><span class="pln">rtl </span><span class="pun">{</span><span class="pln">
    </span><span class="com">/* اتجاه الكتابة رأسيًا من أعلى لأسفل وأفقيًا من اليمين إلى اليسار */</span><span class="pln">
    writing</span><span class="pun">-</span><span class="pln">mode</span><span class="pun">:</span><span class="pln"> vertical</span><span class="pun">-</span><span class="pln">rl</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">vertical</span><span class="pun">-</span><span class="pln">ltr </span><span class="pun">{</span><span class="pln">
    </span><span class="com">/* اتجاه الكتابة رأسيًا من أعلى لأسفل وأفقيًا من اليسار إلى اليمين */</span><span class="pln">
    writing</span><span class="pun">-</span><span class="pln">mode</span><span class="pun">:</span><span class="pln"> vertical</span><span class="pun">-</span><span class="pln">lr</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	تستخدم الخاصية <code>direction</code> لتحديد الإتجاه الأفقي للكتابة (من اليمين إلى اليسار أو العكس)، ولها أربع قيم هي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_34" style=""><span class="pln">direction</span><span class="pun">:</span><span class="pln"> ltr </span><span class="pun">|</span><span class="pln"> rtl </span><span class="pun">|</span><span class="pln"> initial </span><span class="pun">|</span><span class="pln"> inherit</span><span class="pun">;</span></pre>

<p>
	تستخدم الخاصية <code>writing-mode</code> لتغيير محاذاة النص، فإما أن يُكتب من أعلى لأسفل أو من اليسار إلى اليمين.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_36" style=""><span class="pln">writing</span><span class="pun">-</span><span class="pln">mode</span><span class="pun">:</span><span class="pln"> horizontal</span><span class="pun">-</span><span class="pln">tb </span><span class="pun">|</span><span class="pln"> vertical</span><span class="pun">-</span><span class="pln">rl </span><span class="pun">|</span><span class="pln"> vertical</span><span class="pun">-</span><span class="pln">lr</span><span class="pun">;</span></pre>

<h2>
	خاصيات تنسيق النصوص والأحرف
</h2>

<h3>
	طفحان النص
</h3>

<p>
	تُحدِّد الخاصية <code>text-overflow</code> ماذا سيحدث عند زيادة النص عن مساحة صندوقه، فيمكن أن يُقص المحتوى، أو أن تُعرض ثلاث نقاط (المحرف …)، أو أن تُعرض سلسلة نصية خاصة.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_38" style=""><span class="pun">.</span><span class="pln">text </span><span class="pun">{</span><span class="pln">
    overflow</span><span class="pun">:</span><span class="pln"> hidden</span><span class="pun">;</span><span class="pln">
    text</span><span class="pun">-</span><span class="pln">overflow</span><span class="pun">:</span><span class="pln"> ellipsis</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	تستخدم القيمة <code>ellipsis</code> لتمثيل النص المقصوص بثلاث نقاط تُعرض داخل صندوق المحتوى مما يؤدي إلى تقليل كمية النص المعروض إذا لم تكن هناك مساحة كافية لعرض النقاط.
</p>

<h3>
	إضافة تأثير الظلال على النص
</h3>

<p>
	تستخدم الخاصية <code>text-shadow</code> لإضافة تأثير الظلال على النص، وتقبل تحديد أكثر من ظل (يُفصَل بين قيمها بفاصلة)، ويُطبَّق الظل على النص وعلى خطوط الزخرفة <code>text-decoration</code> التابعة للعنصر، وتوضح الشيفرة التالية الصيغة العامة لاستخدامها:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_40" style=""><span class="pln">text</span><span class="pun">-</span><span class="pln">shadow</span><span class="pun">:</span><span class="pln"> horizontal</span><span class="pun">-</span><span class="pln">offset vertical</span><span class="pun">-</span><span class="pln">offset blur color</span><span class="pun">;</span></pre>

<p>
	<strong>مثال: إضافة ظِل بلون معين</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_42" style=""><span class="pln">h1 </span><span class="pun">{</span><span class="pln">
    text</span><span class="pun">-</span><span class="pln">shadow</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2px</span><span class="pln"> </span><span class="lit">2px</span><span class="pln"> </span><span class="com">#0000FF;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	<strong>مثال: إضافة ظل مع تأثير ضبابي</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_44" style=""><span class="pln">h1 </span><span class="pun">{</span><span class="pln">
    text</span><span class="pun">-</span><span class="pln">shadow</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2px</span><span class="pln"> </span><span class="lit">2px</span><span class="pln"> </span><span class="lit">10px</span><span class="pln"> </span><span class="com">#0000FF;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	<strong>مثال: إضافة ظلال متعددة</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_46" style=""><span class="pln">h1 </span><span class="pun">{</span><span class="pln">
    text</span><span class="pun">-</span><span class="pln">shadow</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">3px</span><span class="pln"> </span><span class="com">#FF0000, 0 0 5px #0000FF;</span><span class="pln">
</span><span class="pun">}</span></pre>

<h2>
	حالة الأحرف
</h2>

<p>
	تستخدم الخاصية <code>text-transform</code> لتحديد حالة الأحرف التي سيُعرَض فيها العنصر؛ فإما أن تُعرض كل الأحرف بالحالة الكبيرة (uppercase)، أو بالحالة الصغيرة (lowercase)، أو أن يُعرض أول حرف من كل كلمة كبيرًا.
</p>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3346_7" style=""><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">"example1"</span><span class="tag">&gt;</span><span class="pln">
      all letters in uppercase
  </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">"example2"</span><span class="tag">&gt;</span><span class="pln">
      all letters in Capitalize
  </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">"example3"</span><span class="tag">&gt;</span><span class="pln">
      all letters in lowercase
  </span><span class="tag">&lt;/p&gt;</span></pre>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_50" style=""><span class="pln">  </span><span class="pun">.</span><span class="pln">example1 </span><span class="pun">{</span><span class="pln">
      text</span><span class="pun">-</span><span class="pln">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">example2 </span><span class="pun">{</span><span class="pln">
      text</span><span class="pun">-</span><span class="pln">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">example3 </span><span class="pun">{</span><span class="pln">
      text</span><span class="pun">-</span><span class="pln">transform</span><span class="pun">:</span><span class="pln"> lowercase</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<h3>
	التباعد بين الأحرف
</h3>

<p>
	تحدد الخاصية <code>letter-spacing</code> التباعد بين الأحرف النصية.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_52" style=""><span class="pln">h2 </span><span class="pun">{</span><span class="pln">
    </span><span class="com">/* تزيد المسافة بين الأحرف بمقدار 1 بكسل */</span><span class="pln">
    letter</span><span class="pun">-</span><span class="pln">spacing</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

p </span><span class="pun">{</span><span class="pln">
    </span><span class="com">/* القيمة السالبة تعني تقليل المسافة بين الأحرف  */</span><span class="pln">
    letter</span><span class="pun">-</span><span class="pln">spacing</span><span class="pun">:</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	<strong>مصادر إضافية</strong>
</p>

<ol>
	<li>
		<a href="https://wiki.hsoub.com/CSS/letter-spacing" rel="external">موسوعة حسوب</a>.
	</li>
	<li>
		<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/letter-spacing" rel="external nofollow">التوثيق الرسمي</a>.
	</li>
</ol>

<h3>
	المسافة البادئة النص
</h3>

<p>
	تُحَدَِد الخاصية <code>text-indent</code> مقدار المسافة التي توضع قبل أول سطر في النص داخل عناصر الكتلة.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_54" style=""><span class="pln">p </span><span class="pun">{</span><span class="pln">
    text</span><span class="pun">-</span><span class="pln">indent</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>
	<strong>مصادر إضافية</strong>
</p>

<ol>
	<li>
		<a href="https://stackoverflow.com/questions/5856952/indenting-only-the-first-line-of-text-in-a-paragraph" rel="external nofollow">تحديد المسافة البادئة لأول سطر من الفقرة فقط</a>.
	</li>
	<li>
		<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/text-indent" rel="external nofollow">التوثيق الرسمي</a>.
	</li>
	<li>
		<a href="https://wiki.hsoub.com/CSS/text-indent#.D8.AF.D8.B9.D9.85_.D8.A7.D9.84.D9.85.D8.AA.D8.B5.D9.81.D8.AD.D8.A7.D8.AA" rel="external">موسوعة حسوب</a>.
	</li>
</ol>

<h3>
	زخرفة النص
</h3>

<p>
	تحدد الخاصية <code>text-decoration</code> شكل خطوط الزخرفة (decorative lines) المستخدمة على النص؛ وهي خاصيةٌ مختصرة تضبط كل من الخصائص <code>text-decoration-line</code> و <code>text-decoration-color</code> و <code>text-decoration-style</code>.
</p>

<p>
	<strong>أمثلة</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_56" style=""><span class="pln">h1 </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"> </span><span class="pun">}</span><span class="pln"> </span><span class="com">/* لا توجد زخرفة */</span><span class="pln">
h2 </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"> overline</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="com">/* إضافة خط فوق النص */</span><span class="pln">
h3 </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"> line</span><span class="pun">-</span><span class="pln">through</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="com">/* إضافة خط يمر عبر النص */</span><span class="pln">
h4 </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"> underline</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="com">/* إضافة خط تحت النص */</span></pre>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_58" style=""><span class="com">/* الشيفرتان أدناه متكافئتان */</span><span class="pln">
</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">decoration</span><span class="pun">:</span><span class="pln"> underline dotted blue</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</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">decoration</span><span class="pun">-</span><span class="pln">style</span><span class="pun">:</span><span class="pln"> dotted</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">line</span><span class="pun">:</span><span class="pln"> underline</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">color</span><span class="pun">:</span><span class="pln"> blue</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	<strong>ملاحظة</strong> الخصائص <code>text-decoration-line</code> و <code>text-decoration-color</code> و <code>text-decoration-style</code> مدعومة فقط في متصفح Firefox، ولكن يُمكن استخدام الصياغة المختزلة في بقية المتصفحات.
</p>

<h3>
	التباعد بين الكلمات
</h3>

<p>
	تحدد الخاصية <code>word-spacing</code> التباعد بين الكلمات والوسوم.
</p>

<p>
	<strong>القيم المُتاحة</strong>
</p>

<ul>
	<li>
		رقم صحيح موجب أو سالب يحدد المسافة بإحدى الوحدات (px أو em أو غيرها من وحدات CSS).
	</li>
	<li>
		نسبة مئوية.
	</li>
	<li>
		الكلمة المحجوزة <code>normal</code>.
	</li>
	<li>
		الكلمة المحجوزة <code>inherit</code>.
	</li>
</ul>

<p>
	<strong>مثال</strong>
</p>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8763_60" style=""><span class="pln">  </span><span class="tag">&lt;p&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">"normal"</span><span class="tag">&gt;</span><span class="pln">This is an example, showing the effect of "word-spacing".</span><span class="tag">&lt;/span&gt;&lt;br&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">"narrow"</span><span class="tag">&gt;</span><span class="pln">This is an example, showing the effect of "word-spacing".</span><span class="tag">&lt;/span&gt;&lt;br&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">"extensive"</span><span class="tag">&gt;</span><span class="pln">This is an example, showing the effect of "word-spacing".</span><span class="tag">&lt;/span&gt;&lt;br&gt;</span><span class="pln">
  </span><span class="tag">&lt;/p&gt;</span></pre>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_62" style=""><span class="pln">  </span><span class="pun">.</span><span class="pln">normal </span><span class="pun">{</span><span class="pln"> word</span><span class="pun">-</span><span class="pln">spacing</span><span class="pun">:</span><span class="pln"> normal</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">narrow </span><span class="pun">{</span><span class="pln"> word</span><span class="pun">-</span><span class="pln">spacing</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">extensive </span><span class="pun">{</span><span class="pln"> word</span><span class="pun">-</span><span class="pln">spacing</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10px</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span></pre>

<p>
	اطلع على تجربة حية للمثال أعلاه على <a href="https://jsfiddle.net/91742Lxt/" rel="external nofollow">JSFiddle</a>.
</p>

<p>
	<strong>مصادر إضافية</strong>
</p>

<ol>
	<li>
		<a href="https://wiki.hsoub.com/CSS/word-spacing" rel="external">موسوعة حسوب</a>.
	</li>
	<li>
		<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/word-spacing" rel="external nofollow">توثيق MDN</a>.
	</li>
</ol>

<h3>
	تقسيم النص إلى أعمدة
</h3>

<p>
	يُمكن استخدام الخاصية column-count لفصل النص لعدد من الأعمدة.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8763_64" style=""><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"multi-columns"</span><span class="tag">&gt;</span><span class="pln">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est
laborum</span><span class="tag">&lt;/div&gt;</span><span class="pln">

</span><span class="tag">&lt;style&gt;</span><span class="pln">
</span><span class="pun">.</span><span class="pln">multi</span><span class="pun">-</span><span class="pln">columns </span><span class="pun">{</span><span class="pln">
    </span><span class="pun">-</span><span class="pln">moz</span><span class="pun">-</span><span class="pln">column</span><span class="pun">-</span><span class="pln">count</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">column</span><span class="pun">-</span><span class="pln">count</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2</span><span class="pun">;</span><span class="pln">
    column</span><span class="pun">-</span><span class="pln">count</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="52920" href="https://academy.hsoub.com/uploads/monthly_2020_11/bZHuU.png.584645044b2c05d3f91fffb48313e5ad.png" rel=""><img alt="bZHuU.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52920" data-unique="n99wp6paa" src="https://academy.hsoub.com/uploads/monthly_2020_11/bZHuU.thumb.png.9bc4bfab0ea5e365da3edf8ae26f2e62.png"></a>
</p>

<p>
	تُحدد الخاصية <code>column-width</code> أقل عرض ممكن للعمود.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8763_66" style=""><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"multi-columns"</span><span class="tag">&gt;</span><span class="pln">
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut
labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt
in culpa qui officia deserunt mollit anim id est laborumGoalKicker.com – CSS Notes for Professionals 194
</span><span class="tag">&lt;/div&gt;</span><span class="pln">

</span><span class="tag">&lt;style&gt;</span><span class="pln">
</span><span class="pun">.</span><span class="pln">multi</span><span class="pun">-</span><span class="pln">columns </span><span class="pun">{</span><span class="pln">
    </span><span class="pun">-</span><span class="pln">moz</span><span class="pun">-</span><span class="pln">column</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">column</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
    column</span><span class="pun">-</span><span class="pln">width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img alt="zYzAz.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52930" data-unique="9cotgq61v" src="https://academy.hsoub.com/uploads/monthly_2020_11/zYzAz.png.02717975003c00858a25f6558f948cd4.png">
</p>

<p>
	<strong>ملاحظة</strong>: إذا لم تُعرَّف الخاصية <code>column-count</code> سينشئ المتصفح اكبر عدد ممكن من الأعمدة.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8763_68" style=""><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"content"</span><span class="tag">&gt;</span><span class="pln">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh
euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim
ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl
ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in
hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu
feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui
blandit praesent luptatum zzril delenit augue duis dolore te feugiat nulla
facilisi. Nam liber tempor cum soluta nobis eleifend option congue nihil
imperdiet doming id quod mazim placerat facer possim assum.
</span><span class="tag">&lt;/div&gt;</span><span class="pln">


</span><span class="tag">&lt;style&gt;</span><span class="pln">
content </span><span class="pun">{</span><span class="pln">
    </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">column</span><span class="pun">-</span><span class="pln">count</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* Chrome, Safari, Opera */</span><span class="pln">
    </span><span class="pun">-</span><span class="pln">moz</span><span class="pun">-</span><span class="pln">column</span><span class="pun">-</span><span class="pln">count</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* Firefox */</span><span class="pln">
    column</span><span class="pun">-</span><span class="pln">count</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span></pre>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8763_70" style=""><span class="tag">&lt;section&gt;</span><span class="pln">
</span><span class="tag">&lt;p&gt;</span><span class="pln">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor
invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et
justo duo dolores et ea rebum.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
</span><span class="tag">&lt;p&gt;</span><span class="pln"> Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem
ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore
et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea
rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</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, consetetur sadipscing elitr, sed diam nonumy eirmod tempor
invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et
justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum
dolor sit amet.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
</span><span class="tag">&lt;/section&gt;</span><span class="pln">

</span><span class="tag">&lt;style&gt;</span><span class="pln">
section </span><span class="pun">{</span><span class="pln">
    columns</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3</span><span class="pun">;</span><span class="pln">
    column</span><span class="pun">-</span><span class="pln">gap</span><span class="pun">:</span><span class="pln"> </span><span class="lit">40px</span><span class="pun">;</span><span class="pln">
    column</span><span class="pun">-</span><span class="pln">rule</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2px</span><span class="pln"> solid gray</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span></pre>

<p>
	اطَّلع على تجربة حيَّة لهذا المثال على <a href="https://jsfiddle.net/vjL9ewmb/" rel="external nofollow">JSFiddle</a>.
</p>

<h3>
	مؤشر إدخال النص
</h3>

<p>
	تحدد الخاصية <code>caret-color</code> لون مؤشر الإدخال النصي (وهو العلامة التي تظهر للإشارة إلى موضع الحرف النصي الذي سيدخله المستخدم). الشكل الافتراضي لمؤشر الإدخال هو خطٌ رأسيٌ يومض لتسهيل ملاحظته، ويكون لونه الافتراضي هو الأسود، لكن يمكن تعديله باستخدام هذه الخاصية.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8763_72" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    </span><span class="com">#example {</span><span class="pln">
        caret</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> red</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&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">"example"</span><span class="pln"> </span><span class="tag">/&gt;</span></pre>

<p>
	<strong>مصادر إضافية</strong>
</p>

<ul>
	<li>
		<a href="https://wiki.hsoub.com/CSS/caret-color" rel="external">موسوعة حسوب</a>.
	</li>
	<li>
		<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/caret-color" rel="external nofollow">توثيق MDN</a>.
	</li>
</ul>

<h2>
	تنسيق ألوان النصوص
</h2>

<p>
	تستخدم خاصية <code>color</code> لضبط القيمة اللونية الأمامية (foreground) للمحتوى النصي للعنصر والزخرفة النصية (text-decoration)، وتضبط أيضًا قيمة الكلمة المحجوزة <code>currentColor</code>، والتي يمكن أن تستخدم كقيمة غير مباشرة في الخاصيات الأخرى التي لا تأخذ لونها من الخاصية <code>color</code> مباشرةً (مثل الخاصية <code>border-color</code>).
</p>

<h3>
	استخدام currentColor
</h3>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_74" style=""><span class="pln">div </span><span class="pun">{</span><span class="pln">
    color</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"> </span><span class="lit">5px</span><span class="pln"> solid currentColor</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"> </span><span class="lit">0</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="lit">5px</span><span class="pln"> currentColor</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	في المثال أعلاه، استُخدمت الكلمة المحجوزة currentColor لإعطاء الإطار نفس اللون المحسوب (computed color) للعنصر (اللون الأحمر).
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_76" style=""><span class="pln">div </span><span class="pun">{</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> blue</span><span class="pun">;</span><span class="pln">
    border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3px</span><span class="pln"> solid currentColor</span><span class="pun">;</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> green</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	بما أن <code>currentColor</code> تأخذ القيمة المحسوبة (computed value) للخاصية، فإنَّها في هذا المثال ستأخذ القيمة <code>green</code>، ويكون لون الإطار الناتج أخضر.
</p>

<p>
	<strong>وراثة اللون من العنصر الأب</strong>
</p>

<p>
	في المثال أدناه تَرِث الخاصية <code>currentColor</code> اللون الأزرق من العنصر الأب.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_78" style=""><span class="pun">.</span><span class="pln">parent</span><span class="pun">-</span><span class="kwd">class</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> blue</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">parent</span><span class="pun">-</span><span class="kwd">class</span><span class="pln"> </span><span class="pun">.</span><span class="pln">child</span><span class="pun">-</span><span class="kwd">class</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    border</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> currentColor</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	يُمكن استخدام <code>currentColor</code> لتوريث اللون للخواص التي لا ترثه عادةً مثل الخاصية <code>background-color</code>، يوضح المثال التالي كيفية ذلك:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_80" style=""><span class="pun">.</span><span class="pln">parent</span><span class="pun">-</span><span class="kwd">class</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> blue</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">parent</span><span class="pun">-</span><span class="kwd">class</span><span class="pln"> </span><span class="pun">.</span><span class="pln">child</span><span class="pun">-</span><span class="kwd">class</span><span class="pln"> </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"> currentColor</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img alt="rkkXo.gif" class="ipsImage ipsImage_thumbnailed" data-fileid="52927" data-unique="mr5ujy9p7" src="https://academy.hsoub.com/uploads/monthly_2020_11/rkkXo.gif.8833d59fe0452b7d72a5a6a2c5c5b841.gif">
</p>

<h3>
	الكلمات المحجوزة للألوان
</h3>

<p>
	تستخدم العديد من المتصفحات كلمات محجوزة لتعريف الألوان
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_82" style=""><span class="pun">.</span><span class="pln">some</span><span class="pun">-</span><span class="kwd">class</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> blue</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	<strong>ملاحظة</strong>: الكلمات المحجوزة في CSS غير حساسة لحالة الأحرف، فالقيم blue، وBlue، وBLUE كلها تشير للون الست عشري <code>0000FF#</code>.
</p>

<p>
	إن أردت الاطلاع على قائمة كل الكلمات المحجوزة للألوان، فارجع إلى قسم <a href="https://wiki.hsoub.com/CSS/color_value#.D8.A7.D9.84.D9.83.D9.84.D9.85.D8.A7.D8.AA_.D8.A7.D9.84.D9.85.D8.AD.D8.AC.D9.88.D8.B2.D8.A9" rel="external">الكلمات المحجوزة للألوان</a> من توثيق اللون في CSS في موسوعة حسوب.
</p>

<h4>
	<span style="font-size: 18px; background-color: rgb( var(--theme-area_background_reset) ); color: rgb( var(--theme-text_color) );">القيم الست عشرية للألوان</span>
</h4>

<p>
	يُمكن تمثيل الألوان في CSS عن طريق ثلاث أزواج من القيم الست عشرية، تُمثل قيم الألوان الأحمر، والأخضر، والأزرق المكونة للون، ويأخذ كل زوج قيمة تتراوح بين 00 إلى FF (أو بين 0 و 255 في النظام العشري).
</p>

<p>
	عدد الألوان التي يُمكن تمثيلها باستخدام النظام الست عشري هو 256‎^3 أي 16,777,216 لون.
</p>

<p>
	<strong>الصياغة</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_84" style=""><span class="pln">color</span><span class="pun">:</span><span class="pln"> </span><span class="com">#rrggbb;</span><span class="pln">
color</span><span class="pun">:</span><span class="pln"> </span><span class="com">#rgb</span></pre>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				القيمة
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				rr
			</td>
			<td style="text-align:right">
				قيمة بين 00 و FF، تحدد كمية اللون الأحمر.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				gg
			</td>
			<td style="text-align:right">
				قيمة بين 00 و FF، تحدد كمية اللون الأخضر.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				bb
			</td>
			<td style="text-align:right">
				قيمة بين 00 و FF، تحدد كمية اللون الأزرق.
			</td>
		</tr>
	</tbody>
</table>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_86" style=""><span class="pun">.</span><span class="pln">some</span><span class="pun">-</span><span class="kwd">class</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> </span><span class="com">#0000FF;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">also</span><span class="pun">-</span><span class="pln">blue </span><span class="pun">{</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> </span><span class="com">#00F;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	<strong>ملاحظة</strong>: القيم الست عشرية للألوان غير حساسة لحالة الأحرف، فالقيمتان <code>0000FF</code> و <code>0000ff#</code> تشيران لنفس اللون.
</p>

<p>
	<strong>مصادر إضافية</strong>
</p>

<ol>
	<li>
		<a href="https://en.wikipedia.org/wiki/Hexadecimal" rel="external nofollow">النظام الست عشري</a>.
	</li>
	<li>
		<a href="https://www.w3.org/TR/css-color-3/#numerical" rel="external nofollow">القيم الرقمية للألوان</a>.
	</li>
</ol>

<h3>
	الدالة rgb‪()
</h3>

<p>
	ترميز rgb هو المكافئ العشري للترميز الست عشري للألوان، ويُعَبِّر عن الألوان الأحمر والأخضر والأزرق بقيم رقمية بين 0 و 255 (تمثل المكافئات العشرية للقيم 00 و FF على التوالي)، أو بنسب مئوية بين 0% و 100%.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_88" style=""><span class="pun">.</span><span class="pln">some</span><span class="pun">-</span><span class="kwd">class</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> rgb</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">255</span><span class="pun">);</span><span class="pln"> </span><span class="com">/* blue color */</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">also</span><span class="pun">-</span><span class="pln">blue </span><span class="pun">{</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> rgb</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">100</span><span class="pun">%);</span><span class="pln"> </span><span class="com">/* blue color */</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	<strong>الصيغة العامة</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_90" style=""><span class="pln">rgb</span><span class="pun">(&lt;</span><span class="pln">red</span><span class="pun">&gt;,</span><span class="pln"> </span><span class="str">&lt;green&gt;</span><span class="pun">,</span><span class="pln"> </span><span class="str">&lt;blue&gt;</span><span class="pun">);</span></pre>

<h3>
	الدالة rgba‪()
</h3>

<p>
	ترميز rgba هو نفس ترميز rgb مع إضافة قيمة أخيرة تُمثل نسبة تعتيم اللون (opacity)، وتأخذ قيم بين صفر (شفاف بالكامل) وواحد (معتم بالكامل).
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_92" style=""><span class="pun">.</span><span class="pln">red </span><span class="pun">{</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> rgba</span><span class="pun">(</span><span class="lit">255</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">1</span><span class="pun">);</span><span class="pln"> </span><span class="com">/* أحمر معتم بالكامل */</span><span class="pln">  
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">red</span><span class="pun">-</span><span class="lit">50p</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> rgba</span><span class="pun">(</span><span class="lit">255</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.5</span><span class="pun">);</span><span class="pln"> </span><span class="com">/* أحمر شفاف بنسبة 50% */</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	<strong>الصيغة العامة</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_94" style=""><span class="pln">rgba</span><span class="pun">(&lt;</span><span class="pln">red</span><span class="pun">&gt;,</span><span class="pln"> </span><span class="str">&lt;green&gt;</span><span class="pun">,</span><span class="pln"> </span><span class="str">&lt;blue&gt;</span><span class="pun">,</span><span class="pln"> </span><span class="str">&lt;opacity&gt;</span><span class="pun">);</span></pre>

<h3>
	الدالة ()hsl
</h3>

<p>
	ترمز hsl للكلمات صبغة (hue) وتستعمل لتحديد اللون، إشباع (saturation) وتستعمل لتحديد تركيز اللون، إضاءة (lightness) وتستعمل لتحديد كمية اللون الأبيض في اللون، تحدد قيمة الصبغة بزاوية بين صفر و 360 درجة، بينما تحدد قيم الإشباع والإضاءة بنسب مئوية.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_96" style=""><span class="pln">p </span><span class="pun">{</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> hsl</span><span class="pun">(</span><span class="lit">240</span><span class="pun">,</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%,</span><span class="pln"> </span><span class="lit">50</span><span class="pun">%);</span><span class="pln"> </span><span class="com">/* Blue */</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	الصورة أدناه توضح الاسطوانة اللونية المستخدمة في ترميز ()rgb
</p>

<p style="text-align: center;">
	<img alt="hsl.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="52925" data-unique="ypzrqcwnf" src="https://academy.hsoub.com/uploads/monthly_2020_11/hsl.PNG.8eaa18712b252ea0d167fb59327198ac.PNG"><strong>الصيغة العامة</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_98" style=""><span class="pln">color</span><span class="pun">:</span><span class="pln"> hsl</span><span class="pun">(&lt;</span><span class="pln">hue</span><span class="pun">&gt;,</span><span class="pln"> </span><span class="str">&lt;saturation&gt;</span><span class="pun">%,</span><span class="pln"> </span><span class="str">&lt;lightness&gt;</span><span class="pun">%);</span></pre>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				القيمة
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				<hue>  &lt;hue&gt; </hue>
			</td>
			<td style="text-align:right">
				تُحدد زاوية بين صفر و360 درجة، حيث تمثل الزاوية 0 اللون الأحمر، و60 للون الأصفر، و120 للون الأخضر، و180 للون الأزرق السماوي، و240 للأزرق، و300 للبنفسجي، و360 للأحمر أيضًا.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<saturation></saturation>&lt;saturation&gt;
			</td>
			<td style="text-align:right">
				تُحدد درجة تشَبُّع اللون بنسبة مئوية، حيث 0% تعني أن اللون غير مشبع (تدرج رمادي)، و 100% تعني أن اللون مشبع بالكامل (لون واضح).
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<lightness>&lt;lightness&gt;</lightness>
			</td>
			<td style="text-align:right">
				تُحدد إضاءة اللون بنسبة مئوية، حيث تشير 0% للون الأسود (مظلم بالكامل)، وتشير 100% للون الأبيض.
			</td>
		</tr>
	</tbody>
</table>

<h3>
	الدالة ()hsla
</h3>

<p>
	ترميز hsla هو نفس ترميز hsl مع إضافة قيمة أخيرة تُمثل نسبة تعتيم اللون (opacity)، وتأخذ قيم بين صفر (شفاف بالكامل) وواحد (معتم بالكامل).
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_100" style=""><span class="pln">hsla</span><span class="pun">(</span><span class="lit">240</span><span class="pun">,</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%,</span><span class="pln"> </span><span class="lit">50</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">/* شفاف بالكامل */</span><span class="pln">
hsla</span><span class="pun">(</span><span class="lit">240</span><span class="pun">,</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%,</span><span class="pln"> </span><span class="lit">50</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="com">/* شفاف بنسبة 50% */</span><span class="pln">
hsla</span><span class="pun">(</span><span class="lit">240</span><span class="pun">,</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%,</span><span class="pln"> </span><span class="lit">50</span><span class="pun">%,</span><span class="pln"> </span><span class="lit">1</span><span class="pun">)</span><span class="pln"> </span><span class="com">/* معتم بالكامل */</span></pre>

<p>
	<strong>الصيغة العامة</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_102" style=""><span class="pln">hsla</span><span class="pun">(&lt;</span><span class="pln">hue</span><span class="pun">&gt;,</span><span class="pln"> </span><span class="str">&lt;saturation&gt;</span><span class="pun">,</span><span class="pln"> </span><span class="str">&lt;lightness&gt;</span><span class="pun">,</span><span class="pln"> </span><span class="str">&lt;opacity&gt;</span><span class="pun">);</span></pre>

<h3>
	التعتيم
</h3>

<p>
	تستخدم الخاصية <code>opacity</code> لتحديد درجة تعتيم العنصر وتأخد قيم رقمية بين صفر (شفاف بالكامل أو غير مرئي) وواحد (معتم بالكامل).
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_104" style=""><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">opacity</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0.8</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></pre>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				قيمة الخاصية
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				1.0
			</td>
			<td style="text-align:right">
				معتم بالكامل.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				0.75
			</td>
			<td style="text-align:right">
				شفاف بنسبة 25%.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				0.5
			</td>
			<td style="text-align:right">
				شفاف بنسبة 50%.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				0.25
			</td>
			<td style="text-align:right">
				شفاف بنسبة 25%.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				0.0
			</td>
			<td style="text-align:right">
				شفاف بنسبة 100%.
			</td>
		</tr>
	</tbody>
</table>

<p>
	<strong>دعم خاصية <code>opacity</code> في متصفح IE</strong>
</p>

<p>
	تستخدم الشيفرة التالية لدعم خاصية <code>opacity</code> في كل إصدارات متصفح IE:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_106" style=""><span class="pun">.</span><span class="pln">transparent</span><span class="pun">-</span><span class="pln">element </span><span class="pun">{</span><span class="pln">
    </span><span class="com">/* for IE 8 &amp; 9 */</span><span class="pln">
    </span><span class="pun">-</span><span class="pln">ms</span><span class="pun">-</span><span class="pln">filter</span><span class="pun">:</span><span class="str">"progid:DXImageTransform.Microsoft.Alpha(Opacity=60)"</span><span class="pun">;</span><span class="pln"> </span><span class="com">// IE8</span><span class="pln">
    </span><span class="com">/* works in IE 8 &amp; 9 too, but also 5, 6, 7 */</span><span class="pln">
    filter</span><span class="pun">:</span><span class="pln"> alpha</span><span class="pun">(</span><span class="pln">opacity</span><span class="pun">=</span><span class="lit">60</span><span class="pun">);</span><span class="pln"> </span><span class="com">// IE 5-7</span><span class="pln">
    </span><span class="com">/* Modern Browsers */</span><span class="pln">
    opacity</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>

<h2>
	شكل المؤشر (cursor style)
</h2>

<p>
	تُحدد الخاصية <code>cursor</code> شكل مؤشر الفأرة الذي سيُعرَض عندما تمر الفأرة فوق العنصر.
</p>

<p>
	<strong>الصيغة العامة</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_108" style=""><span class="pln">cursor</span><span class="pun">:</span><span class="pln"> value</span><span class="pun">;</span></pre>

<p>
	الأشكال المتاحة:
</p>

<p style="text-align: center;">
	<img alt="E76ws.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52932" data-unique="ichcljka2" src="https://academy.hsoub.com/uploads/monthly_2020_11/E76ws.png.2d5e05fcd125c3cd3dbbb093e73be824.png">
</p>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				القيمة
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				none
			</td>
			<td style="text-align:right">
				تُخفي مؤشر الفأرة.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				auto
			</td>
			<td style="text-align:right">
				سيُحدِّد المتصفح شكل المؤشر الأفضل للعنصر.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				help
			</td>
			<td style="text-align:right">
				يشير المؤشر إلى توفر معلومات مساعدة.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				wait
			</td>
			<td style="text-align:right">
				البرنامج يجري مهمة في الخلفية، ولا يمكن أن يتفاعل المستخدم معه.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				move
			</td>
			<td style="text-align:right">
				يشير المؤشر إلى أنَّ شيئًا ما تحَرَّك.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				pointer
			</td>
			<td style="text-align:right">
				يمكن التفاعل مع العنصر بالضغط عليه، كما في الروابط والأزرار.
			</td>
		</tr>
	</tbody>
</table>

<h3>
	الخاصية pointer-event
</h3>

<p>
	تُحدد الخاصية pointer-event كيف سيتعامل العنصر مع مؤشر الفأرة.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8763_111" style=""><span class="pun">.</span><span class="pln">disabled </span><span class="pun">{</span><span class="pln">
    pointer</span><span class="pun">-</span><span class="pln">events</span><span class="pun">:</span><span class="pln"> none</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	القيمة <code>none</code> توقِف كل أحداث الفأرة مثال الضغط والتمرير وغيرها.
</p>

<p>
	<strong>مصادر إضافية</strong>
</p>

<ul>
	<li>
		<a href="https://css-tricks.com/almanac/properties/p/pointer-events/" rel="external nofollow">CSS tricks.</a>
	</li>
	<li>
		<a href="https://css-tricks.com/almanac/properties/p/pointer-events/" rel="external nofollow">توثيق MDN</a>.
	</li>
	<li>
		<a href="https://davidwalsh.name/pointer-events" rel="external nofollow">davidwalsh</a>.
	</li>
</ul>

<p>
	ترجمة -وبتصرف- للفصول [Typography, Columns, Multiple Columns, Colors, Opacity] من كتاب <a href="https://goalkicker.com/CSSBook/" rel="external nofollow">CSS Notes for Professionals</a>
</p>
]]></description><guid isPermaLink="false">1054</guid><pubDate>Wed, 18 Nov 2020 13:07:00 +0000</pubDate></item><item><title>&#x62A;&#x646;&#x633;&#x64A;&#x642; &#x627;&#x644;&#x642;&#x648;&#x627;&#x626;&#x645; &#x648;&#x625;&#x636;&#x627;&#x641;&#x629; &#x627;&#x644;&#x638;&#x644;&#x627;&#x644; &#x648;&#x631;&#x633;&#x645; &#x627;&#x644;&#x623;&#x634;&#x643;&#x627;&#x644; &#x641;&#x64A; CSS</title><link>https://academy.hsoub.com/programming/css/%D8%AA%D9%86%D8%B3%D9%8A%D9%82-%D8%A7%D9%84%D9%82%D9%88%D8%A7%D8%A6%D9%85-%D9%88%D8%A5%D8%B6%D8%A7%D9%81%D8%A9-%D8%A7%D9%84%D8%B8%D9%84%D8%A7%D9%84-%D9%88%D8%B1%D8%B3%D9%85-%D8%A7%D9%84%D8%A3%D8%B4%D9%83%D8%A7%D9%84-%D9%81%D9%8A-css-r1053/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2020_11/4.png.e40602d98b71c58c8edff7a47c2f24d1.png" /></p>

<h2>
	أنماط القوائم
</h2>
<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 style="text-align:right">
				المعامل
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr></thead>
<tbody>
<tr>
<td style="text-align:right">
				list-style-type
			</td>
			<td style="text-align:right">
				تُحدد شكل أو نوع مؤشر القائمة، ويمكن أن تأخذ القيم disc، أو circle، أو square، أو decimal، أو lower-roman، أو upper-roman، أو none. انظر <a href="https://www.w3.org/wiki/CSS/Properties/list-style-type" rel="external nofollow">توثيق W3C</a> لمعرفة جميع القيم المتاحة.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				list-style-position
			</td>
			<td style="text-align:right">
				تُحدِّد مكان مؤشر القائمة.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				list-style-image
			</td>
			<td style="text-align:right">
				تُحدِّد صورة تستخدم كمؤشر للقائمة.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				initial
			</td>
			<td style="text-align:right">
				تُرجع القيمة الإبتدائية للخاصية.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				inherit
			</td>
			<td style="text-align:right">
				ترث أنماط القائمة من العنصر الأب.
			</td>
		</tr>
</tbody>
</table>
<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_1871_7" style="">
<span class="pln">li </span><span class="pun">{</span><span class="pln">
    list</span><span class="pun">-</span><span class="pln">style</span><span class="pun">-</span><span class="pln">type</span><span class="pun">:</span><span class="pln"> square</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

li </span><span class="pun">{</span><span class="pln">
    list</span><span class="pun">-</span><span class="pln">style</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="str">'images/bullet.png'</span><span class="pun">)</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

li </span><span class="pun">{</span><span class="pln">
    list</span><span class="pun">-</span><span class="pln">style</span><span class="pun">-</span><span class="pln">position</span><span class="pun">:</span><span class="pln"> inside</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<h3>
	تموضع عناصر القائمة
</h3>

<p>
	لكل من عناصر القائمة (عناصر <code>&lt;li&gt;</code>) والعنصر الحاوي لها (<code>&lt;ul&gt;</code> أو <code>&lt;ol&gt;</code>) هوامش وحواشي خاصة به، وتؤثر هذه الهوامش والحواشي على موضع محتوى عنصر القائمة <code>&lt;li&gt;</code>، وبما أن المتصفحات المختلفة تضيف هوامش وحواشي بمساحات مختلفة مما يؤدي إلى إختلاف شكل الصفحة حسب المتصفح الذي تُعرض فيه، لذلك لابد من إعادة ضبط هذه المساحات يدويًا. لكل عنصر من عناصر القائمة صندوق يُسمى صندوق المؤشر (marker box) يوضع بداخلة مؤشر عناصر القائمة، ويمكن أن يكون هذا الصندوق داخل أو خارج صندوق عنصر القائمة <code>&lt;li&gt;</code>.
</p>

<p>
	<strong>وضع صندوق المؤشر داخل صندوق عنصر القائمة</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_1871_9" style="">
<span class="pln">list</span><span class="pun">-</span><span class="pln">style</span><span class="pun">-</span><span class="pln">position</span><span class="pun">:</span><span class="pln"> insde</span><span class="pun">;</span></pre>

<p>
	<strong>وضع صندوق المؤشر خارج صندوق عنصر القائمة</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_1871_12" style="">
<span class="pln">list</span><span class="pun">-</span><span class="pln">style</span><span class="pun">-</span><span class="pln">position</span><span class="pun">:</span><span class="pln"> outside</span><span class="pun">;</span></pre>

<p>
	اطَّلع على تجربة حيَّة لهذا المثال على <a href="https://jsfiddle.net/pqh3cxdp/" rel="external nofollow">JSFiddle</a>.
</p>

<h3>
	حذف المؤشر أو الترقيم من عناصر القائمة
</h3>

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

<ul>
<li>
		ملف HTML
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1871_14" style="">
<span class="pln">  </span><span class="tag">&lt;ul&gt;</span><span class="pln">
      </span><span class="tag">&lt;li&gt;</span><span class="pln">first item</span><span class="tag">&lt;/li&gt;</span><span class="pln">
      </span><span class="tag">&lt;li&gt;</span><span class="pln">second item</span><span class="tag">&lt;/li&gt;</span><span class="pln">
  </span><span class="tag">&lt;/ul&gt;</span></pre>

<ul>
<li>
		ملف CSS
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_1871_16" style="">
<span class="pln">  ul </span><span class="pun">{</span><span class="pln">
      list</span><span class="pun">-</span><span class="pln">style</span><span class="pun">-</span><span class="pln">type</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">
  li </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">
      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="pun">}</span></pre>

<h3>
	تحديد شكل المؤشر أو نوع الترقيم لعناصر القائمة
</h3>

<p>
	<strong>تحديد شكل المؤشر لعناصر القائمة الغير مرتبة (<code>&lt;ul&gt;</code>)</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_1871_18" style="">
<span class="pln">list</span><span class="pun">-</span><span class="pln">style</span><span class="pun">:</span><span class="pln"> disc</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* A filled circle (default) */</span><span class="pln">
list</span><span class="pun">-</span><span class="pln">style</span><span class="pun">:</span><span class="pln"> circle</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* A hollow circle */</span><span class="pln">
list</span><span class="pun">-</span><span class="pln">style</span><span class="pun">:</span><span class="pln"> square</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* A filled square */</span><span class="pln">
list</span><span class="pun">-</span><span class="pln">style</span><span class="pun">:</span><span class="pln"> </span><span class="str">'-'</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* any string */</span></pre>

<p>
	<strong>تحديد نوع الترقيم لعناصر القائمة المرتبة (<code>&lt;li&gt;</code>)</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_1871_20" style="">
<span class="pln">list</span><span class="pun">-</span><span class="pln">style</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">decimal</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* Decimal numbers beginning with 1 (default) */</span><span class="pln">
list</span><span class="pun">-</span><span class="pln">style</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">decimal</span><span class="pun">-</span><span class="pln">leading</span><span class="pun">-</span><span class="pln">zero</span><span class="pun">;</span><span class="com">/* Decimal numbers padded by initial zeros (01, 02, 03, … 10) */</span><span class="pln">
list</span><span class="pun">-</span><span class="pln">style</span><span class="pun">:</span><span class="pln"> lower</span><span class="pun">-</span><span class="pln">roman</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* Lowercase roman numerals (i., ii., iii., iv., ...) */</span><span class="pln">
list</span><span class="pun">-</span><span class="pln">style</span><span class="pun">:</span><span class="pln"> upper</span><span class="pun">-</span><span class="pln">roman</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* Uppercase roman numerals (I., II., III., IV., ...) */</span><span class="pln">
list</span><span class="pun">-</span><span class="pln">style</span><span class="pun">-</span><span class="pln">type</span><span class="pun">:</span><span class="pln"> lower</span><span class="pun">-</span><span class="pln">greek</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* Lowercase roman letters (α., β., γ., δ., ...) */</span><span class="pln">
list</span><span class="pun">-</span><span class="pln">style</span><span class="pun">-</span><span class="pln">type</span><span class="pun">:</span><span class="pln"> lower</span><span class="pun">-</span><span class="pln">alpha</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* Lowercase letters (a., b., c., d., ...) */</span><span class="pln">
list</span><span class="pun">-</span><span class="pln">style</span><span class="pun">-</span><span class="pln">type</span><span class="pun">:</span><span class="pln"> lower</span><span class="pun">-</span><span class="pln">latin</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* Lowercase letters (a., b., c., d., ...) */</span><span class="pln">
list</span><span class="pun">-</span><span class="pln">style</span><span class="pun">-</span><span class="pln">type</span><span class="pun">:</span><span class="pln"> upper</span><span class="pun">-</span><span class="pln">alpha</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* Uppercase letters (A., B., C., D., ...) */</span><span class="pln">
list</span><span class="pun">-</span><span class="pln">style</span><span class="pun">-</span><span class="pln">type</span><span class="pun">:</span><span class="pln"> upper</span><span class="pun">-</span><span class="pln">latin</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* Uppercase letters (A., B., C., D., ...) */</span></pre>

<h3>
	العدَّادات (CSS Counters)
</h3>

<table>
<thead><tr>
<th style="text-align:right">
				المعامل
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr></thead>
<tbody>
<tr>
<td style="text-align:right">
				counter-name
			</td>
			<td style="text-align:right">
				إسم العداد.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				integer
			</td>
			<td style="text-align:right">
				(إختياري) يُظهر القيمة الإبتدائية للعداد، أو القيمة التي سيزيد العداد بمقدارها.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				none
			</td>
			<td style="text-align:right">
				القيمة الإبتدائية لجميع خصائص العداد.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				counter-style
			</td>
			<td style="text-align:right">
				تُحدد النمط الذي ستظهر به قيمة العداد.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				connector-string
			</td>
			<td style="text-align:right">
				تُحدد العلامة أو النص الذي سيُعرض بين قيم العداد (مثلًا: علامة النقطة (.) في 2.1.1).
			</td>
		</tr>
</tbody>
</table>
<h4>
	استخدام الأرقام الرومانية في عدَّادات CSS
</h4>

<ul>
<li>
		ملف CSS
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_1871_22" style="">
<span class="pln">  body </span><span class="pun">{</span><span class="pln">
      counter</span><span class="pun">-</span><span class="pln">reset</span><span class="pun">:</span><span class="pln"> item</span><span class="pun">-</span><span class="pln">counter</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">item </span><span class="pun">{</span><span class="pln">
      counter</span><span class="pun">-</span><span class="pln">increment</span><span class="pun">:</span><span class="pln"> item</span><span class="pun">-</span><span class="pln">counter</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">item</span><span class="pun">:</span><span class="pln">before </span><span class="pun">{</span><span class="pln">
      content</span><span class="pun">:</span><span class="pln"> counter</span><span class="pun">(</span><span class="pln">item</span><span class="pun">-</span><span class="pln">counter</span><span class="pun">,</span><span class="pln"> upper</span><span class="pun">-</span><span class="pln">roman</span><span class="pun">)</span><span class="pln"> </span><span class="str">". "</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<ul>
<li>
		ملف HTML
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1871_25" style="">
<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">'item'</span><span class="tag">&gt;</span><span class="pln">Item No: 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">'item'</span><span class="tag">&gt;</span><span class="pln">Item No: 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">'item'</span><span class="tag">&gt;</span><span class="pln">Item No: 3</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	في هذا المثال ستُعرض قيم العداد بالأرقام الرومانية (I، II، III).
</p>

<h4>
	ترقيم العناصر في صفحة HTML باستخدام العدادات
</h4>

<ul>
<li>
		ملف HTML
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1871_27" style="">
<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">'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">'item-header'</span><span class="tag">&gt;</span><span class="pln">Item 1 Header</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">'item-content'</span><span class="tag">&gt;</span><span class="pln">Lorem Ipsum Dolor Sit Amet....</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">'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">'item-header'</span><span class="tag">&gt;</span><span class="pln">Item 2 Header</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">'item-content'</span><span class="tag">&gt;</span><span class="pln">Lorem Ipsum Dolor Sit Amet....</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">'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">'item-header'</span><span class="tag">&gt;</span><span class="pln">Item 3 Header</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">'item-content'</span><span class="tag">&gt;</span><span class="pln">Lorem Ipsum Dolor Sit Amet....</span><span class="tag">&lt;/div&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span></pre>

<ul>
<li>
		ملف CSS
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_1871_29" style="">
<span class="pln">  body </span><span class="pun">{</span><span class="pln">
      counter</span><span class="pun">-</span><span class="pln">reset</span><span class="pun">:</span><span class="pln"> item</span><span class="pun">-</span><span class="pln">counter</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* إنشاء العداد */</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">item </span><span class="pun">{</span><span class="pln">
      counter</span><span class="pun">-</span><span class="pln">increment</span><span class="pun">:</span><span class="pln"> item</span><span class="pun">-</span><span class="pln">counter</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* تزيد قيمة العداد لكل تكرار للصنف item */</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">item</span><span class="pun">-</span><span class="pln">header</span><span class="pun">:</span><span class="pln">before </span><span class="pun">{</span><span class="pln">
      content</span><span class="pun">:</span><span class="pln"> counter</span><span class="pun">(</span><span class="pln">item</span><span class="pun">-</span><span class="pln">counter</span><span class="pun">)</span><span class="pln"> </span><span class="str">". "</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* طباعة قيمة العداد */</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  item </span><span class="pun">{</span><span class="pln">
      border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> solid</span><span class="pun">;</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</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">10px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">item</span><span class="pun">-</span><span class="pln">header </span><span class="pun">{</span><span class="pln">
      border</span><span class="pun">-</span><span class="pln">bottom</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> solid</span><span class="pun">;</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">40px</span><span class="pun">;</span><span class="pln">
      line</span><span class="pun">-</span><span class="pln">height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">40px</span><span class="pun">;</span><span class="pln">
      padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">5px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">item</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">8px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	اطَّلع على تجربة حيَّة لهذا المثال على <a href="https://jsfiddle.net/a7rmje3r/" rel="external nofollow">JSFiddle</a>.
</p>

<h4>
	إنشاء ترقيم متعدد المستويات باستخدام عدَّادات CSS
</h4>

<ul>
<li>
		ملف HTML
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1871_31" style="">
<span class="pln">  </span><span class="tag">&lt;ul&gt;</span><span class="pln">
      </span><span class="tag">&lt;li&gt;</span><span class="pln">Level 1
          </span><span class="tag">&lt;ul&gt;</span><span class="pln">
              </span><span class="tag">&lt;li&gt;</span><span class="pln">Level 1.1
                  </span><span class="tag">&lt;ul&gt;</span><span class="pln">
                      </span><span class="tag">&lt;li&gt;</span><span class="pln">Level 1.1.1</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;/li&gt;</span><span class="pln">
          </span><span class="tag">&lt;/ul&gt;</span><span class="pln">
      </span><span class="tag">&lt;/li&gt;</span><span class="pln">

      </span><span class="tag">&lt;li&gt;</span><span class="pln">Level 2
          </span><span class="tag">&lt;ul&gt;</span><span class="pln">
              </span><span class="tag">&lt;li&gt;</span><span class="pln">Level 2.1
                  </span><span class="tag">&lt;ul&gt;</span><span class="pln">
                      </span><span class="tag">&lt;li&gt;</span><span class="pln">Level 2.1.1</span><span class="tag">&lt;/li&gt;</span><span class="pln">
                      </span><span class="tag">&lt;li&gt;</span><span class="pln">Level 2.1.2</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;/li&gt;</span><span class="pln">
          </span><span class="tag">&lt;/ul&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>
	في هذا المثال استخدمنا مفهوم العدَّادات المتداخلة لإنشاء ترقيم متعدد المستويات، الفكرة الأساسية للعدادات المتداخلة أنّه إذا كان للعنصر عدَّاد بإسم معين وأُجبر على إنشاء عدَّاد آخر بنفس الإسم فإنه سيُنشِأه كابن للعداد الحالي.
</p>

<p>
	في هذا المثال، عنصر <code>&lt;ul&gt;</code> الثاني يرث العداد <code>list-item-number</code> من العنصر الأب، ومن ثم عليه إنشاء عداد جديد بنفس الإسم لابنائه، وبالتالي يُنشئ العداد <code>[list-item-number[1</code> كفرع من العداد <code>[list-item-number[0</code>. ولعرض النتيجة نستخدم الدالة <code>()counters</code> بدلًا عن <code>()counter</code> لأننا نمتلك أكثر من عدَّاد واحد.
</p>

<h2>
	تطبيق ظلال على العنصر
</h2>

<p>
	تسمح الخاصية <code>box-shadow</code> بإنشاء ظلال للعنصر، وإذا كانت الخاصية <code>border-radius</code> مُحدَّدة على العنصر مع هذه الخاصية، فستأخذ الظلال شكل الحواف المدورة.
</p>

<table>
<thead><tr>
<th style="text-align:right">
				المعامل
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr></thead>
<tbody>
<tr>
<td style="text-align:right">
				inset
			</td>
			<td style="text-align:right">
				تؤدي إلى إنشاء ظلال داخل إطار العنصر.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				offset-x
			</td>
			<td style="text-align:right">
				الإزاحة الأفقية للظل عن العنصر.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				offset-y
			</td>
			<td style="text-align:right">
				الإزاحة الرأسية للظل عن العنصر.
			</td>
		</tr>
<tr>
<td style="text-align:right">
				blur-radius
			</td>
			<td style="text-align:right">
				كلما كبرت القيمة زاد تأثير الضبابية، وبالتالي سيصبح الظل أكبر وأكشف لونًا،
			</td>
		</tr>
<tr>
<td style="text-align:right">
				spread-radius
			</td>
			<td style="text-align:right">
				القيم الموجبة لها ستؤدي إلى جعل الظل يتوسع ويكبر، والقيم السالبة ستجعل الظل يتقلص ويصغر، وإذا لم تُحدَّد هذه القيمة فستكون <code>0</code> (أي أنَّ قياس الظل سيبقى كما هو).
			</td>
		</tr>
<tr>
<td style="text-align:right">
				color
			</td>
			<td style="text-align:right">
				لون الظل.
			</td>
		</tr>
</tbody>
</table>
<h3>
	إنشاء ظل أسفل العنصر باستخدام العناصر الزائفة
</h3>

<ul>
<li>
		ملف HTML
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1871_33" style="">
<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">"box_shadow"</span><span class="tag">&gt;&lt;/div&gt;</span></pre>

<ul>
<li>
		ملف CSS
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_1871_35" style="">
<span class="pln">  box_shadow </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">#1C90F3;</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">200px</span><span class="pun">;</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
      margin</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><span class="pln">
  </span><span class="pun">.</span><span class="pln">box_shadow</span><span class="pun">:</span><span class="pln">after </span><span class="pun">{</span><span class="pln">
      content</span><span class="pun">:</span><span class="pln"> </span><span class="str">""</span><span class="pun">;</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">190px</span><span class="pun">;</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</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="pln"> </span><span class="lit">98px</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">5px</span><span class="pun">;</span><span class="pln">
      display</span><span class="pun">:</span><span class="pln"> block</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">
      z</span><span class="pun">-</span><span class="pln">index</span><span class="pun">:</span><span class="pln"> </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">webkit</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"> </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">8px</span><span class="pln"> </span><span class="lit">2px</span><span class="pln"> </span><span class="com">#444444;</span><span class="pln">
      </span><span class="pun">-</span><span class="pln">moz</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"> </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">8px</span><span class="pln"> </span><span class="lit">2px</span><span class="pln"> </span><span class="com">#444444;</span><span class="pln">
      box</span><span class="pun">-</span><span class="pln">shadow</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">8px</span><span class="pln"> </span><span class="lit">2px</span><span class="pln"> </span><span class="com">#444444;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52899" href="https://academy.hsoub.com/uploads/monthly_2020_11/5n1ho.png.8948ccb9270d105eee886957c244ec8e.png" rel=""><img alt="5n1ho.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52899" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/5n1ho.png.8948ccb9270d105eee886957c244ec8e.png"></a>
</p>

<p>
	اطَّلع على تجربة حيَّة لهذا المثال على <a href="https://jsfiddle.net/UnsungHero97/80qod7aL/2/" rel="external nofollow">JSFiddle</a>.
</p>

<h3>
	إنشاء ظلال خارجية لأوجه العنصر الأربعة
</h3>

<ul>
<li>
		ملف HTML
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1871_37" style="">
<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">"box_shadow"</span><span class="tag">&gt;&lt;/div&gt;</span></pre>

<ul>
<li>
		ملف CSS
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_1871_39" style="">
<span class="pln">  </span><span class="pun">.</span><span class="pln">box_shadow </span><span class="pun">{</span><span class="pln">
      </span><span class="pun">-</span><span class="pln">webkit</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"> </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">10px</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1px</span><span class="pln"> </span><span class="com">#444444;</span><span class="pln">
      </span><span class="pun">-</span><span class="pln">moz</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"> </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">10px</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1px</span><span class="pln"> </span><span class="com">#444444;</span><span class="pln">
      box</span><span class="pun">-</span><span class="pln">shadow</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">10px</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1px</span><span class="pln"> </span><span class="com">#444444;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	اطَّلع على تجربة حيَّة لهذا المثال على <a href="https://jsfiddle.net/UnsungHero97/80qod7aL/" rel="external nofollow">JSFiddle</a>.
</p>

<h3>
	إنشاء ظلال داخلية للعنصر
</h3>

<ul>
<li>
		ملف HTML
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1871_41" style="">
<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">"box_shadow"</span><span class="tag">&gt;&lt;/div&gt;</span></pre>

<ul>
<li>
		ملف CSS
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_1871_43" style="">
<span class="pln">  box_shadow </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">#1C90F3;</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">200px</span><span class="pun">;</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
      margin</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><span class="pln">webkit</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"> inset </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">10px</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="com">#444444;</span><span class="pln">
      </span><span class="pun">-</span><span class="pln">moz</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"> inset </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">10px</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="com">#444444;</span><span class="pln">
      box</span><span class="pun">-</span><span class="pln">shadow</span><span class="pun">:</span><span class="pln"> inset </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">10px</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="com">#444444;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52900" href="https://academy.hsoub.com/uploads/monthly_2020_11/AMmgA.png.8a26d4a510c0fc2e252d3b11fec3b698.png" rel=""><img alt="AMmgA.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52900" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/AMmgA.png.8a26d4a510c0fc2e252d3b11fec3b698.png"></a>
</p>

<p>
	اطَّلع على تجربة حيَّة لهذا المثال على <a href="https://jsfiddle.net/UnsungHero97/80qod7aL/1/" rel="external nofollow">JSFiddle</a>.
</p>

<h3>
	إضافة ظلال متعددة للعنصر
</h3>

<ul>
<li>
		ملف HTML
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1871_45" style="">
<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">"box_shadow"</span><span class="tag">&gt;&lt;/div&gt;</span></pre>

<ul>
<li>
		ملف CSS
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_1871_47" style="">
<span class="pln">  box_shadow </span><span class="pun">{</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
      margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</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">
      </span><span class="pun">-</span><span class="lit">52px</span><span class="pln"> </span><span class="pun">-</span><span class="lit">52px</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="com">#f65314,</span><span class="pln">
      </span><span class="lit">52px</span><span class="pln"> </span><span class="pun">-</span><span class="lit">52px</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="com">#7cbb00,</span><span class="pln">
      </span><span class="pun">-</span><span class="lit">52px</span><span class="pln"> </span><span class="lit">52px</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="com">#00a1f1,</span><span class="pln">
      </span><span class="lit">52px</span><span class="pln"> </span><span class="lit">52px</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="com">#ffbb00;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img alt="mBU1Q.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52909" data-unique="zajrfq4ob" src="https://academy.hsoub.com/uploads/monthly_2020_11/mBU1Q.png.bf42f5b662c4409ba3e99a7efde88317.png"></p>

<p>
	اطَّلع على تجربة حيَّة لهذا المثال على <a href="https://jsfiddle.net/UnsungHero97/80qod7aL/5/" rel="external nofollow">JSFiddle</a>.
</p>

<h2>
	رسم الأشكال في CSS
</h2>

<h3>
	رسم شبه المنحرف (Trapezoid)
</h3>

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

<ul>
<li>
		ملف HTML
	</li>
</ul>
<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_1871_49" style="">
<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">"trapezoid"</span><span class="tag">&gt;&lt;/div&gt;</span></pre>

<ul>
<li>
		ملف CSS
	</li>
</ul>
<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_1871_51" style="">
<span class="pln">  </span><span class="pun">.</span><span class="pln">trapezoid </span><span class="pun">{</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pun">;</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
      border</span><span class="pun">-</span><span class="pln">left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pln"> solid transparent</span><span class="pun">;</span><span class="pln">
      border</span><span class="pun">-</span><span class="pln">right</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pln"> solid transparent</span><span class="pun">;</span><span class="pln">
      border</span><span class="pun">-</span><span class="pln">bottom</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pln"> solid black</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<h3>
	رسم المثلثات (Triangles)
</h3>

<p>
	لرسم المثلث أنشئ عنصر كتلي بارتفاع وعرض صفر، ويُرسم الشكل باستخدام الإطارات.
</p>

<p>
	<strong>رأس المثلث إلى أعلى</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_1871_53" style="">
<span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"triangle-up"</span><span class="tag">&gt;&lt;/div&gt;</span><span class="pln">

</span><span class="tag">&lt;style&gt;</span><span class="pln">
</span><span class="pun">.</span><span class="pln">triangle</span><span class="pun">-</span><span class="pln">up </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    border</span><span class="pun">-</span><span class="pln">left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">25px</span><span class="pln"> solid transparent</span><span class="pun">;</span><span class="pln">
    border</span><span class="pun">-</span><span class="pln">right</span><span class="pun">:</span><span class="pln"> </span><span class="lit">25px</span><span class="pln"> solid transparent</span><span class="pun">;</span><span class="pln">
    border</span><span class="pun">-</span><span class="pln">bottom</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pln"> solid rgb</span><span class="pun">(</span><span class="lit">246</span><span class="pun">,</span><span class="pln"> </span><span class="lit">156</span><span class="pun">,</span><span class="pln"> </span><span class="lit">85</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img alt="xGJtr.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52917" data-unique="wui9buxr7" src="https://academy.hsoub.com/uploads/monthly_2020_11/xGJtr.png.492c9b601704cf63cdc1a4dd284a4202.png"></p>

<p>
	<strong>رأس المثلث إلى أسفل</strong>
</p>

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

</span><span class="tag">&lt;style&gt;</span><span class="pln">
</span><span class="pun">.</span><span class="pln">triangle</span><span class="pun">-</span><span class="pln">down </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    border</span><span class="pun">-</span><span class="pln">left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">25px</span><span class="pln"> solid transparent</span><span class="pun">;</span><span class="pln">
    border</span><span class="pun">-</span><span class="pln">right</span><span class="pun">:</span><span class="pln"> </span><span class="lit">25px</span><span class="pln"> solid transparent</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">50px</span><span class="pln"> solid rgb</span><span class="pun">(</span><span class="lit">246</span><span class="pun">,</span><span class="pln"> </span><span class="lit">156</span><span class="pun">,</span><span class="pln"> </span><span class="lit">85</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img alt="wOVoW.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52915" data-unique="sc7j6xs7k" src="https://academy.hsoub.com/uploads/monthly_2020_11/wOVoW.png.0cbef8dd55d6be2a8a3d7ac388ab3a8c.png"></p>

<p>
	<strong>رأس المثلث إلى اليمين</strong>
</p>

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

</span><span class="tag">&lt;style&gt;</span><span class="pln">
</span><span class="pun">.</span><span class="pln">triangle</span><span class="pun">-</span><span class="pln">right </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</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">25px</span><span class="pln"> solid transparent</span><span class="pun">;</span><span class="pln">
    border</span><span class="pun">-</span><span class="pln">bottom</span><span class="pun">:</span><span class="pln"> </span><span class="lit">25px</span><span class="pln"> solid transparent</span><span class="pun">;</span><span class="pln">
    border</span><span class="pun">-</span><span class="pln">left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pln"> solid rgb</span><span class="pun">(</span><span class="lit">246</span><span class="pun">,</span><span class="pln"> </span><span class="lit">156</span><span class="pun">,</span><span class="pln"> </span><span class="lit">85</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img alt="KxeC4.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52908" data-unique="wyuiu1unb" src="https://academy.hsoub.com/uploads/monthly_2020_11/KxeC4.png.10aaf98bb5ba3a63d9ec785377b1427b.png"></p>

<p>
	<strong>رأس المثلث إلى اليسار</strong>
</p>

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

</span><span class="tag">&lt;style&gt;</span><span class="pln">
</span><span class="pun">.</span><span class="pln">triangle</span><span class="pun">-</span><span class="pln">left </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</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">25px</span><span class="pln"> solid transparent</span><span class="pun">;</span><span class="pln">
    border</span><span class="pun">-</span><span class="pln">bottom</span><span class="pun">:</span><span class="pln"> </span><span class="lit">25px</span><span class="pln"> solid transparent</span><span class="pun">;</span><span class="pln">
    border</span><span class="pun">-</span><span class="pln">right</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pln"> solid rgb</span><span class="pun">(</span><span class="lit">246</span><span class="pun">,</span><span class="pln"> </span><span class="lit">156</span><span class="pun">,</span><span class="pln"> </span><span class="lit">85</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img alt="X1y9B.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52916" data-unique="j53gcju4j" src="https://academy.hsoub.com/uploads/monthly_2020_11/X1y9B.png.13df5f2522f6bd73e3c5e4b7b56bda7d.png"></p>

<p>
	<strong>المثلث يشير إلى أعلى اليمين</strong>
</p>

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

</span><span class="tag">&lt;style&gt;</span><span class="pln">
</span><span class="pun">.</span><span class="pln">triangle</span><span class="pun">-</span><span class="pln">up</span><span class="pun">-</span><span class="pln">right </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</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">50px</span><span class="pln"> solid rgb</span><span class="pun">(</span><span class="lit">246</span><span class="pun">,</span><span class="pln"> </span><span class="lit">156</span><span class="pun">,</span><span class="pln"> </span><span class="lit">85</span><span class="pun">);</span><span class="pln">
    border</span><span class="pun">-</span><span class="pln">left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pln"> solid transparent</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img alt="ITZW8.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52905" data-unique="cf8g5kzuq" src="https://academy.hsoub.com/uploads/monthly_2020_11/ITZW8.png.11210208bbe3579b464c1bb4c9f2b532.png"></p>

<p>
	<strong>المثلث يشير إلى أعلى اليسار</strong>
</p>

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

</span><span class="tag">&lt;style&gt;</span><span class="pln">
</span><span class="pun">.</span><span class="pln">triangle</span><span class="pun">-</span><span class="pln">up</span><span class="pun">-</span><span class="pln">left </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</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">50px</span><span class="pln"> solid rgb</span><span class="pun">(</span><span class="lit">246</span><span class="pun">,</span><span class="pln"> </span><span class="lit">156</span><span class="pun">,</span><span class="pln"> </span><span class="lit">85</span><span class="pun">);</span><span class="pln">
    border</span><span class="pun">-</span><span class="pln">right</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pln"> solid transparent</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img alt="MIv7O.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52910" data-unique="tyenuupjr" src="https://academy.hsoub.com/uploads/monthly_2020_11/MIv7O.png.2fde3486fd39ca5965ee74c97ce6623b.png"></p>

<p>
	<strong>المثلث يشير إلى أسفل اليمين</strong>
</p>

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

</span><span class="tag">&lt;style&gt;</span><span class="pln">
</span><span class="pun">.</span><span class="pln">triangle</span><span class="pun">-</span><span class="pln">down</span><span class="pun">-</span><span class="pln">right </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    border</span><span class="pun">-</span><span class="pln">bottom</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pln"> solid rgb</span><span class="pun">(</span><span class="lit">246</span><span class="pun">,</span><span class="pln"> </span><span class="lit">156</span><span class="pun">,</span><span class="pln"> </span><span class="lit">85</span><span class="pun">);</span><span class="pln">
    border</span><span class="pun">-</span><span class="pln">left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pln"> solid transparent</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img alt="ephyF.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52903" data-unique="ybdh1anxy" src="https://academy.hsoub.com/uploads/monthly_2020_11/ephyF.png.9c4305838068d648a9cd26514e606ae7.png"></p>

<p>
	<strong>المثلث يشير إلى أسفل اليسار</strong>
</p>

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

</span><span class="tag">&lt;style&gt;</span><span class="pln">
</span><span class="pun">.</span><span class="pln">triangle</span><span class="pun">-</span><span class="pln">down</span><span class="pun">-</span><span class="pln">left </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    border</span><span class="pun">-</span><span class="pln">bottom</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pln"> solid rgb</span><span class="pun">(</span><span class="lit">246</span><span class="pun">,</span><span class="pln"> </span><span class="lit">156</span><span class="pun">,</span><span class="pln"> </span><span class="lit">85</span><span class="pun">);</span><span class="pln">
    border</span><span class="pun">-</span><span class="pln">right</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pln"> solid transparent</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img alt="MubUg.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52911" data-unique="o3i2hgasz" src="https://academy.hsoub.com/uploads/monthly_2020_11/MubUg.png.e321f8819af69defe73cc2353175cd1e.png"></p>

<h3>
	رسم الدائرة
</h3>

<p>
	لرسم الدائرة أنشئ عنصر كتلة بارتفاع وعرض متساويين، ومن ثم حدد قيمة الخاصية <code>border-radius</code> لتكون 50%.
</p>

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

</span><span class="tag">&lt;style&gt;</span><span class="pln">
</span><span class="pun">.</span><span class="pln">circle </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pun">;</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> rgb</span><span class="pun">(</span><span class="lit">246</span><span class="pun">,</span><span class="pln"> </span><span class="lit">156</span><span class="pun">,</span><span class="pln"> </span><span class="lit">85</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="tag">&lt;/style&gt;</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img alt="circle.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="52901" data-unique="5m8vzqj9m" src="https://academy.hsoub.com/uploads/monthly_2020_11/circle.PNG.78df4d4fd1457d7d2079412256b05ab5.PNG"></p>

<h3>
	رسم الشكل البيضاوي
</h3>

<p>
	لرسم الشكل البيضاوي أنشئ عنصر كتلة بارتفاع وعرض مختلفين، ومن ثم حدد قيمة الخاصية <code>border-radius</code> لتكون 50%.
</p>

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

</span><span class="tag">&lt;style&gt;</span><span class="pln">
</span><span class="pun">.</span><span class="pln">circle </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">80px</span><span class="pun">;</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> rgb</span><span class="pun">(</span><span class="lit">246</span><span class="pun">,</span><span class="pln"> </span><span class="lit">156</span><span class="pun">,</span><span class="pln"> </span><span class="lit">85</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="tag">&lt;/style&gt;</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img alt="oval.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="52912" data-unique="5kwv7ukpo" src="https://academy.hsoub.com/uploads/monthly_2020_11/oval.PNG.c97ff4b95be7b470647804643078d47b.PNG"></p>

<h3>
	شكل الانفجار
</h3>

<p>
	<strong>رسم شكل انفجار بثماني نقاط</strong>
</p>

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

</span><span class="tag">&lt;style&gt;</span><span class="pln">
</span><span class="pun">.</span><span class="pln">burst</span><span class="pun">-</span><span class="lit">8</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> rgb</span><span class="pun">(</span><span class="lit">246</span><span class="pun">,</span><span class="pln"> </span><span class="lit">156</span><span class="pun">,</span><span class="pln"> </span><span class="lit">85</span><span class="pun">);</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">40px</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">40px</span><span class="pun">;</span><span class="pln">
    position</span><span class="pun">:</span><span class="pln"> relative</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">ms</span><span class="pun">-</span><span class="pln">transform</span><span class="pun">:</span><span class="pln"> rotate</span><span class="pun">(</span><span class="lit">20deg</span><span class="pun">);</span><span class="pln">
    transform</span><span class="pun">:</span><span class="pln"> rotate</span><span class="pun">(</span><span class="lit">20eg</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">burst</span><span class="pun">-</span><span class="lit">8</span><span class="pun">::</span><span class="pln">before </span><span class="pun">{</span><span class="pln">
    content</span><span class="pun">:</span><span class="pln"> </span><span class="str">""</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">
    top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">40px</span><span class="pun">;</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">40px</span><span class="pun">;</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> rgb</span><span class="pun">(</span><span class="lit">246</span><span class="pun">,</span><span class="pln"> </span><span class="lit">156</span><span class="pun">,</span><span class="pln"> </span><span class="lit">85</span><span class="pun">);</span><span class="pln">
    </span><span class="pun">-</span><span class="pln">ms</span><span class="pun">-</span><span class="pln">transform</span><span class="pun">:</span><span class="pln"> rotate</span><span class="pun">(</span><span class="lit">135deg</span><span class="pun">);</span><span class="pln">
    transform</span><span class="pun">:</span><span class="pln"> rotate</span><span class="pun">(</span><span class="lit">135deg</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img alt="JLVxn.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52906" data-unique="4yaz7mu12" src="https://academy.hsoub.com/uploads/monthly_2020_11/JLVxn.png.b63cf13ca873d8c6298d97c52e620166.png"></p>

<p>
	<strong>رسم شكل انفجار باثنتي عشر نقطة</strong>
</p>

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

</span><span class="tag">&lt;style&gt;</span><span class="pln">
burst</span><span class="pun">-</span><span class="lit">12</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">40px</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">40px</span><span class="pun">;</span><span class="pln">
    position</span><span class="pun">:</span><span class="pln"> relative</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">
    background</span><span class="pun">:</span><span class="pln"> rgb</span><span class="pun">(</span><span class="lit">246</span><span class="pun">,</span><span class="pln"> </span><span class="lit">156</span><span class="pun">,</span><span class="pln"> </span><span class="lit">85</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">burst</span><span class="pun">-</span><span class="lit">12</span><span class="pun">::</span><span class="pln">before</span><span class="pun">,</span><span class="pln"> </span><span class="pun">.</span><span class="pln">burst</span><span class="pun">-</span><span class="lit">12</span><span class="pun">::</span><span class="pln">after </span><span class="pun">{</span><span class="pln">
    content</span><span class="pun">:</span><span class="pln"> </span><span class="str">""</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">
    top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">40px</span><span class="pun">;</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">40px</span><span class="pun">;</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> rgb</span><span class="pun">(</span><span class="lit">246</span><span class="pun">,</span><span class="pln"> </span><span class="lit">156</span><span class="pun">,</span><span class="pln"> </span><span class="lit">85</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">burst</span><span class="pun">-</span><span class="lit">12</span><span class="pun">::</span><span class="pln">before </span><span class="pun">{</span><span class="pln">
    </span><span class="pun">-</span><span class="pln">ms</span><span class="pun">-</span><span class="pln">transform</span><span class="pun">:</span><span class="pln"> rotate</span><span class="pun">(</span><span class="lit">30deg</span><span class="pun">);</span><span class="pln">
    transform</span><span class="pun">:</span><span class="pln"> rotate</span><span class="pun">(</span><span class="lit">30deg</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">burst</span><span class="pun">-</span><span class="lit">12</span><span class="pun">::</span><span class="pln">after </span><span class="pun">{</span><span class="pln">
    </span><span class="pun">-</span><span class="pln">ms</span><span class="pun">-</span><span class="pln">transform</span><span class="pun">:</span><span class="pln"> rotate</span><span class="pun">(</span><span class="lit">60deg</span><span class="pun">);</span><span class="pln">
    transform</span><span class="pun">:</span><span class="pln"> rotate</span><span class="pun">(</span><span class="lit">60deg</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img alt="kqLgi.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52907" data-unique="ijiq3g3vz" src="https://academy.hsoub.com/uploads/monthly_2020_11/kqLgi.png.b25a04c763bf015bbd9878e73fdf9cdc.png"></p>

<h3>
	رسم المربع
</h3>

<p>
	لرسم مربع انشئ عنصر كتلة بارتفاع وعرض متساويين.
</p>

<p>
	<strong>مثال</strong>
</p>

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

</span><span class="tag">&lt;style&gt;</span><span class="pln">
</span><span class="pun">.</span><span class="pln">square </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> rgb</span><span class="pun">(</span><span class="lit">246</span><span class="pun">,</span><span class="pln"> </span><span class="lit">156</span><span class="pun">,</span><span class="pln"> </span><span class="lit">85</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img alt="uV3Yp.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52914" data-unique="vnvzel1kk" src="https://academy.hsoub.com/uploads/monthly_2020_11/uV3Yp.png.752e4a86a1b948662f1050be69901509.png"></p>

<h3>
	رسم المكعب
</h3>

<p>
	تستخدم خصائص التحويلات ثنائية الأبعاد <code>skewX()</code>‎ و <code>skewY()</code>‎ على العناصر الزائفة لرسم المكعب.
</p>

<p>
	<strong>مثال</strong>
</p>

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

</span><span class="tag">&lt;style&gt;</span><span class="pln">
cube </span><span class="pun">{</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> </span><span class="com">#dc2e2e;</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
    position</span><span class="pun">:</span><span class="pln"> relative</span><span class="pun">;</span><span class="pln">
    margin</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><span class="pln">

</span><span class="pun">.</span><span class="pln">cube</span><span class="pun">::</span><span class="pln">before </span><span class="pun">{</span><span class="pln">
    content</span><span class="pun">:</span><span class="pln"> </span><span class="str">''</span><span class="pun">;</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">inline</span><span class="pun">-</span><span class="pln">block</span><span class="pun">;</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> </span><span class="com">#f15757;</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</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">
    transform</span><span class="pun">:</span><span class="pln"> skewX</span><span class="pun">(-</span><span class="lit">40deg</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">
    top</span><span class="pun">:</span><span class="pln"> </span><span class="pun">-</span><span class="lit">20px</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="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">cube</span><span class="pun">::</span><span class="pln">after </span><span class="pun">{</span><span class="pln">
    content</span><span class="pun">:</span><span class="pln"> </span><span class="str">''</span><span class="pun">;</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">inline</span><span class="pun">-</span><span class="pln">block</span><span class="pun">;</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> </span><span class="com">#9e1515;</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">16px</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
    transform</span><span class="pun">:</span><span class="pln"> skewY</span><span class="pun">(-</span><span class="lit">50deg</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">
    top</span><span class="pun">:</span><span class="pln"> </span><span class="pun">-</span><span class="lit">10px</span><span class="pun">;</span><span class="pln">
    left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img alt="UeEQM.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52913" data-unique="bnis23dlt" src="https://academy.hsoub.com/uploads/monthly_2020_11/UeEQM.png.5f80cbbb97a52a917613d96a1c66f4f9.png"></p>

<p>
	اطلع على تجربة حيَّة لهذا المثال على <a href="https://jsfiddle.net/codename0/9po0r1L1/" rel="external nofollow">JSFiddle</a>.
</p>

<h3>
	رسم الهرم
</h3>

<p>
	تستخدم الإطارات مع التحويلات ثنائية الأبعاد <code>skewY()</code>‎ و <code>rotate()</code>‎ على العناصر الزائفة لرسم شكل الهرم.
</p>

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

</span><span class="tag">&lt;style&gt;</span><span class="pln">
</span><span class="pun">.</span><span class="pln">pyramid </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</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">
    position</span><span class="pun">:</span><span class="pln"> relative</span><span class="pun">;</span><span class="pln">
    margin</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><span class="pln">

</span><span class="pun">.</span><span class="pln">pyramid</span><span class="pun">::</span><span class="pln">before</span><span class="pun">,.</span><span class="pln">pyramid</span><span class="pun">::</span><span class="pln">after </span><span class="pun">{</span><span class="pln">
    content</span><span class="pun">:</span><span class="pln"> </span><span class="str">''</span><span class="pun">;</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">inline</span><span class="pun">-</span><span class="pln">block</span><span class="pun">;</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pln"> solid</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">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">pyramid</span><span class="pun">::</span><span class="pln">before </span><span class="pun">{</span><span class="pln">
    border</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> transparent transparent </span><span class="com">#ff5656 transparent;</span><span class="pln">
    transform</span><span class="pun">:</span><span class="pln"> scaleY</span><span class="pun">(</span><span class="lit">2</span><span class="pun">)</span><span class="pln"> skewY</span><span class="pun">(-</span><span class="lit">40deg</span><span class="pun">)</span><span class="pln"> rotate</span><span class="pun">(</span><span class="lit">45deg</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">pyramid</span><span class="pun">::</span><span class="pln">after </span><span class="pun">{</span><span class="pln">
    border</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> transparent transparent </span><span class="com">#d64444 transparent;</span><span class="pln">
    transform</span><span class="pun">:</span><span class="pln"> scaleY</span><span class="pun">(</span><span class="lit">2</span><span class="pun">)</span><span class="pln"> skewY</span><span class="pun">(</span><span class="lit">40deg</span><span class="pun">)</span><span class="pln"> rotate</span><span class="pun">(-</span><span class="lit">45deg</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img alt="eUJiX.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52904" data-unique="p9vwd3lyy" src="https://academy.hsoub.com/uploads/monthly_2020_11/eUJiX.png.a51dd3ca70390c9ffaf703f2a82083f8.png"></p>

<p>
	ترجمة -وبتصرف- للفصول من كتاب <a href="https://goalkicker.com/CSSBook/" rel="external nofollow">CSS Notes for Professionals</a>
</p>
]]></description><guid isPermaLink="false">1053</guid><pubDate>Sat, 14 Nov 2020 13:04:01 +0000</pubDate></item><item><title>&#x627;&#x644;&#x62A;&#x62D;&#x643;&#x645; &#x641;&#x64A; &#x62A;&#x645;&#x648;&#x636;&#x639; &#x627;&#x644;&#x639;&#x646;&#x627;&#x635;&#x631; &#x641;&#x64A; CSS</title><link>https://academy.hsoub.com/programming/css/%D8%A7%D9%84%D8%AA%D8%AD%D9%83%D9%85-%D9%81%D9%8A-%D8%AA%D9%85%D9%88%D8%B6%D8%B9-%D8%A7%D9%84%D8%B9%D9%86%D8%A7%D8%B5%D8%B1-%D9%81%D9%8A-css-r1052/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2020_11/3.png.8b492cd46e2ebd1563f27629674b4241.png" /></p>
<p>
	تأخذ الخاصية <code>position</code> التي تضبط موضع العنصر في الصفحة القيم الموضحة في الجدول التالي والتي سنشرح كل واحدة منها بالتفصيل مع أمثلة.
</p>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				المعامل
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				static
			</td>
			<td style="text-align:right">
				تعرض العناصر بنفس ترتيبها كتابتها على ملف HTML.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				relative
			</td>
			<td style="text-align:right">
				تُحدد موضع العنصر نسبةً لموضِعه الأصلي.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				fixed
			</td>
			<td style="text-align:right">
				تُحدد موضع العنصر نسبةً لنافذة المتصفح.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				absolute
			</td>
			<td style="text-align:right">
				تُحدد موضع العنصر نسبةً لأوَّل عنصر ذي موضِع نسبي.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				initial
			</td>
			<td style="text-align:right">
				تُرجِع القيمة الإبتدائية للخاصية.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				inherit
			</td>
			<td style="text-align:right">
				ترث قيمة الخاصية من العنصر الأب.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				sticky
			</td>
			<td style="text-align:right">
				يُعامَل العنصر كما لو أنَّه ذو موضع نسبي <code>relative</code> وبعد تجاوز حد معيّن من التمرير لأسفل فسيُعامَل على أنه ذو موضع ثابت <code>fixed</code>.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				unset
			</td>
			<td style="text-align:right">
				مزيج بين <code>initial</code> و <code>inherit</code>. انظر <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/unset" rel="external nofollow">توثيق MDN</a>.
			</td>
		</tr>
	</tbody>
</table>
<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>
<h2>
	الموضِع المُطلق (Absolute position)
</h2>

<p>
	عند استخدام الموضع المطلق، يُزال العنصر من البنية التنظيمية للصفحة، ولا يُحجَز له مكانٌ في تخطيطها، وإنما يُحدد موضعه نسبةً إلى أقرب عنصر له موضع نسبي، أو إلى العنصر <code>&lt;body&gt;</code>، ويمكن التحكم في موضعه عبر الخواص <code>top</code> و <code>right</code> و <code>bottom</code> و <code>left</code>.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_4041_7" style=""><span class="pun">.</span><span class="pln">abspos </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">
    top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0px</span><span class="pun">;</span><span class="pln">
    left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">500px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<h2>
	الموضع الثابت (Fixed position)
</h2>

<p>
	عند استخدام الموضع الثابت يُزال العنصر من البنية التنظيمية للصفحة، ولا يُحجَز له مكانٌ في تخطيطها، وإنما يُحدد موضعه نسبةً إلى إطار العرض (viewport)، يمكن التحكم في موضعه عبر الخواص <code>top</code> و <code>right</code> و <code>bottom</code> و <code>left</code>، ومن الاستخدامات الشائعة للموضع الثابت استخدامه لتثبيت العنصر في مكانه عند تمرير الصفحة لأسفل.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_4041_9" style=""><span class="com">#stickyDiv {</span><span class="pln">
    position</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">fixed</span><span class="pun">;</span><span class="pln">
    top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10px</span><span class="pun">;</span><span class="pln">
    left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<h2>
	الموضع النسبي (Relative position)
</h2>

<p>
	يُحدد موضع العنصر بناءً على البنية التنظيمية للصفحة،ويمكن التحكم في إزاحته عن موضعه الأصلي عبر الخواص <code>top</code> و <code>right</code> و <code>bottom</code> و <code>left</code>، ولا تؤثر هذه الإزاحة على مواضع بقية العناصر.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_4041_11" style=""><span class="pun">.</span><span class="pln">relpos </span><span class="pun">{</span><span class="pln">
    position</span><span class="pun">:</span><span class="pln"> relative</span><span class="pun">;</span><span class="pln">
    top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">20px</span><span class="pun">;</span><span class="pln">
    left</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></pre>

<h2>
	الموضع الافتراضي حيث يجب (Static position)
</h2>

<p>
	يُحدد موضع العنصر بناءً على البنية التنظيمية للصفحة ولا يكون للخواص <code>top</code> و <code>right</code> و <code>bottom</code> و <code>left</code> و <code>z-index</code> أي أثر عليه.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_4041_16" style=""><span class="pun">.</span><span class="pln">element </span><span class="pun">{</span><span class="pln">
    position</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">static</span><span class="pun">;</span><span class="pln">   
</span><span class="pun">}</span></pre>

<h2>
	خاصية z-index
</h2>

<p>
	تُحدِّد الخاصية <code>z-index</code> ترتيب العناصر ذات الموضع المُحدد (positioned elements) على المحور Z، فعندما تتداخل العناصر تُحدد قيمة هذه الخاصية أيّ العناصر سيظهر فوق بقية العناصر، حيث يظهر العنصر ذو أكبر قيمة للخاصية z-index في الأعلى ويليه العنصر ذو القيمة الأقل مباشرة وهكذا.
</p>

<p>
	<strong>مثال</strong>
</p>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_4041_18" style=""><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">"div1"</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">id</span><span class="pun">=</span><span class="atv">"div2"</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">id</span><span class="pun">=</span><span class="atv">"div3"</span><span class="tag">&gt;&lt;/div&gt;</span></pre>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_4041_20" style=""><span class="pln">  div </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">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">200px</span><span class="pun">;</span><span class="pln">
      width</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">

  div</span><span class="com">#div1 {</span><span class="pln">
      z</span><span class="pun">-</span><span class="pln">index</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
      left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0px</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">
      background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> blue</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  div</span><span class="com">#div2 {</span><span class="pln">
      z</span><span class="pun">-</span><span class="pln">index</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2</span><span class="pun">;</span><span class="pln">
      left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
      top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</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"> green</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  div</span><span class="com">#div3 {</span><span class="pln">
      z</span><span class="pun">-</span><span class="pln">index</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3</span><span class="pun">;</span><span class="pln">
      left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pun">;</span><span class="pln">
      top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">150px</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"> red</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img class="ipsImage ipsImage_thumbnailed" data-fileid="116566" data-ratio="106.00" data-unique="rx4ggl07z" width="350" alt="temp.png" src="https://academy.hsoub.com/uploads/monthly_2023_01/temp.png.ec604671b11318451ad18f1253b4f0fe.png">
</p>

<p>
	اطَّلع على تجربة حيَّة لهذا المثال على <a href="https://jsfiddle.net/esnc10tq/" rel="external nofollow">JSFiddle</a>.
</p>

<p>
	<strong>الصيغة العامة لكتابة الخاصية <code>z-index</code></strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_4041_22" style=""><span class="pln">z</span><span class="pun">-</span><span class="pln">index</span><span class="pun">:</span><span class="pln"> </span><span class="pun">[</span><span class="pln">number</span><span class="pun">]</span><span class="pln"> </span><span class="pun">|</span><span class="pln"> </span><span class="kwd">auto</span><span class="pun">;</span></pre>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				القيمة
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				number
			</td>
			<td style="text-align:right">
				عدد صحيح يمثل ترتيب العنصر على المحور Z.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				auto
			</td>
			<td style="text-align:right">
				تُعطي العنصر نفس ترتيب ابيه على المحور Z.
			</td>
		</tr>
	</tbody>
</table>

<p>
	<strong>مصادر إضافية</strong>
</p>

<ol>
	<li>
		<a href="https://www.sitepoint.com/community/t/why-does-z-index-need-a-defined-position-to-work/46115" rel="external nofollow">لماذا تعمل الخاصية <code>z-index</code> فقط مع العناصر ذات الموضع المحدد (positioned elements) ؟</a>
	</li>
	<li>
		<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/z-index" rel="external nofollow">توثيق MDN.</a>
	</li>
	<li>
		<a href="https://drafts.csswg.org/css-position/#layered-presentation" rel="external nofollow">CSS Specification.</a>
	</li>
</ol>

<h2>
	سياق التراص (Stacking Context)
</h2>

<p>
	في المثال أدناه، يُنشئ كل عنصر سياق تراص خاص به، وبسبب مواضع العناصر و قيمة الخاصية <code>z-index</code> لهم، يُنشئ سياق التراص بالشكل التالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52898" href="https://academy.hsoub.com/uploads/monthly_2020_11/nKKSo.png.e5bd6b4a313cc60f164f639d4a810081.png" rel="" data-fileext="png"><img alt="nKKSo.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52898" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/nKKSo.png.e5bd6b4a313cc60f164f639d4a810081.png"></a>
</p>

<p>
	من المهم ملاحظة أن العنصرين <code>DIV #4</code> و <code>DIV #5</code> و <code>DIV #6</code> هم أبناء للعنصر <code>DIV #3</code> لذلك يُنشأ سياق التراص لهم بالنسبة له، وبعد ذلك ينشأ سياق التراص العام للصفحة.
</p>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_4041_24" style=""><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">"div1"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;h1&gt;</span><span class="pln">Division Element #1</span><span class="tag">&lt;/h1&gt;</span><span class="pln">
      </span><span class="tag">&lt;code&gt;</span><span class="pln">position: relative;</span><span class="tag">&lt;br/&gt;</span><span class="pln">
      z-index: 5;</span><span class="tag">&lt;/code&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">"div2"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;h1&gt;</span><span class="pln">Division Element #2</span><span class="tag">&lt;/h1&gt;</span><span class="pln">
      </span><span class="tag">&lt;code&gt;</span><span class="pln">position: relative;</span><span class="tag">&lt;br/&gt;</span><span class="pln">
      z-index: 2;</span><span class="tag">&lt;/code&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">"div3"</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">"div4"</span><span class="tag">&gt;</span><span class="pln">GoalKicker.com – CSS Notes for Professionals 210
          </span><span class="tag">&lt;h1&gt;</span><span class="pln">Division Element #4</span><span class="tag">&lt;/h1&gt;</span><span class="pln">
          </span><span class="tag">&lt;code&gt;</span><span class="pln">position: relative;</span><span class="tag">&lt;br/&gt;</span><span class="pln">
          z-index: 6;</span><span class="tag">&lt;/code&gt;</span><span class="pln">
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">
      </span><span class="tag">&lt;h1&gt;</span><span class="pln">Division Element #3</span><span class="tag">&lt;/h1&gt;</span><span class="pln">
      </span><span class="tag">&lt;code&gt;</span><span class="pln">position: absolute;</span><span class="tag">&lt;br/&gt;</span><span class="pln">
      z-index: 4;</span><span class="tag">&lt;/code&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">"div5"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;h1&gt;</span><span class="pln">Division Element #5</span><span class="tag">&lt;/h1&gt;</span><span class="pln">
          </span><span class="tag">&lt;code&gt;</span><span class="pln">position: relative;</span><span class="tag">&lt;br/&gt;</span><span class="pln">
          z-index: 1;</span><span class="tag">&lt;/code&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">"div6"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;h1&gt;</span><span class="pln">Division Element #6</span><span class="tag">&lt;/h1&gt;</span><span class="pln">
          </span><span class="tag">&lt;code&gt;</span><span class="pln">position: absolute;</span><span class="tag">&lt;br/&gt;</span><span class="pln">
          z-index: 3;</span><span class="tag">&lt;/code&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>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_4041_26" style=""><span class="pln">  </span><span class="pun">*</span><span class="pln"> </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">
  html </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="pun">;</span><span class="pln">
      font</span><span class="pun">:</span><span class="pln"> </span><span class="lit">12px</span><span class="pun">/</span><span class="lit">20px</span><span class="pln"> </span><span class="typ">Arial</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="pun">}</span><span class="pln">
  div </span><span class="pun">{</span><span class="pln">
      opacity</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0.7</span><span class="pun">;</span><span class="pln">
      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">
  h1 </span><span class="pun">{</span><span class="pln">
      font</span><span class="pun">:</span><span class="pln"> inherit</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="com">#div1,</span><span class="pln">
  </span><span class="com">#div2 {</span><span class="pln">
      border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> dashed </span><span class="com">#696;</span><span class="pln">
      padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10px</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">#cfc;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="com">#div1 {</span><span class="pln">
      z</span><span class="pun">-</span><span class="pln">index</span><span class="pun">:</span><span class="pln"> </span><span class="lit">5</span><span class="pun">;</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">190px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="com">#div2 {</span><span class="pln">
      z</span><span class="pun">-</span><span class="pln">index</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="com">#div3 {</span><span class="pln">
      z</span><span class="pun">-</span><span class="pln">index</span><span class="pun">:</span><span class="pln"> </span><span class="lit">4</span><span class="pun">;</span><span class="pln">
      opacity</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</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">
      top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">40px</span><span class="pun">;</span><span class="pln">
      left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">180px</span><span class="pun">;</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">330px</span><span class="pun">;</span><span class="pln">
      border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> dashed </span><span class="com">#900;</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">#fdd;</span><span class="pln">
      padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">40px</span><span class="pln"> </span><span class="lit">20px</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="com">#div4,</span><span class="pln">
  </span><span class="com">#div5 {</span><span class="pln">
      border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> dashed </span><span class="com">#996;</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">#ffc;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="com">#div4 {</span><span class="pln">
      z</span><span class="pun">-</span><span class="pln">index</span><span class="pun">:</span><span class="pln"> </span><span class="lit">6</span><span class="pun">;</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">15px</span><span class="pun">;</span><span class="pln">
      padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">25px</span><span class="pln"> </span><span class="lit">10px</span><span class="pln"> </span><span class="lit">5px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="com">#div5 {</span><span class="pln">
      z</span><span class="pun">-</span><span class="pln">index</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</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="pln"> </span><span class="lit">15px</span><span class="pun">;</span><span class="pln">
      padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">5px</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">#div6 {</span><span class="pln">
      z</span><span class="pun">-</span><span class="pln">index</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3</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">
      top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">20px</span><span class="pun">;</span><span class="pln">
      left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">180px</span><span class="pun">;</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">150px</span><span class="pun">;</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">125px</span><span class="pun">;</span><span class="pln">
      border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> dashed </span><span class="com">#009;</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">125px</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">#ddf;</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>
	المصدر: <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context" rel="external nofollow">توثيق MDN</a>.
</p>

<p>
	ترجمة -وبتصرف- للفصول [Positioning, Stacking Context] من كتاب <a href="https://goalkicker.com/CSSBook/" rel="external nofollow">CSS Notes for Professionals</a>
</p>
]]></description><guid isPermaLink="false">1052</guid><pubDate>Wed, 11 Nov 2020 13:02:00 +0000</pubDate></item><item><title>&#x627;&#x644;&#x646;&#x645;&#x648;&#x630;&#x62C; &#x627;&#x644;&#x635;&#x646;&#x62F;&#x648;&#x642;&#x64A; (Box Model) &#x641;&#x64A; CSS</title><link>https://academy.hsoub.com/programming/css/%D8%A7%D9%84%D9%86%D9%85%D9%88%D8%B0%D8%AC-%D8%A7%D9%84%D8%B5%D9%86%D8%AF%D9%88%D9%82%D9%8A-box-model-%D9%81%D9%8A-css-r1051/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2020_11/2.png.d36225bfa6a61d32df859a0a2a09151f.png" /></p>
<h2>
	ما هو النموذج الصندوقي؟
</h2>

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52883" href="https://academy.hsoub.com/uploads/monthly_2020_11/diagram.png.276c8026db9552eb25bffccc64f115f7.png" rel="" data-fileext="png"><img alt="diagram.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52883" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/diagram.png.276c8026db9552eb25bffccc64f115f7.png"></a>
</p>

<p>
	الرسم التخطيطي من <a href="https://www.w3.org/TR/CSS22/box.html#mpb-examples" rel="external nofollow">CSS2.2 Working Draft</a>.
</p>

<p>
	يسمى محيط كل مساحة من المساحات الأربع مُحدِّد، كل مُحدِّد يحدد صندوقًا معينًا.
</p>

<ul>
	<li>
		يُسمى المستطيل الداخلي صندوق المحتوى content-box، يعتمد عرض وارتفاع هذا الصندوق على المحتوى المعروض للعنصر (النصوص، الصور وأي أبناء آخرين للعنصر).
	</li>
	<li>
		المستطيل التالي هو صندوق الحواشي padding-box، ويُعرَّف بخاصية الحاشية <code>padding</code>. إذا لم يتم تحديد عرض الحاشية، تكون حافة الحاشية مطابقة لحافة صندوق المحتوى.
	</li>
	<li>
		يلي ذلك صندوق الإطارات، ويُعرَّف بخاصية الإطار border. إذا لم يُحدد عرض الإطار، تكون حافة صندوق الإطارات مطابقة لحافة صندوق الحواشي.
	</li>
	<li>
		المستطيل الخارجي هو صندوق الهوامش، ويُعرَّف بخاصية الهامش margin. إذا لم يتم تحديد عرض الهامش، تكون حافة صندوق الهوامش مطابقة لحافة صندوق الإطارات.
	</li>
</ul>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_7" style=""><span class="pln">div </span><span class="pun">{</span><span class="pln">
    border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">5px</span><span class="pln"> solid red</span><span class="pun">;</span><span class="pln">
    margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</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="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	هذه الشيفرة تنشيء إطارًا بعرض 5 بكسلات لحواف العنصر الأربع لكل عناصر div في صفحة HTML، وكذلك تضيف هوامش بعرض 50 بكسل و حواشي بعرض 20 بكسل في الاتجاهات الأربعة. بتجاهل المحتوى، يكون النموذج الصندوقي الناتج بهذا الشكل:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52880" href="https://academy.hsoub.com/uploads/monthly_2020_11/box-model-1.png.a5a2db2795ef06adc9921bec8218a4d0.png" rel="" data-fileext="png"><img alt="box-model-1.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52880" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/box-model-1.png.a5a2db2795ef06adc9921bec8218a4d0.png"></a>
</p>

<ul>
	<li>
		بما أنه لا يوجد محتوى، سيكون صندوق المحتوى (الصندوق الأزرق في الوسط) بدون عرض أو ارتفاع (0 بكسل * 0 بكسل).
	</li>
	<li>
		بشكل إبتدائي يكون صندوق الحواشي بنفس مساحة صندوق المحتوى، بالإضافة إلى عرض الحواشي 20 بكسل في الحواف الأربع. وتكون مساحة الصندوق (40 بكسل * 40 بكسل).
	</li>
	<li>
		صندوق الإطارات له نفس مساحة صندوق الحواشي، بالإضافة إلى 5 بكسلات تمثل عرض الإطار للحواف الأربع. وتكون مساحة الصندوق الكلية (50 بكسل * 50 بكسل).
	</li>
	<li>
		أخيرًا، صندوق الهوامش له نفس مساحة صندوق الحواشي بالإضافة إلى 50 بكسل تمثل عرض الهوامش في الحواف الأربع. وتكون مساحة صندوق العنصر الكلية (150 بكسل * 150 بكسل).
	</li>
</ul>

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52881" href="https://academy.hsoub.com/uploads/monthly_2020_11/box-model-2.png.d44147635e0216865026b45c5372416b.png" rel="" data-fileext="png"><img alt="box-model-2.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52881" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/box-model-2.png.d44147635e0216865026b45c5372416b.png"></a>
</p>

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

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

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52882" href="https://academy.hsoub.com/uploads/monthly_2020_11/box-model-3.png.b3f48b71a9ee3d0fb6a9f74183649f75.png" rel="" data-fileext="png"><img alt="box-model-3.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52882" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/box-model-3.png.b3f48b71a9ee3d0fb6a9f74183649f75.png"></a>
</p>

<h2>
	تعديل النموذج الصندوقي باستخدام الخاصية <code>box-sizing</code>
</h2>

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

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_9" style=""><span class="pln">textarea </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%;</span><span class="pln">
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3px</span><span class="pun">;</span><span class="pln">
    box</span><span class="pun">-</span><span class="pln">sizing</span><span class="pun">:</span><span class="pln"> content</span><span class="pun">-</span><span class="pln">box</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* default value */</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	بما أن الحواشي ستضاف لعرض العنصر <code>textarea</code>، يصبح عرض العنصر الناتج أكبر من 100%.
</p>

<p>
	لحسن الحظ، تمكننا CSS من تعديل النموذج الصندوقي للعنصر باستخدام خاصية <code>box-sizing</code> التي يمكن أن تأخذ إحدى القيم التالية لضبط النموذج الصندوقي للعنصر:
</p>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				المعامل
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				content-box
			</td>
			<td style="text-align:right">
				عرض وارتفاع العنصر يتضمن فقط مساحة المحتوى دون الحاشية والإطار.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				padding-box
			</td>
			<td style="text-align:right">
				عرض وارتفاع العنصر يتضمن مساحة المحتوى والحاشية فقط باستثناء الإطار
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				border-box
			</td>
			<td style="text-align:right">
				عرض وارتفاع العنصر، يتضمن مساحة المحتوى والحاشية والإطار.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				initial
			</td>
			<td style="text-align:right">
				تُطبِّق القيمة الإبتدائية للنموذج الصندوقي
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				inherit
			</td>
			<td style="text-align:right">
				تُوَرِّث النموذج الصندوقي للعنصر الأب.
			</td>
		</tr>
	</tbody>
</table>
<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>
<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52878" href="https://academy.hsoub.com/uploads/monthly_2020_11/1ZiRc.png.49aefc3aebde80c4d9f9761c459581aa.png" rel="" data-fileext="png"><img alt="1ZiRc.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52878" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/1ZiRc.png.49aefc3aebde80c4d9f9761c459581aa.png"></a>
</p>

<p>
	لحل مشكلة عنصر <code>textarea</code> في المثال السابق، يمكن تغيير قيمة الخاصية <code>box-sizing</code> إلى <code>padding-box</code> أو <code>border-box</code> والأخيرة هي الأكثر إنتشارًا.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_11" style=""><span class="pln">textarea </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%;</span><span class="pln">
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3px</span><span class="pun">;</span><span class="pln">
    box</span><span class="pun">-</span><span class="pln">sizing</span><span class="pun">:</span><span class="pln"> border</span><span class="pun">-</span><span class="pln">box</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

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

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_13" style=""><span class="pln">html </span><span class="pun">{</span><span class="pln">
    box</span><span class="pun">-</span><span class="pln">sizing</span><span class="pun">:</span><span class="pln"> border</span><span class="pun">-</span><span class="pln">box</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="pun">*:</span><span class="pln">before</span><span class="pun">,</span><span class="pln"> </span><span class="pun">*:</span><span class="pln">after </span><span class="pun">{</span><span class="pln">
    box</span><span class="pun">-</span><span class="pln">sizing</span><span class="pun">:</span><span class="pln"> inherit</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	في هذه الشيفرة، لا تطبق الخاصية <code>;box-sizing: border-box</code> مباشرة على كل العناصر(*)، بالتالي يمكنك بسهولة استبدالها في العناصر كلٌّ على حدة.
</p>

<h2>
	الهوامش (Margins)
</h2>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				المعامل
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				0
			</td>
			<td style="text-align:right">
				يحذف جميع الهوامش الخاصة بالعنصر.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				auto
			</td>
			<td style="text-align:right">
				يستعمل للتوسيط بإضافة هوامش متساوية على الجانبين.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				units
			</td>
			<td style="text-align:right">
				انظر قسم الوحدات لمعرفة الوحدات المتاحة.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				inherit
			</td>
			<td style="text-align:right">
				تُوَرِّث قيمة الهامش من العنصر الأب.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				initial
			</td>
			<td style="text-align:right">
				تُطبِّق القيمة الإبتدائية للهامش.
			</td>
		</tr>
	</tbody>
</table>

<h3>
	تداخل الهوامش (Margin Collapsing)
</h3>

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

<p>
	<strong>مثال لتداخل الهوامش الرأسية</strong>
</p>

<ul>
	<li>
		ملف CSS:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_16" style=""><span class="pln">  div </span><span class="pun">{</span><span class="pln">
      margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<ul>
	<li>
		ملف HTML:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3651_18" style=""><span class="pln">  </span><span class="tag">&lt;div&gt;</span><span class="pln">
      some content
  </span><span class="tag">&lt;/div&gt;</span><span class="pln">
  </span><span class="tag">&lt;div&gt;</span><span class="pln">
      some more content
  </span><span class="tag">&lt;/div&gt;</span></pre>

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

<p>
	<strong>مثال لتداخل الهوامش الأفقية</strong>
</p>

<ul>
	<li>
		ملف CSS:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_20" style=""><span class="pln">  span </span><span class="pun">{</span><span class="pln">
      margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<ul>
	<li>
		ملف HTML:
	</li>
</ul>

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

<p>
	وتكون المسافة الأفقية بين العنصرين 20 بكسل، أي أنها تساوي مجموع الهوامش الأفقية للعنصرين.
</p>

<p>
	<strong>تداخل الهوامش ذات الأبعاد المختلفة</strong>
</p>

<ul>
	<li>
		ملف CSS:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_24" style=""><span class="pln">  </span><span class="pun">.</span><span class="pln">top </span><span class="pun">{</span><span class="pln">
      margin</span><span class="pun">:</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="pun">.</span><span class="pln">bottom </span><span class="pun">{</span><span class="pln">
      margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">15px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<ul>
	<li>
		ملف HTML:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3651_26" style=""><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">"top"</span><span class="tag">&gt;</span><span class="pln">
      some content
  </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">"bottom"</span><span class="tag">&gt;</span><span class="pln">
      some more content
  </span><span class="tag">&lt;/div&gt;</span></pre>

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

<ul>
	<li>
		ملف CSS:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_28" style=""><span class="pln">  </span><span class="pun">.</span><span class="pln">outer</span><span class="pun">-</span><span class="pln">top </span><span class="pun">{</span><span class="pln">
      margin</span><span class="pun">:</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="pun">.</span><span class="pln">inner</span><span class="pun">-</span><span class="pln">top </span><span class="pun">{</span><span class="pln">
      margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">15px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">outer</span><span class="pun">-</span><span class="pln">bottom </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="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">inner</span><span class="pun">-</span><span class="pln">bottom </span><span class="pun">{</span><span class="pln">
      margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">25px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<ul>
	<li>
		ملف HTML:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3651_30" style=""><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">"outer-top"</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">"inner-top"</span><span class="tag">&gt;</span><span class="pln">
          some content
      </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">"outer-bottom"</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">"inner-bottom"</span><span class="tag">&gt;</span><span class="pln">
          some more content
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	بما أنَّ جميع الهوامش متداخلة، تكون المسافة بين النصين 25 بكسل.
</p>

<p>
	<strong>ماذا يحدث في حال إضافة إطارات حول العناصر؟</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_32" style=""><span class="pln">  div </span><span class="pun">{</span><span class="pln">
      border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> solid red</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

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

<p>
	<strong>تداخل هوامش العنصر الأب مع هوامش ابنه</strong>
</p>

<ul>
	<li>
		ملف HTML:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3651_34" style=""><span class="pln">  </span><span class="tag">&lt;h1&gt;</span><span class="pln">Title</span><span class="tag">&lt;/h1&gt;</span><span class="pln">
  </span><span class="tag">&lt;div&gt;</span><span class="pln">
      </span><span class="tag">&lt;p&gt;</span><span class="pln">Paragraph</span><span class="tag">&lt;/p&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span></pre>

<ul>
	<li>
		ملف CSS:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_36" style=""><span class="pln">  h1 </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">
      background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> </span><span class="com">#cff;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  div </span><span class="pun">{</span><span class="pln">
      margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</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">0</span><span class="pun">;</span><span class="pln">
      background</span><span class="pun">:</span><span class="pln"> </span><span class="com">#cfc;</span><span class="pln">
  </span><span class="pun">}</span><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">25px</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">0</span><span class="pun">;</span><span class="pln">
      background</span><span class="pun">:</span><span class="pln"> </span><span class="com">#cf9;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	في المثال أعلاه، تكون المسافة الرأسية بين عنصر العنوان الرئيسي <code>h1</code> وعنصر الفقرات <code>p</code> هي 50 بكسل (مساحة الهامش الأكبر)، قد تتوقع أن تكون المسافة بينهما 75 بكسل (لأن الحاوية <code>div</code> لديها هامش علوي بارتفاع 50 بكسل وعنصر الفقرات p لديه هامش علوي بارتفاع 25 بكسل)، لكن لا يحدث هذا بسبب تداخل الهوامش.
</p>

<h3>
	إضافة هامش باتجاه محدد
</h3>

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

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_38" style=""><span class="pln">margin</span><span class="pun">-</span><span class="pln">left
margin</span><span class="pun">-</span><span class="pln">right
margin</span><span class="pun">-</span><span class="pln">top
margin</span><span class="pun">-</span><span class="pln">bottom</span></pre>

<p>
	الشيفرة أدناه تُضيف هامشًا أيسر بعرض 30 بكسل للحاوية <code>myDiv#</code>.
</p>

<ul>
	<li>
		ملف HTML:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3651_40" style=""><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">"myDiv"</span><span class="tag">&gt;&lt;/div&gt;</span></pre>

<ul>
	<li>
		ملف CSS:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_42" style=""><span class="pln">  </span><span class="com">#myDiv {</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">30px</span><span class="pun">;</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">40px</span><span class="pun">;</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">40px</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"> red</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				المعامل
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				margin-left
			</td>
			<td style="text-align:right">
				اتجاه إضافة الهامش.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				30px
			</td>
			<td style="text-align:right">
				عرض الهامش.
			</td>
		</tr>
	</tbody>
</table>

<p>
	<strong>الصياغة المختزلة للخاصية margin</strong>
</p>

<p>
	توضح الشيفرة التالية كيفية استخدام الصياغة المختزلة للخاصية margin:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_44" style=""><span class="pln">margin</span><span class="pun">:</span><span class="pln"> </span><span class="str">&lt;top&gt;</span><span class="pln"> </span><span class="str">&lt;right&gt;</span><span class="pln"> </span><span class="str">&lt;bottom&gt;</span><span class="pln"> </span><span class="str">&lt;left&gt;</span><span class="pun">;</span></pre>

<p>
	الشيفرة التالية تُضيف هامشًا للحافة العليا بارتفاع صفر بكسل (أي لا يوجد هامش علوي)، وهامشًا للحافة اليُمنى بعرض 10 بكسلات، وهامشًا للحافة السُفلي بارتفاع 50 بكسل، وهامشًا للحافة اليُسرى بعرض 100 بكسل.
</p>

<ul>
	<li>
		ملف HTML:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3651_46" style=""><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">"myDiv"</span><span class="tag">&gt;&lt;/div&gt;</span></pre>

<ul>
	<li>
		ملف CSS:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_48" style=""><span class="pln">  </span><span class="com">#myDiv {</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">10px</span><span class="pln"> </span><span class="lit">50px</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">40px</span><span class="pun">;</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">40px</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"> red</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<h3>
	تبسيط خاصية الهوامش (margin)
</h3>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_50" 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">1px</span><span class="pun">;</span><span class="pln">
    margin</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="pun">;</span><span class="pln">
    margin</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">1px</span><span class="pun">;</span><span class="pln">
    margin</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">1px</span><span class="pln"> </span><span class="lit">1px</span><span class="pun">;</span><span class="pln">

    </span><span class="com">/* جميع القواعد أعلاه تؤدي لنفس النتيجة */</span><span class="pln">    
</span><span class="pun">}</span></pre>

<p>
	<strong>مثال آخر</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_52" 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">10px</span><span class="pln"> </span><span class="lit">15px</span><span class="pun">;</span><span class="pln">
    margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10px</span><span class="pln"> </span><span class="lit">15px</span><span class="pln"> </span><span class="lit">10px</span><span class="pln"> </span><span class="lit">15px</span><span class="pun">;</span><span class="pln">
    margin </span><span class="lit">10px</span><span class="pln"> </span><span class="lit">15px</span><span class="pln"> </span><span class="lit">10px</span><span class="pun">;</span><span class="pln">

    </span><span class="com">/* جميع القواعد أعلاه تؤدي لنفس النتيجة */</span><span class="pln"> 
</span><span class="pun">}</span></pre>

<p>
	<strong>توضح الشيفرة التالية الصيغ العامة لاستعمال خاصية الهامش (margin)</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_54" style=""><span class="pln">margin</span><span class="pun">:</span><span class="pln"> </span><span class="str">&lt;all&gt;</span><span class="pun">;</span><span class="pln">
margin</span><span class="pun">:</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln">top </span><span class="kwd">and</span><span class="pln"> bottom</span><span class="pun">&gt;</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln">left </span><span class="kwd">and</span><span class="pln"> right</span><span class="pun">&gt;;</span><span class="pln">
margin</span><span class="pun">:</span><span class="pln"> </span><span class="str">&lt;top&gt;</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln">left </span><span class="kwd">and</span><span class="pln"> right</span><span class="pun">&gt;</span><span class="pln"> </span><span class="str">&lt;bottom&gt;</span><span class="pun">;</span><span class="pln">
margin</span><span class="pun">:</span><span class="pln"> </span><span class="str">&lt;top&gt;</span><span class="pln"> </span><span class="str">&lt;right&gt;</span><span class="pln"> </span><span class="str">&lt;bottom&gt;</span><span class="pln"> </span><span class="str">&lt;left&gt;</span><span class="pun">;</span></pre>

<h3>
	توسيط العناصر أفقيًا باستخدام خاصية الهامش (margin)
</h3>

<p>
	تُستخدم القاعدة <code>margin: 0 auto</code> لتوسيط العناصر الكُتلية أفقيًا عن طريق إضافة هوامش متساوية يمين ويسار العنصر، ويُشترط أن يكون عرض العنصر المُراد توسيطه أقل من عرض الحاوية.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_56" style=""><span class="com">#myDiv {</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">80</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></pre>

<p>
	استخدمنا في المثال أعلاه الصياغة المختزلة لكتابة الخاصية <code>margin</code> لإضافة هوامش بعرض صفر أعلى وأسفل العنصر (يمكن أن تكون أي قيمة أخرى) ومن ثم استعملنا القيمة <code>auto</code> لإضافة هوامش متساوية يمين ويسار العنصر وبالتالي توسيطه أفقيًا. عرض العنصر <code>myDiv#</code> هو 80% من عرض الحاوية الخارجية له، مما يترك 20% من مساحة الحاوية فارغة. عند تحديد القيمة <code>auto</code> لخاصية <code>margin</code> يُوَزِّع المتصفح هذه المساحة بالتساوي على يمين ويسار االعنصر، أي تكون المسافة على كل جانب 10%.
</p>

<p>
	<strong>مثال</strong>
</p>

<p>
	من الشائع افتراض أن تحديد قيم نسبية للهوامش يكون نسبةً إلى العنصر الأب. هذا الافتراض صحيح بالنسبة للهوامش الأفقية <code>margin-left</code> و <code>margin-right</code>. حيث يكون عرض الهامش نسبيًا لعرض العنصر الأب.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_58" style=""><span class="pun">.</span><span class="pln">parent </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">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">300px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">child </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100p</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">10</span><span class="pun">%;</span><span class="pln"> </span><span class="com">/* parentWidth * 10/100 =&gt; 50px */</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	لكن الأمر يختلف عند الحديث عن الهوامش الرأسية <code>margin-bottom</code> و <code>margin-top</code>، فارتفاع الهامش الرأسي يكون نسبيًا من <strong>عرض</strong> العنصر الأب وليس من ارتفاعه كما يظن البعض.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_60" style=""><span class="pun">.</span><span class="pln">parent </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">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">300px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">child </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</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">10</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="pln"> </span><span class="lit">20</span><span class="pun">%;</span><span class="pln">
</span><span class="pun">}</span></pre>

<h3>
	الهوامش السالبة
</h3>

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

<ul>
	<li>
		ملف CSS:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_62" style=""><span class="pln">  div </span><span class="pun">{</span><span class="pln">
      display</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">inline</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="com">#over {</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="pun">-</span><span class="lit">20px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<ul>
	<li>
		ملف HTML:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3651_64" style=""><span class="pln">  </span><span class="tag">&lt;div&gt;</span><span class="pln">Base div</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">"over"</span><span class="tag">&gt;</span><span class="pln">Overlapping div</span><span class="tag">&lt;/div&gt;</span></pre>

<h2>
	الحواشي (Paddings)
</h2>

<p>
	مساحة الحاشية هي المساحة بين محتوى العنصر والإطار الخارجي له، وتُحدد باستخدام خاصية <code>padding</code>.
</p>

<p>
	يمكنك استعمال الصياغة المختزلة الموضحة في المثال أدناه من تعريف مساحات الحواشي للعنصر بدلًا عن تحديد مساحة الحاشية لكل حافة من حواف العنصر الأربع بخاصية منفردة (عن طريق استخدام <code>padding-top</code>، أو <code>padding-left</code> أو غيرهما).
</p>

<p>
	<strong>في حالة تحديد أربع قيم للخاصية</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3651_66" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    </span><span class="pun">.</span><span class="pln">myDiv </span><span class="pun">{</span><span class="pln">
        padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">25px</span><span class="pln"> </span><span class="lit">50px</span><span class="pln"> </span><span class="lit">75px</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* top right bottom left; */</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&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">"myDiv"</span><span class="tag">&gt;&lt;/div&gt;</span></pre>

<p>
	 
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52893" href="https://academy.hsoub.com/uploads/monthly_2020_11/padding4.png.4bc77ed9238762b0967da5350c488501.png" rel="" data-fileext="png"><img alt="padding4.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52893" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/padding4.png.4bc77ed9238762b0967da5350c488501.png"></a>
</p>

<p>
	<strong>في حالة تحديد ثلاث قيم للخاصية</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3651_68" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    </span><span class="pun">.</span><span class="pln">myDiv </span><span class="pun">{</span><span class="pln">
        padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">25px</span><span class="pln"> </span><span class="lit">50px</span><span class="pln"> </span><span class="lit">75px</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* top left/right bottom; */</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&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">"myDiv"</span><span class="tag">&gt;&lt;/div&gt;</span></pre>

<p>
	 
</p>

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

<p>
	<strong>في حالة تحديد قيمتين للخاصية</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3651_70" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    </span><span class="pun">.</span><span class="pln">myDiv </span><span class="pun">{</span><span class="pln">
        padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">25px</span><span class="pln"> </span><span class="lit">50px</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* top/bottom left/right; */</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&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">"myDiv"</span><span class="tag">&gt;&lt;/div&gt;</span></pre>

<p>
	 
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52891" href="https://academy.hsoub.com/uploads/monthly_2020_11/padding2.png.5f00ad39bd3937be6509106e211514da.png" rel="" data-fileext="png"><img alt="padding2.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52891" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/padding2.png.5f00ad39bd3937be6509106e211514da.png"></a>
</p>

<p>
	<strong>في حالة تحديد قيمة واحدة للخاصية</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3651_72" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    </span><span class="pun">.</span><span class="pln">myDiv </span><span class="pun">{</span><span class="pln">
        padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">25px</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* top/right/bottom/left; */</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&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">"myDiv"</span><span class="tag">&gt;&lt;/div&gt;</span></pre>

<p>
	 
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52890" href="https://academy.hsoub.com/uploads/monthly_2020_11/padding1.png.43e59483404c5716845b2dbf9fc67bd0.png" rel="" data-fileext="png"><img alt="padding1.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52890" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/padding1.png.43e59483404c5716845b2dbf9fc67bd0.png"></a>
</p>

<h3>
	إضافة حاشية باتجاه محدد
</h3>

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

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_74" style=""><span class="pln">padding</span><span class="pun">-</span><span class="pln">top </span><span class="com">/* حاشية علوية */</span><span class="pln">
padding</span><span class="pun">-</span><span class="pln">right </span><span class="com">/* حاشية يُمنى */</span><span class="pln">
padding</span><span class="pun">-</span><span class="pln">bottom </span><span class="com">/* حاشية يُسرى */</span><span class="pln">
padding</span><span class="pun">-</span><span class="pln">left </span><span class="com">/* حاشية سُفلية */</span></pre>

<p>
	تُضيف الشيفرة أدناه حاشية علوية بعرض 5 بكسلات للعنصر.
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3651_76" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    </span><span class="pun">.</span><span class="pln">myClass </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">5px</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&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">"myClass"</span><span class="tag">&gt;&lt;/div&gt;</span></pre>

<h2>
	الإطارات Borders
</h2>

<h3>
	خاصية الأركان المدورة <code>border-radius</code>
</h3>

<p>
	تمكنك خاصية <a href="https://wiki.hsoub.com/CSS/border-radius" rel="external"><code>border-radius</code></a> من تغيير شكل النموذج الصندوقي فيمكن بضبطها تغيير زاوية كل ركن من أركان حواف العنصر.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52884" href="https://academy.hsoub.com/uploads/monthly_2020_11/FnIqF.png.15fa6f8bf0864f648a55cb2428a5d9b8.png" rel="" data-fileext="png"><img alt="FnIqF.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52884" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/FnIqF.png.15fa6f8bf0864f648a55cb2428a5d9b8.png"></a>
</p>

<p>
	تُعرِّف المجموعة الأولى من القيم الانحاء الأفقي للإطار بينما تُعرِّف المجموعة الثانية الاختيارية (المسبوقة بعلامة <code>/</code>) الانحاء الرأسي له. في حال وجود مجموعة واحدة فقط فإنها تُستخدم لتعريف الانحنائات الأفقية والرأسية.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_78" style=""><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">10px</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="lit">20px</span><span class="pln"> </span><span class="lit">25em</span><span class="pln"> </span><span class="lit">30px</span><span class="pln"> </span><span class="lit">35em</span><span class="pun">;</span></pre>

<p>
	تُحدِّد القيمة 10px الانحاء الأفقي للإطار من أعلى اليسار وأسفل اليمين، بينما تحدِّد القيمة 5% الانحاء الأفقي من أعلى اليمين وأسفل اليسار. تُحدِّد الأربع قيم المسبوقة بعلامة <code>/</code> الانحاء الرأسي للإطار من أعلى اليسار، وأعلى اليمين، وأسفل اليمين وأسفل اليسار على الترتيب.
</p>

<p>
	يُوضح المثال التالي كيفية استخدام الصياغة المختزلة لتدوير الإطارات:
</p>

<ul>
	<li>
		ملف HTML:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3651_80" style=""><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">'box'</span><span class="tag">&gt;&lt;/div&gt;</span></pre>

<ul>
	<li>
		ملف CSS:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_82" style=""><span class="pln">  </span><span class="pun">.</span><span class="pln">box</span><span class="pun">{</span><span class="pln">
      width</span><span class="pun">:</span><span class="lit">250px</span><span class="pun">;</span><span class="pln">
      height</span><span class="pun">:</span><span class="lit">250px</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">black</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="lit">10px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	تُحدِّد القيمة 10px انحناء الإطار في الاتجاهات الثمانية المذكورة في الفقرة السابقة.
</p>

<p>
	من الاستخدامات الشائعة لخاصية <code>border-radius</code> استخدامها لتحويل صندوق العنصر لشكل دائري عن طريق إعطائها قيمة مساوية لنصف ارتفاع الصندوق.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_84" style=""><span class="pun">.</span><span class="pln">circle</span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="lit">200px</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="lit">200px</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="lit">100px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	من الشائع استخدام نسب مئوية لتحديد قيمة خاصية <code>border-raduis</code> لتجنُّب حسابها يدويًا.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_86" style=""><span class="pun">.</span><span class="pln">circle</span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="lit">150px</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="lit">150px</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="lit">50</span><span class="pun">%;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	يصبح شكل صندوق العنصر بيضاويًا في حال اختلاف قيمتي الارتفاع والعرض.
</p>

<p>
	<strong>إضافة البوادئ الخاصة بالمتصفحات القديمة إلى الخاصية border-radius</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_88" style=""><span class="pun">{</span><span class="pln"> 
  </span><span class="pun">-</span><span class="pln">webkit</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">right</span><span class="pun">-</span><span class="pln">radius</span><span class="pun">:</span><span class="pln"> </span><span class="lit">4px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">border</span><span class="pun">-</span><span class="pln">bottom</span><span class="pun">-</span><span class="pln">right</span><span class="pun">-</span><span class="pln">radius</span><span class="pun">:</span><span class="pln"> </span><span class="lit">4px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">border</span><span class="pun">-</span><span class="pln">bottom</span><span class="pun">-</span><span class="pln">left</span><span class="pun">-</span><span class="pln">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">webkit</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">left</span><span class="pun">-</span><span class="pln">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">moz</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">topright</span><span class="pun">:</span><span class="pln"> </span><span class="lit">4px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">-</span><span class="pln">moz</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">bottomright</span><span class="pun">:</span><span class="pln"> </span><span class="lit">4px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">-</span><span class="pln">moz</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">bottomleft</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">moz</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">topleft</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</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">right</span><span class="pun">-</span><span class="pln">radius</span><span class="pun">:</span><span class="pln"> </span><span class="lit">4px</span><span class="pun">;</span><span class="pln">
  border</span><span class="pun">-</span><span class="pln">bottom</span><span class="pun">-</span><span class="pln">right</span><span class="pun">-</span><span class="pln">radius</span><span class="pun">:</span><span class="pln"> </span><span class="lit">4px</span><span class="pun">;</span><span class="pln">
  border</span><span class="pun">-</span><span class="pln">bottom</span><span class="pun">-</span><span class="pln">left</span><span class="pun">-</span><span class="pln">radius</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</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">left</span><span class="pun">-</span><span class="pln">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></pre>

<h3>
	خاصية أنماط الإطارات <code>border-style</code>
</h3>

<p>
	تُحدد خاصية <a href="https://wiki.hsoub.com/CSS/border-style" rel="external"><code>border-style</code></a> شكل خط الإطار الخاص بالعنصر لجميع حواف (الأيمن والأيسر والعلوي والسفلي) ويمكن أن تأخذ من قيمة واحدة إلى أربع قيم، تُحدد كلٌّ منها شكل خط الإطار لأحد الحواف.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_90" style=""><span class="pln">border</span><span class="pun">-</span><span class="pln">style</span><span class="pun">:</span><span class="pln"> dotted</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"> dotted solid </span><span class="kwd">double</span><span class="pln"> dashed</span><span class="pun">;</span></pre>

<p>
	 
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52885" href="https://academy.hsoub.com/uploads/monthly_2020_11/gieW6.png.788b5ac6512004ff213f381eb85d0e4f.png" rel="" data-fileext="png"><img alt="gieW6.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52885" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/gieW6.png.788b5ac6512004ff213f381eb85d0e4f.png"></a>
</p>

<p>
	و بشكل عام يُحدَّد شكل خط الإطار لحواف العنصر حسب الترتيب التالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_92" style=""><span class="pln">border</span><span class="pun">-</span><span class="pln">style</span><span class="pun">:</span><span class="pln"> </span><span class="pun">&lt;</span><span class="pln">ALL</span><span class="pun">&gt;;</span><span class="pln"> </span><span class="com">/* القيمة الواحدة تحدد شكل خط الإطار لجميع الأوجه*/</span><span class="pln">
border</span><span class="pun">-</span><span class="pln">style</span><span class="pun">:</span><span class="pln"> </span><span class="str">&lt;top&gt;</span><span class="pln"> </span><span class="str">&lt;right&gt;</span><span class="pln"> </span><span class="str">&lt;bottom&gt;</span><span class="pln"> </span><span class="str">&lt;left&gt;</span><span class="pun">;</span></pre>

<p>
	يمكن أن تأخذ خاصية <code>border-style</code> القيم <code>none</code> أو <code>hidden</code> ولهما نفس التأثير، إلَّا أن <code>hidden</code> تستخدم لحل مشكلة تداخل إطارات عنصر الجداول
</p>

<p>
	مع إطارات خلايا الجدول حيث تُخفي اطارات الخلايا. بينما <code>none</code> تسبب في تداخل الإطارات المتلامسة وظهورها بسُمك يساوي مجموع سُمكي إطار الجدول وإطار الخلية.
</p>

<h3>
	إنشاء إطارات متعددة
</h3>

<h4>
	استخدام <code>outline</code>
</h4>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_94" style=""><span class="pun">.</span><span class="pln">div1</span><span class="pun">{</span><span class="pln">
    border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3px</span><span class="pln"> solid black</span><span class="pun">;</span><span class="pln">
    outline</span><span class="pun">:</span><span class="pln"> </span><span class="lit">6px</span><span class="pln"> solid blue</span><span class="pun">;</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</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="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<h4>
	استخدام <code>box-shadow</code>
</h4>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_96" style=""><span class="pun">.</span><span class="pln">div2</span><span class="pun">{</span><span class="pln">
    border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">5px</span><span class="pln"> solid green</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"> </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">4px</span><span class="pln"> </span><span class="com">#000;</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</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="pun">;</span><span class="pln"> 
</span><span class="pun">}</span></pre>

<h4>
	استخدام العناصر الزائفة (pseudo elements)
</h4>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_98" style=""><span class="pun">.</span><span class="pln">div3 </span><span class="pun">{</span><span class="pln">  
   position</span><span class="pun">:</span><span class="pln"> relative</span><span class="pun">;</span><span class="pln">  
   border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">5px</span><span class="pln"> solid </span><span class="com">#000;  </span><span class="pln">
   width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">  height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</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="pun">;</span><span class="pln"> 
</span><span class="pun">}</span><span class="pln"> 
</span><span class="pun">.</span><span class="pln">div3</span><span class="pun">:</span><span class="pln">before </span><span class="pun">{</span><span class="pln">  
    content</span><span class="pun">:</span><span class="pln"> </span><span class="str">" "</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">  
    border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">5px</span><span class="pln"> solid blue</span><span class="pun">;</span><span class="pln">  
    z</span><span class="pun">-</span><span class="pln">index</span><span class="pun">:</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1</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="pun">;</span><span class="pln">  
    left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">5px</span><span class="pun">;</span><span class="pln">  
    right</span><span class="pun">:</span><span class="pln"> </span><span class="lit">5px</span><span class="pun">;</span><span class="pln">  
    bottom</span><span class="pun">:</span><span class="pln"> </span><span class="lit">5px</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="52889" href="https://academy.hsoub.com/uploads/monthly_2020_11/lta3P.png.2a97f9dfe72958850e77265d87af6e3f.png" rel="" data-fileext="png"><img alt="lta3P.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52889" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/lta3P.png.2a97f9dfe72958850e77265d87af6e3f.png"></a>
</p>

<p>
	اطّلع على تجربة حيّة لهذا المثال على <a href="http://jsfiddle.net/MadalinaTn/bvqpcohm/2/" rel="external nofollow">JSFiddle</a>.
</p>

<h3>
	الصياغة المختزلة لإنشاء الإطارات
</h3>

<p>
	تحتاج في معظم الحالات لتعريف العديد من الخصائص للإطار مثل <code>border-width</code>، و<code>border-style</code>، و<code>border-color</code> لكل أوجه العنصر، يُمكنك في هذه الحالات استعمال الصياغة المختزلة الموضحة في المثال التالي:
</p>

<p>
	<strong>عوضاً عن كتابة</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_100" style=""><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"> 
border</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> </span><span class="com">#000;</span></pre>

<p>
	<strong>يمكنك كتابة</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_102" style=""><span class="pln">border</span><span class="pun">:</span><span class="lit">1px</span><span class="pln"> solid </span><span class="com">#000;</span></pre>

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

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_104" style=""><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">2px</span><span class="pln"> </span><span class="kwd">double</span><span class="pln"> </span><span class="com">#aaaaaa;</span></pre>

<h3>
	خاصية تداخل الإطارات <code>border-collapse</code>
</h3>

<p>
	تعمل خاصية <code>border-collapse</code> فقط على الجداول والعناصر المعروضة كجدوال (أي تمتلك القاعدة <code>display: table</code> أو <code>display: inline-table</code>)، وتحدد ما إذا كان إطار الجدول منفصلًا عن إطار الخلايا أم أنه مُدمج معها (أي تتشارك الخلايا المتجاورة الإطار مع بعضها البعض).
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_106" style=""><span class="pln">table </span><span class="pun">{</span><span class="pln">  
    border</span><span class="pun">-</span><span class="pln">collapse</span><span class="pun">:</span><span class="pln"> separate</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* default */</span><span class="pln">  
    border</span><span class="pun">-</span><span class="pln">spacing</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2px</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* تضيف فراغ بين الإطارات المتلامسة */</span><span class="pln"> 
</span><span class="pun">}</span></pre>

<p>
	لمزيد من المعلومات انظر <a href="https://wiki.hsoub.com/CSS/border-collapse" rel="external">توثيق خاصية <code>border-collapse</code></a>.
</p>

<h3>
	خاصية <code>border-image</code>
</h3>

<p>
	تسمح هذه الخاصية برسم صورة على إطار العنصر، مما يُسَهِّل عملية إنشاء إطارات ذات مظهر مخصص. وتستخدم هذه الخاصية بدلًا من أشكال الإطارات المُعرَّفة عبر الخاصية <code>border-style</code>.
</p>

<p>
	تتكون خاصية <code>border-image</code> من ثلاث خصائص هي:
</p>

<ul>
	<li>
		<code>border-image-source</code>: تحدد مسار الصورة المراد استخدامها كإطار.
	</li>
	<li>
		<code>border-image-slice</code>: تُقسِّم الصورة المحددة عبر الخاصية <code>border-image-source</code> إلى تسع مناطق، الأركان الأربعة، والحواف، والوسط.
	</li>
	<li>
		<code>border-image-repeat</code>: تُعرِّف كيفية عرض الجزء الأوسط من الصورة لكي تُطابق أبعاد الإطار. ويمكن استخدام قيمة واحدة لهذه الخاصية لضبط سلوك جميع الحواف، أو يمكن تحديد قيمتين لضبط سلوك الحواف الأفقية والرأسية كلًأ على حدة.
	</li>
</ul>

<p>
	<strong>مثال باستخدام صورة بحجم 90 بكسل * 90 بكسل</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_108" style=""><span class="pln">border</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="str">"border.png"</span><span class="pun">)</span><span class="pln"> </span><span class="lit">30</span><span class="pln"> stretch</span><span class="pun">;</span></pre>

<p>
	تُقسَّم الصورة في المثال أعلاه لتسع مناطق كل واحدة بحجم 30 بكسل * 30 بكسل. وتستخدم حواف الصورة كأركان للإطار والجوانب الأربعة لها تُمثل أوجه الإطار. وتتمدد الصورة لتُغطي كل العنصر في حال زيادة ارتفاعه عن 30 بكسل.
</p>

<h3>
	إنشاء إطارات متعددة الألوان باستخدام خاصية <code>border-image</code>
</h3>

<ul>
	<li>
		ملف CSS:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_110" style=""><span class="pun">.</span><span class="pln">bordered </span><span class="pun">{</span><span class="pln">  
    border</span><span class="pun">-</span><span class="pln">image</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"> red </span><span class="lit">20</span><span class="pun">%,</span><span class="pln"> green </span><span class="lit">20</span><span class="pun">%,</span><span class="pln"> green </span><span class="lit">40</span><span class="pun">%,</span><span class="pln"> blue </span><span class="lit">40</span><span class="pun">%,</span><span class="pln"> blue </span><span class="lit">60</span><span class="pun">%,</span><span class="pln"> maroon </span><span class="lit">60</span><span class="pun">%,</span><span class="pln"> maroon </span><span class="lit">80</span><span class="pun">%,</span><span class="pln"> chocolate </span><span class="lit">80</span><span class="pun">%);</span><span class="pln"> </span><span class="com">/* gradient with required colors */</span><span class="pln">  
    border</span><span class="pun">-</span><span class="pln">image</span><span class="pun">-</span><span class="pln">slice</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln"> 
</span><span class="pun">}</span></pre>

<ul>
	<li>
		ملف HTML:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_112" style=""><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">'bordered'</span><span class="tag">&gt;</span><span class="pln">Border on all sides</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	يرسم المثال أعلاه إطارًا مكون من 5 الوان عُرِّفت باستخدام التدرج الخطي <code>linear-gradient</code> (يمكنك زيارة التوثيق لمزيد من العلومات عن هذه الخاصية و<a href="https://wiki.hsoub.com/CSS/border-image-slice" rel="external">خاصية <code>border-image-slice</code></a> ).
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52897" href="https://academy.hsoub.com/uploads/monthly_2020_11/YWzek.png.7c49202086f59311a9f531933c7f6997.png" rel="" data-fileext="png"><img alt="YWzek.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52897" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/YWzek.png.7c49202086f59311a9f531933c7f6997.png"></a>
</p>

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

<p>
	تُحدَّد الاتجاهات التي تأخذ اللون الواحد عبر تعريف التدرج اللوني، إذا كان التدرج من اليسار إلى اليمين يأخذ الإطار الأيسر أول لون في التدرج بينما يأخذ الإطار الأيمن آخر لون في التدرج. وإذا كان التدرج من أعلى لأسفل يأخذ الإطار العُلوي أول لون في التدرج بينما يأخذ الإطار السفلي آخر لون في التدرج.
</p>

<p>
	<strong>مثال يوضح التدرج اللوني من أعلى لأسفل</strong>
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52879" href="https://academy.hsoub.com/uploads/monthly_2020_11/6ihGO.png.683beaa1519cddbfa2d77166f01e1e5e.png" rel="" data-fileext="png"><img alt="6ihGO.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52879" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/6ihGO.png.683beaa1519cddbfa2d77166f01e1e5e.png"></a>
</p>

<p>
	إذا كان المطلوب إضافة إطار باتجاه واحد فقط، يمكن استخدام خاصية <code>border-width</code> وتحديد قيمة العرض بصفر بكسل في الاتجاهات التي لا ترغب في إضافة إطار عليها.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_114" style=""><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">5px</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">0px</span><span class="pln"> </span><span class="lit">0px</span><span class="pun">;</span></pre>

<p>
	 
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52896" href="https://academy.hsoub.com/uploads/monthly_2020_11/wU0fE.png.82aa762842daf50033fed877594232f3.png" rel="" data-fileext="png"><img alt="wU0fE.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52896" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/wU0fE.png.82aa762842daf50033fed877594232f3.png"></a>
</p>

<p>
	<strong>ملاحظة</strong>: لا يمكن تدوير إطارات العناصر التي تمتلك خاصية <code>border-image</code>، واستخدام خاصية <code>border-radius</code> معها يؤدي إلى تدوير الخلفية بدلاً من الإطار.
</p>

<h3>
	إنشاء إطار للعنصر باتجاه محدد
</h3>

<p>
	تستخدم الخاصية <code>border-[left|right|top|bottom]</code><span style="background-color: rgb( var(--theme-area_background_reset) ); color: rgb( var(--theme-text_color) );"> لعمل إطار للعنصر باتجاه محدد، مثلًا الخاصية </span><code style="background-color: rgb( var(--theme-area_background_reset) ); color: rgb( var(--theme-text_color) ); font-size: 16px;">border-left</code><span style="background-color: rgb( var(--theme-area_background_reset) ); color: rgb( var(--theme-text_color) );"> تُضيف الإطار باتجاه اليسار فقط.</span>
</p>

<div style="text-align:left">
	<div style="text-align:right">
		<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_116" style=""><span class="com">#element {    </span><span class="pln">
    border</span><span class="pun">-</span><span class="pln">left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> solid black</span><span class="pun">;</span><span class="pln"> 
</span><span class="pun">}</span></pre>

		<h2>
			حدود العنصر (Outlines)
		</h2>

		<table>
			<thead>
				<tr>
					<th style="text-align:right">
						المعامل
					</th>
					<th style="text-align:right">
						التفاصيل
					</th>
				</tr>
			</thead>
			<tbody>
				<tr>
					<td style="text-align:right">
						dotted
					</td>
					<td style="text-align:right">
						خط حد مُنقَّط
					</td>
				</tr>
				<tr>
					<td style="text-align:right">
						dashed
					</td>
					<td style="text-align:right">
						خط حد متقطع
					</td>
				</tr>
				<tr>
					<td style="text-align:right">
						solid
					</td>
					<td style="text-align:right">
						خط حد متصل
					</td>
				</tr>
				<tr>
					<td style="text-align:right">
						double
					</td>
					<td style="text-align:right">
						خط حد مزدوج
					</td>
				</tr>
				<tr>
					<td style="text-align:right">
						groove
					</td>
					<td style="text-align:right">
						خط حد مموج ثلاثي الأبعاد، يتعمد على قيمة لون خط الحد <code>outline-color</code>
					</td>
				</tr>
				<tr>
					<td style="text-align:right">
						ridge
					</td>
					<td style="text-align:right">
						خط حد ثلاثي الأبعاد، يعتمد على قيمة لون خط الحد <code>outline-color</code>
					</td>
				</tr>
				<tr>
					<td style="text-align:right">
						inset
					</td>
					<td style="text-align:right">
						خط حد داخلي ثلاثي الأبعاد، يعتمد على قيمة لون خط الحد <code>outline-color</code>
					</td>
				</tr>
				<tr>
					<td style="text-align:right">
						outset
					</td>
					<td style="text-align:right">
						خط حد خارجي ثلاثي الأبعاد، يعتمد على قيمة لون خط الحد <code>outline-color</code>
					</td>
				</tr>
				<tr>
					<td style="text-align:right">
						none
					</td>
					<td style="text-align:right">
						حذف خط الحد
					</td>
				</tr>
				<tr>
					<td style="text-align:right">
						hidden
					</td>
					<td style="text-align:right">
						اخفاء خط الحد
					</td>
				</tr>
			</tbody>
		</table>

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

		<p>
			الخصائص الأساسية لحدود العنصر هي: <code>outline-color</code>، و<code>outline-style</code>، و<code>outline-width</code>.
		</p>

		<p>
			<strong>ملاحظة</strong>: على الرغم من التشابه بين حدود العنصر والإطارات في تأثيرهما وطريقة إنشائهما، إلَّا أنهما خاصيتين مختلفتين تمامًا.
		</p>

		<p>
			يوضح المثال التالي كيفية إنشاء حدود العنصر:
		</p>

		<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_118" style=""><span class="pln">outline</span><span class="pun">:</span><span class="lit">1px</span><span class="pln"> solid black</span><span class="pun">;</span></pre>

		<h3>
			خاصية <code>outline-style</code>
		</h3>

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

		<ul>
			<li>
				ملف CSS:
			</li>
		</ul>

		<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_120" style=""><span class="pln">  p</span><span class="pun">{</span><span class="pln">
  border</span><span class="pun">:</span><span class="lit">1px</span><span class="pln"> solid black</span><span class="pun">;</span><span class="pln">
  outline</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln">blue</span><span class="pun">;</span><span class="pln">
  line</span><span class="pun">-</span><span class="pln">height</span><span class="pun">:</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">p1</span><span class="pun">{</span><span class="pln">
      outline</span><span class="pun">-</span><span class="pln">style</span><span class="pun">:</span><span class="pln">dotted</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">p2</span><span class="pun">{</span><span class="pln">
      outline</span><span class="pun">-</span><span class="pln">style</span><span class="pun">:</span><span class="pln">dashed</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">p3</span><span class="pun">{</span><span class="pln">
      outline</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">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">p4</span><span class="pun">{</span><span class="pln">
      outline</span><span class="pun">-</span><span class="pln">style</span><span class="pun">:</span><span class="kwd">double</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">p5</span><span class="pun">{</span><span class="pln">
      outline</span><span class="pun">-</span><span class="pln">style</span><span class="pun">:</span><span class="pln">groove</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">p6</span><span class="pun">{</span><span class="pln">
      outline</span><span class="pun">-</span><span class="pln">style</span><span class="pun">:</span><span class="pln">ridge</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">p7</span><span class="pun">{</span><span class="pln">
      outline</span><span class="pun">-</span><span class="pln">style</span><span class="pun">:</span><span class="pln">inset</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">p8</span><span class="pun">{</span><span class="pln">
      outline</span><span class="pun">-</span><span class="pln">style</span><span class="pun">:</span><span class="pln">outset</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

		<ul>
			<li>
				ملف HTML:
			</li>
		</ul>

		<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3651_122" style=""><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">"p1"</span><span class="tag">&gt;</span><span class="pln">A dotted outline</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">"p2"</span><span class="tag">&gt;</span><span class="pln">A dashed outline</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">"p3"</span><span class="tag">&gt;</span><span class="pln">A solid outline</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">"p4"</span><span class="tag">&gt;</span><span class="pln">A double outline</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">"p5"</span><span class="tag">&gt;</span><span class="pln">A groove outline</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">"p6"</span><span class="tag">&gt;</span><span class="pln">A ridge outline</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">"p7"</span><span class="tag">&gt;</span><span class="pln">A inset outline</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">"p8"</span><span class="tag">&gt;</span><span class="pln">A outset outline</span><span class="tag">&lt;/p&gt;</span></pre>

		<p>
			النتيجة:
		</p>

		<p style="text-align: center;">
			<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52887" href="https://academy.hsoub.com/uploads/monthly_2020_11/KHAoO.png.e82a4f53a81c4d81569a3e616384dc8f.png" rel="" data-fileext="png"><img alt="KHAoO.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52887" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/KHAoO.png.e82a4f53a81c4d81569a3e616384dc8f.png"></a>
		</p>

		<h2>
			الخاصية <code>Overflow</code>
		</h2>

		<table>
			<thead>
				<tr>
					<th style="text-align:right">
						المعامل
					</th>
					<th style="text-align:right">
						الوصف
					</th>
				</tr>
			</thead>
			<tbody>
				<tr>
					<td style="text-align:right">
						visible
					</td>
					<td style="text-align:right">
						تُظهر المحتوى الفائض عن حجم العنصر دون اقتصاص.
					</td>
				</tr>
				<tr>
					<td style="text-align:right">
						hidden
					</td>
					<td style="text-align:right">
						اقتصاص المحتوى الفائض عن حجم العنصر دون إظهار شريط تمرير (scroll bar).
					</td>
				</tr>
				<tr>
					<td style="text-align:right">
						scroll
					</td>
					<td style="text-align:right">
						اقتصاص المحتوى الفائض عن حجم العنصر مع إظهار شريط تمرير (scroll bar).
					</td>
				</tr>
				<tr>
					<td style="text-align:right">
						auto
					</td>
					<td style="text-align:right">
						نفس عمل scroll، لكنها لا تضيف شريط التمرير (scroll bar) في حالة كان حجم المحتوى أقل من أو يساوي حجم الحاوية.
					</td>
				</tr>
				<tr>
					<td style="text-align:right">
						inherit
					</td>
					<td style="text-align:right">
						تُوَرِّث قيمة خاصية overflow الخاصة بالعنصر الأب للابن.
					</td>
				</tr>
			</tbody>
		</table>

		<h3>
			خاصية <code>overflow-wrap</code>
		</h3>

		<p>
			تُخبر الخاصية <a href="https://wiki.hsoub.com/CSS/overflow-wrap" rel="external"><code>overflow-wrap</code></a> المتصفح أنّ بإمكانه تقسيم النصوص والكلمات الطويلة على عدد من الأسطر لمنعها من تجاوز حدود صندوق المحتوى.
		</p>

		<ul>
			<li>
				ملف CSS:
			</li>
		</ul>

		<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_124" style=""><span class="pln">  div </span><span class="pun">{</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
      outline</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> dashed </span><span class="com">#bbb;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="com">#div1 {</span><span class="pln">
      overflow</span><span class="pun">-</span><span class="pln">wrap</span><span class="pun">:</span><span class="pln"> normal</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="com">#div2 {</span><span class="pln">
      overflow</span><span class="pun">-</span><span class="pln">wrap</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">break</span><span class="pun">-</span><span class="pln">word
  </span><span class="pun">}</span></pre>

		<ul>
			<li>
				ملف HTML:
			</li>
		</ul>

		<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3651_126" style=""><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">"div1"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;strong&gt;</span><span class="pln">#div1</span><span class="tag">&lt;/strong&gt;</span><span class="pln">: Small words are displayed normally but a word like </span><span class="tag">&lt;span</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">red</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">supercalifragilisticexpialidocious</span><span class="tag">&lt;/span&gt;</span><span class="pln"> is too long so it will overflow past the edge of the line-break
  </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">"div2"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;strong&gt;</span><span class="pln">#div2</span><span class="tag">&lt;/strong&gt;</span><span class="pln">: Small words are displayed normally, but a long word like </span><span class="tag">&lt;span</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">red</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">supercalifragilisticexpialidocious</span><span class="tag">&lt;/span&gt;</span><span class="pln"> will be split at the line break and continue on the next line.
  </span><span class="tag">&lt;/div&gt;</span></pre>

		<p>
			النتيجة:
		</p>

		<p style="text-align: center;">
			<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52895" href="https://academy.hsoub.com/uploads/monthly_2020_11/VRNhr.png.e321f6946440c3da0967e77cb010ac57.png" rel="" data-fileext="png"><img alt="VRNhr.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52895" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/VRNhr.png.e321f6946440c3da0967e77cb010ac57.png"></a>
		</p>

		<table>
			<thead>
				<tr>
					<th style="text-align:right">
						المعامل
					</th>
					<th style="text-align:right">
						الوصف
					</th>
				</tr>
			</thead>
			<tbody>
				<tr>
					<td style="text-align:right">
						normal
					</td>
					<td style="text-align:right">
						تسمح للكلمة بالخروج من الحاوية إذا كانت أطول منها.
					</td>
				</tr>
				<tr>
					<td style="text-align:right">
						break
					</td>
					<td style="text-align:right">
						تقسم الكلمة على عدد من الأسطر إذا كانت أطول من الحاوية.
					</td>
				</tr>
				<tr>
					<td style="text-align:right">
						inherit
					</td>
					<td style="text-align:right">
						تُوِّرث قيمة overflow-wrap الخاصة بالعنصر الأب للابن.
					</td>
				</tr>
			</tbody>
		</table>

		<h3>
			خاصية <code>overflow-x</code> و <code>overflow-y</code>
		</h3>

		<p>
			تعمل هاتان الخاصيتان عملًا مشابهًا لخاصية <code>overflow</code> ولهما نفس قيمها، الاختلاف هو أن الخاصية <code>overflow-x</code> تعمل في المحور الأفقي فقط بينما تعمل الخاصية <code>overflow-y</code> في المحور الرأسي.
		</p>

		<ul>
			<li>
				ملف HTML:
			</li>
		</ul>

		<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3651_128" style=""><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">"div-x"</span><span class="tag">&gt;</span><span class="pln">
      If this div is too small to display its contents,
      the content to the left and right will be clipped
  </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">"div-y"</span><span class="tag">&gt;</span><span class="pln">
      If this div is too small to display its contents,
      the content to the top and bottom will be clipped
  </span><span class="tag">&lt;/div&gt;</span></pre>

		<ul>
			<li>
				ملف CSS:
			</li>
		</ul>

		<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_130" style=""><span class="pln">  div </span><span class="pun">{</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">200px</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="com">#div-x {</span><span class="pln">
      overflow</span><span class="pun">-</span><span class="pln">x</span><span class="pun">:</span><span class="pln"> hidden</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="com">#div-y {</span><span class="pln">
      overflow</span><span class="pun">-</span><span class="pln">y</span><span class="pun">:</span><span class="pln"> hidden</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

		<h3>
			القاعدة <code>overflow: scroll</code>
		</h3>

		<ul>
			<li>
				ملف HTML:
			</li>
		</ul>

		<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3651_132" style=""><span class="pln">  </span><span class="tag">&lt;div&gt;</span><span class="pln">
      This div is too small to display its contents to display the effects of the overflow property.
  </span><span class="tag">&lt;/div&gt;</span></pre>

		<ul>
			<li>
				ملف CSS:
			</li>
		</ul>

		<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_134" style=""><span class="pln">  div </span><span class="pun">{</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
      overflow</span><span class="pun">:</span><span class="pln"> scroll</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="52888" href="https://academy.hsoub.com/uploads/monthly_2020_11/krWW2.png.497b8a4a968a8ecba59cf242ed6d7ea7.png" rel="" data-fileext="png"><img alt="krWW2.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52888" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/krWW2.png.497b8a4a968a8ecba59cf242ed6d7ea7.png"></a>
		</p>

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

		<h3>
			القاعدة <code>overflow: visible</code>
		</h3>

		<ul>
			<li>
				ملف HTML:
			</li>
		</ul>

		<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3651_136" style=""><span class="pln">  </span><span class="tag">&lt;div&gt;</span><span class="pln">
      Even if this div is too small to display its content, the content is not clipped
  </span><span class="tag">&lt;/div&gt;</span></pre>

		<ul>
			<li>
				ملف CSS:
			</li>
		</ul>

		<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_138" style=""><span class="pln">  div </span><span class="pun">{</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pun">;</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pun">;</span><span class="pln">
      overflow</span><span class="pun">:</span><span class="pln"> visible</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="52886" href="https://academy.hsoub.com/uploads/monthly_2020_11/HLZHC.png.8eb1b92db03cede3041b9e644b078bc3.png" rel="" data-fileext="png"><img alt="HLZHC.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52886" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/HLZHC.png.8eb1b92db03cede3041b9e644b078bc3.png"></a>
		</p>

		<p>
			لاحظ عدم اقتصاص المحتوى عند استعمال القاعدة <code>overflow: visible</code> وإنما يمتد خارج صندوق المحتوى.
		</p>

		<h3>
			سياق تنسيق العناصر الكتلية الناتج عن خاصية <code>overflow</code>
		</h3>

		<p>
			استعمال خاصية <code>overflow</code> بقيمة غير <code>visible</code> يتسبب في إنشاء سياق جديد لتنسيق الكُتل مما يُفيد في محاذاة العناصر الكتلية المجاورة للعناصر العائمة (floated elements).
		</p>

		<ul>
			<li>
				ملف CSS:
			</li>
		</ul>

		<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_3651_140" style=""><span class="pln">  img </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">
      margin</span><span class="pun">-</span><span class="pln">right</span><span class="pun">:</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">

  div </span><span class="pun">{</span><span class="pln">
      overflow</span><span class="pun">:</span><span class="pln"> hidden</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* تًنشيء سياق جديد لتنسيق العناصر الكتلية */</span><span class="pln">
  </span><span class="pun">}</span></pre>

		<ul>
			<li>
				ملف HTML:
			</li>
		</ul>

		<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_3651_142" style=""><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">"http://placehold.it/100*100"</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;p&gt;</span><span class="pln">lorem ipsum dolor sit amet, cum no paulo mollis pertinácia.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
      </span><span class="tag">&lt;p&gt;</span><span class="pln">Ad case omnis nam, mutat deseruisse perseqeris eos ad, in tollit debitis sea.</span><span class="tag">&lt;/p&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="52894" href="https://academy.hsoub.com/uploads/monthly_2020_11/s0Pch.png.b11e40505313b3d915852db8cd6d126a.png" rel="" data-fileext="png"><img alt="s0Pch.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52894" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/s0Pch.png.b11e40505313b3d915852db8cd6d126a.png"></a>
		</p>

		<p>
			ترجمة -وبتصرف- للفصول [Box Model, Margins, Paddings, Borders, Outlines, Overflow] من كتاب <a href="https://goalkicker.com/CSSBook/" rel="external nofollow">CSS Notes for Professionals</a>
		</p>

		<table>
		</table>
	</div>
</div>
]]></description><guid isPermaLink="false">1051</guid><pubDate>Sat, 07 Nov 2020 13:00:00 +0000</pubDate></item><item><title>&#x627;&#x644;&#x62A;&#x62D;&#x643;&#x645; &#x641;&#x64A; &#x62A;&#x62E;&#x637;&#x64A;&#x637; &#x627;&#x644;&#x635;&#x641;&#x62D;&#x629; &#x648;&#x636;&#x628;&#x637; &#x645;&#x62D;&#x627;&#x630;&#x627;&#x629; &#x627;&#x644;&#x639;&#x646;&#x627;&#x635;&#x631; &#x641;&#x64A; CSS</title><link>https://academy.hsoub.com/programming/css/%D8%A7%D9%84%D8%AA%D8%AD%D9%83%D9%85-%D9%81%D9%8A-%D8%AA%D8%AE%D8%B7%D9%8A%D8%B7-%D8%A7%D9%84%D8%B5%D9%81%D8%AD%D8%A9-%D9%88%D8%B6%D8%A8%D8%B7-%D9%85%D8%AD%D8%A7%D8%B0%D8%A7%D8%A9-%D8%A7%D9%84%D8%B9%D9%86%D8%A7%D8%B5%D8%B1-%D9%81%D9%8A-css-r1050/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2020_11/1.png.8d8356176e7163b405a7976c05a7c6d0.png" /></p>
<h2>
	الخاصية <code>display</code>
</h2>
<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>
<p>
	تُحدد الخاصية <code>display</code> ما هو نوع صندوق العرض الذي سيستخدم لعرض العنصر. تؤخذ قيمة الخاصية <code>display</code> في HTML من مواصفة HTML أو من الأنماط الافتراضية للمتصفح أو الأنماط التي يُعرِّفها المستخدم، أما القيمة الافتراضية لخاصية <code>display</code> لمعظم عناصر HTML هي <code>block</code> أو <code>inline</code> (بعض العناصر لها قيم افتراضية أخرى). ويمكن أن تأخذ إحدى القيم التالي:
</p>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				القيمة
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				<code>none</code>
			</td>
			<td style="text-align:right">
				تُخفي العنصر وتمنعه من أن يشغل مساحة في الصفحة.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>block</code>
			</td>
			<td style="text-align:right">
				تعرض العنصر كعنصر كُتَلي (block-element)، يأخذ كل المساحة الأفقية (العرض) المتاحة، وينتقل للسطر التالي بعد نهاية العنصر.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>inline</code>
			</td>
			<td style="text-align:right">
				تعرض العنصر كعنصر سطري (inline-element)، لا يمتلك عرض محدد، ولا ينتقل للسطر التالي بعد نهاية العنصر.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>inline-block</code>
			</td>
			<td style="text-align:right">
				مزيج بين عناصر الكتلة والعناصر السطرية، لا ينتقل للسطر التالي بعد نهاية العنصر ولكن يمكن أن يمتلك عرض محدد.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>inline-flex</code>
			</td>
			<td style="text-align:right">
				تعرض حاوية flex كحاوية سطرية.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>inline-table</code>
			</td>
			<td style="text-align:right">
				تعرض العنصر كجدول سطري.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>grid</code>
			</td>
			<td style="text-align:right">
				لها سلوك مشابه لسلوك عناصر الكتلة، وتُعرض العناصر بداخلها استنادًا إلى النموذج الشبكي (grid model).
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>flex</code>
			</td>
			<td style="text-align:right">
				لها سلوك مشابه لسلوك عناصر الكتلة، وتُعرض العناصر استنادًا إلى نموذج الصندوق المرن(flexbox model).
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>inherit</code>
			</td>
			<td style="text-align:right">
				ترث قيمة الخاصية من العنصر الأب.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>initial</code>
			</td>
			<td style="text-align:right">
				تُرجع القيمة الإبتدائية للخاصية.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>table</code>
			</td>
			<td style="text-align:right">
				تجعل العنصر يسلك سلوك مماثل للعنصر &lt;table&gt;.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>table-cell</code>
			</td>
			<td style="text-align:right">
				تجعل العنصر يسلك سلوك مماثل للعنصر &lt;td&gt;.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>table-column</code>
			</td>
			<td style="text-align:right">
				تجعل العنصر يسلك سلوك مماثل للعنصر &lt;col&gt;.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>table-row</code>
			</td>
			<td style="text-align:right">
				تجعل العنصر يسلك سلوك مماثل للعنصر &lt;tr&gt;.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>list-item</code>
			</td>
			<td style="text-align:right">
				تجعل العنصر يسلك سلوك مماثل للعنصر &lt;li&gt;.
			</td>
		</tr>
	</tbody>
</table>

<h3>
	العناصر السطرية (inline elements)
</h3>

<p>
	تأخذ العناصر السطرية عرض محتواها، ولا يُمكن إضافة عنصر غير سطري (non-inline element) داخل عنصر سطري.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_7" style=""><span class="tag">&lt;span&gt;</span><span class="pln">This is some </span><span class="tag">&lt;b&gt;</span><span class="pln">bold</span><span class="tag">&lt;/b&gt;</span><span class="pln"> text!</span><span class="tag">&lt;/span&gt;</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img alt="tv9k8.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52876" data-unique="s61tchp07" src="https://academy.hsoub.com/uploads/monthly_2020_11/tv9k8.png.d6cf0b90a387d442f3e5a925976b252f.png">
</p>

<h3>
	العناصر الكتلية (block elements)
</h3>

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

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_12" style=""><span class="tag">&lt;div&gt;</span><span class="pln">Hello world!</span><span class="tag">&lt;/div&gt;&lt;div&gt;</span><span class="pln">This is an example!</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img alt="MCTnB.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52875" data-unique="v3xzc4s52" src="https://academy.hsoub.com/uploads/monthly_2020_11/MCTnB.png.aa2cc8dd18f2382c6268452a23001487.png">
</p>

<h3>
	القيمة <code>inline-block</code>
</h3>

<p>
	القيمة <code>inline-block</code> هي مزيج بين خصائص العناصر السطرية وعناصر الكتلة، فهي تعرض العناصر في سطر (صف) واحد تمامًا مثل <code>inline</code> ولكنها تسمح بإستعمال الخواص <code>padding</code>، <code>و margin</code>، و<code>height</code> (والتي ليس لها أثر على العناصر السطرية) معها.
</p>

<p>
	المثال التالي يوضح الفرق بين القيم <code>inline</code>، و <code>block</code>، و <code>inline-block:</code>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_14" style=""><span class="com">&lt;!-- Inline --&gt;</span><span class="pln">
</span><span class="tag">&lt;style&gt;</span><span class="pln">
li </span><span class="pun">{</span><span class="pln">
    display </span><span class="pun">:</span><span class="pln"> </span><span class="kwd">inline</span><span class="pun">;</span><span class="pln">
    background </span><span class="pun">:</span><span class="pln"> lightblue</span><span class="pun">;</span><span class="pln">
    padding</span><span class="pun">:</span><span class="lit">10px</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="lit">2px</span><span class="pun">;</span><span class="pln">
    border</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln">black</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">
</span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span><span class="pln">
</span><span class="tag">&lt;ul&gt;</span><span class="pln">
    </span><span class="tag">&lt;li&gt;</span><span class="pln">First Element </span><span class="tag">&lt;/li&gt;</span><span class="pln">
    </span><span class="tag">&lt;li&gt;</span><span class="pln">Second Element </span><span class="tag">&lt;/li&gt;</span><span class="pln">
    </span><span class="tag">&lt;li&gt;</span><span class="pln">Third Element </span><span class="tag">&lt;/li&gt;</span><span class="pln">
</span><span class="tag">&lt;/ul&gt;</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img alt="eTy8E.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52877" data-unique="lqbaeiocq" src="https://academy.hsoub.com/uploads/monthly_2020_11/eTy8E.png.a0ea0c61a13b5c7843ce67f6ef140913.png">
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_16" style=""><span class="com">&lt;!-- block --&gt;</span><span class="pln">
</span><span class="tag">&lt;style&gt;</span><span class="pln">
li </span><span class="pun">{</span><span class="pln">
    display </span><span class="pun">:</span><span class="pln"> block</span><span class="pun">;</span><span class="pln">
    background </span><span class="pun">:</span><span class="pln"> lightblue</span><span class="pun">;</span><span class="pln">
    padding</span><span class="pun">:</span><span class="lit">10px</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="lit">2px</span><span class="pun">;</span><span class="pln">
    border</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln">black</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">
</span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span><span class="pln">
</span><span class="tag">&lt;ul&gt;</span><span class="pln">
    </span><span class="tag">&lt;li&gt;</span><span class="pln">First Element </span><span class="tag">&lt;/li&gt;</span><span class="pln">
    </span><span class="tag">&lt;li&gt;</span><span class="pln">Second Element </span><span class="tag">&lt;/li&gt;</span><span class="pln">
    </span><span class="tag">&lt;li&gt;</span><span class="pln">Third Element </span><span class="tag">&lt;/li&gt;</span><span class="pln">
</span><span class="tag">&lt;/ul&gt;</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img alt="fJErb.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52867" data-unique="w6fidcomx" src="https://academy.hsoub.com/uploads/monthly_2020_11/fJErb.png.697217e897f44c0ce9ae96ba14289d7b.png">
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_18" style=""><span class="com">&lt;!-- inline-block --&gt;</span><span class="pln">
</span><span class="tag">&lt;style&gt;</span><span class="pln">
li </span><span class="pun">{</span><span class="pln">
    display </span><span class="pun">:</span><span class="pln"> </span><span class="kwd">inline</span><span class="pun">-</span><span class="pln">block</span><span class="pun">;</span><span class="pln">
    background </span><span class="pun">:</span><span class="pln"> lightblue</span><span class="pun">;</span><span class="pln">
    padding</span><span class="pun">:</span><span class="lit">10px</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="lit">2px</span><span class="pun">;</span><span class="pln">
    border</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln">black</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">
</span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span><span class="pln">
</span><span class="tag">&lt;ul&gt;</span><span class="pln">
    </span><span class="tag">&lt;li&gt;</span><span class="pln">First Element </span><span class="tag">&lt;/li&gt;</span><span class="pln">
    </span><span class="tag">&lt;li&gt;</span><span class="pln">Second Element </span><span class="tag">&lt;/li&gt;</span><span class="pln">
    </span><span class="tag">&lt;li&gt;</span><span class="pln">Third Element </span><span class="tag">&lt;/li&gt;</span><span class="pln">
</span><span class="tag">&lt;/ul&gt;</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img alt="RNjHH.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52871" data-unique="uo0w7n7a1" src="https://academy.hsoub.com/uploads/monthly_2020_11/RNjHH.png.cee141c0e0f535232c2cb19e560e1cdd.png">
</p>

<h3>
	اخفاء العناصر
</h3>

<p>
	تُستخدَم القاعدة <code>display: none</code> لإخفاء العنصر ومنعه من أن يشغل مساحة في الصفحة، على عكس القاعدة <code>visibility: hidden</code> والتي تُخفي العنصر ولكن تبقى المساحة التي يشغلها من الصفحة ثابتة مما يؤثر على موضع عرض العناصر التالية له.
</p>

<p>
	<strong>مثال</strong>
</p>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_20" style=""><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">"myDiv"</span><span class="tag">&gt;</span><span class="pln">some content</span><span class="tag">&lt;/div&gt;</span></pre>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_22" style=""><span class="pln">  </span><span class="com">#myDiv {</span><span class="pln">
      display</span><span class="pun">:</span><span class="pln"> none</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<h3>
	إنشاء تخطيط جدول باستخدام العنصر div
</h3>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_24" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    table </span><span class="pun">{</span><span class="pln">
        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="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span><span class="pln">

</span><span class="tag">&lt;table&gt;</span><span class="pln">
    </span><span class="tag">&lt;tr&gt;</span><span class="pln">
        </span><span class="tag">&lt;td&gt;</span><span class="pln">
            I'm a table
        </span><span class="tag">&lt;/td&gt;</span><span class="pln">
    </span><span class="tag">&lt;/tr&gt;</span><span class="pln">
</span><span class="tag">&lt;/table&gt;</span></pre>

<p>
	يُمكن الحصول على نفس ناتج الشيفرة أعلاه باستخدام العنصر <code>div</code> كما هو موضح بالشيفرة التالية:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_26" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    </span><span class="pun">.</span><span class="pln">table</span><span class="pun">-</span><span class="pln">div </span><span class="pun">{</span><span class="pln">
        display</span><span class="pun">:</span><span class="pln"> table</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">.</span><span class="pln">table</span><span class="pun">-</span><span class="pln">row</span><span class="pun">-</span><span class="pln">div </span><span class="pun">{</span><span class="pln">
        display</span><span class="pun">:</span><span class="pln"> table</span><span class="pun">-</span><span class="pln">row</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">.</span><span class="pln">table</span><span class="pun">-</span><span class="pln">cell</span><span class="pun">-</span><span class="pln">div </span><span class="pun">{</span><span class="pln">
        display</span><span class="pun">:</span><span class="pln"> table</span><span class="pun">-</span><span class="pln">cell</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&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">"table-div"</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">"table-row-div"</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">"table-cell-div"</span><span class="tag">&gt;</span><span class="pln">
            I behave like a table
        </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>

<div class="banner-container ipsBox ipsPadding">
	<div class="inner-banner-container">
		<p class="banner-heading">
			دورة تطوير واجهات المستخدم
		</p>

		<p class="banner-subtitle">
			ابدأ عملك الحر بتطوير واجهات المواقع والمتاجر الإلكترونية فور انتهائك من الدورة
		</p>

		<div>
			<a class="ipsButton ipsButton_large ipsButton_primary ipsButton_important" href="https://academy.hsoub.com/learn/front-end-web-development/" rel="">اشترك الآن</a>
		</div>
	</div>

	<div class="banner-img">
		<img alt="دورة تطوير واجهات المستخدم" src="https://academy.hsoub.com/learn/assets/images/courses/front-end-web-development.png">
	</div>
</div>

<h2>
	تخطيط Flexbox
</h2>

<p>
	يستخدم نموذج أو تخطيط Flexbox لتوزيع العناصر في مساحة العرض المتاحة توزيعًا مرنًا بحيث تتمدد أو تنكمش مع تَغَيُّر حجم الشاشة.
</p>

<h3>
	توسيط العناصر أفقيًا ورأسيًا باستخدام تخطيط Flexbox
</h3>

<p>
	إليك مثال حول توسيط عنصر واحد
</p>

<ul>
	<li>
		ملف HTML:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_28" style=""><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">"aligner"</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">"aligner-item"</span><span class="tag">&gt;</span><span class="pln">
          some content
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span></pre>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_32" style=""><span class="pln">  </span><span class="pun">.</span><span class="pln">aligner </span><span class="pun">{</span><span class="pln">
      display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">;</span><span class="pln">
      align</span><span class="pun">-</span><span class="pln">items</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln">
      justify</span><span class="pun">-</span><span class="pln">content</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">aligner</span><span class="pun">-</span><span class="pln">item </span><span class="pun">{</span><span class="pln">
      max</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">
  </span><span class="pun">}</span></pre>

<p>
	اطَّلع على تجربة حيَّة للمثال أعلاه على <a href="http://codepen.io/asim-coder/pen/ZOobqz" rel="external nofollow">Codepen</a>.
</p>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				الخاصية
			</th>
			<th style="text-align:right">
				القيمة
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				align-items
			</td>
			<td style="text-align:right">
				center
			</td>
			<td style="text-align:right">
				تُوسِّط العناصر أفقيًا إذا كان إتجاه الحاوية رأسي، ورأسيًا إذا كان إتجاه الحاوية أفقي.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				justify-content
			</td>
			<td style="text-align:right">
				center
			</td>
			<td style="text-align:right">
				تُوسِّط العناصر أفقيًا إذا كان إتجاه الحاوية أفقي، ورأسيًا إذا كان إتجاه الحاوية رأسي.
			</td>
		</tr>
	</tbody>
</table>

<p>
	<strong>مثال</strong>
</p>

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

<h4>
	التوسيط أفقيًا في حاوية أفقية
</h4>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_36" style=""><span class="pln">div</span><span class="com">#container {</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">;</span><span class="pln">
    flex</span><span class="pun">-</span><span class="pln">direction</span><span class="pun">:</span><span class="pln"> row</span><span class="pun">;</span><span class="pln">
    justify</span><span class="pun">-</span><span class="pln">content</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;">
	<img alt="centering-1.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="52859" data-unique="slmeiq8ns" src="https://academy.hsoub.com/uploads/monthly_2020_11/centering-1.PNG.cd2b26587d210968628ef7f47b26bf5d.PNG">
</p>

<p>
	اطَّلع على تجربة حية للمثال على <a href="https://jsfiddle.net/d6pc5bmd/" rel="external nofollow">JSFiddle</a>.
</p>

<h4>
	التوسيط رأسيًا في حاوية رأسية
</h4>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_38" style=""><span class="pln">div</span><span class="com">#container {</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">;</span><span class="pln">
    flex</span><span class="pun">-</span><span class="pln">direction</span><span class="pun">:</span><span class="pln"> column</span><span class="pun">;</span><span class="pln">
    justify</span><span class="pun">-</span><span class="pln">content</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;">
	<img alt="centering-2.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="52860" data-unique="q1ib9ovjx" src="https://academy.hsoub.com/uploads/monthly_2020_11/centering-2.PNG.10ad67f8b6a2b9b18fe11025b19cf45e.PNG">
</p>

<p>
	اطَّلع على تجربة حية للمثال على <a href="https://jsfiddle.net/d6pc5bmd/1/" rel="external nofollow">JSFiddle</a>.
</p>

<h4>
	التوسيط رأسيًا في حاوية أفقية
</h4>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_40" style=""><span class="pln">div</span><span class="com">#container {</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">;</span><span class="pln">
    flex</span><span class="pun">-</span><span class="pln">direction</span><span class="pun">:</span><span class="pln"> row</span><span class="pun">;</span><span class="pln">
    align</span><span class="pun">-</span><span class="pln">items</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;">
	<img alt="centering-3.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="52861" data-unique="kow0kzpy5" src="https://academy.hsoub.com/uploads/monthly_2020_11/centering-3.PNG.97dbb20f144874d857f969709cd5b41d.PNG">
</p>

<p>
	اطّلع على تجربة حية للمثال على <a href="https://jsfiddle.net/d6pc5bmd/2/" rel="external nofollow">JSFiddle</a>.
</p>

<h4>
	التوسيط أفقيًا في حاوية رأسية
</h4>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_43" style=""><span class="pln">div</span><span class="com">#container {</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">;</span><span class="pln">
    flex</span><span class="pun">-</span><span class="pln">direction</span><span class="pun">:</span><span class="pln"> column</span><span class="pun">;</span><span class="pln">
    align</span><span class="pun">-</span><span class="pln">items</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;">
	<img alt="centering-4.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="52862" data-unique="ixkzofw0w" src="https://academy.hsoub.com/uploads/monthly_2020_11/centering-4.PNG.f918b450f873e28798b7acc05ac90788.PNG">
</p>

<p>
	اطلع على تجربة حية للمثال على <a href="https://jsfiddle.net/d6pc5bmd/3/" rel="external nofollow">JSFiddle</a>.
</p>

<h4>
	التوسيط أفقيًا ورأسيًا في حاوية أفقية
</h4>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_45" style=""><span class="pln">div</span><span class="com">#container {</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">;</span><span class="pln">
    flex</span><span class="pun">-</span><span class="pln">direction</span><span class="pun">:</span><span class="pln"> row</span><span class="pun">;</span><span class="pln">
    justify</span><span class="pun">-</span><span class="pln">content</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln">
    align</span><span class="pun">-</span><span class="pln">items</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;">
	<img alt="centering-5.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="52863" data-unique="wvnu25u7f" src="https://academy.hsoub.com/uploads/monthly_2020_11/centering-5.PNG.f9322f00fe8b29bebffcf51f0d830e53.PNG">
</p>

<p>
	اطلع على تجربة حية للمثال على <a href="https://jsfiddle.net/d6pc5bmd/4/" rel="external nofollow">JSFiddle</a>.
</p>

<h4>
	التوسيط أفقيًا ورأسيًا في حاوية رأسية
</h4>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_47" style=""><span class="pln">div</span><span class="com">#container {</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">;</span><span class="pln">
    flex</span><span class="pun">-</span><span class="pln">direction</span><span class="pun">:</span><span class="pln"> column</span><span class="pun">;</span><span class="pln">
    justify</span><span class="pun">-</span><span class="pln">content</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln">
    align</span><span class="pun">-</span><span class="pln">items</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;">
	<img alt="centering-6.PNG" class="ipsImage ipsImage_thumbnailed" data-fileid="52864" data-unique="d48y5qs8l" src="https://academy.hsoub.com/uploads/monthly_2020_11/centering-6.PNG.7cf0da08bd634c9b44eaab0fc9f63976.PNG">
</p>

<p>
	اطلع على تجربة حية للمثال على <a href="https://jsfiddle.net/d6pc5bmd/5/" rel="external nofollow">JSFiddle</a>.
</p>

<h3>
	إنشاء تذييل ثابت للصفحة باستخدام تخطيط Flexbox
</h3>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_49" style=""><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">"header"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;h2&gt;</span><span class="pln">Header</span><span class="tag">&lt;/h2&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">"content"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;h1&gt;</span><span class="pln">Content</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. Integer nec odio. Praesent libero.
  Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. Duis sagittis
  ipsum. Praesent mauris. Fusce nec tellus sed augue semper porta. Mauris massa. Vestibulum lacinia
  arcu eget nulla. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos
  himenaeos. Curabitur sodales ligula in libero.
      </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">"footer"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;h4&gt;</span><span class="pln">Footer</span><span class="tag">&lt;/h4&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span></pre>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_51" style=""><span class="pln">  html</span><span class="pun">,</span><span class="pln"> body </span><span class="pun">{</span><span class="pln">
      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="pun">}</span><span class="pln">
  body </span><span class="pun">{</span><span class="pln">
      display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">;</span><span class="pln">
      flex</span><span class="pun">-</span><span class="pln">direction</span><span class="pun">:</span><span class="pln"> column</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">content </span><span class="pun">{</span><span class="pln">
      flex</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</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">header</span><span class="pun">,</span><span class="pln"> </span><span class="pun">.</span><span class="pln">footer </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"> grey</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">
      flex</span><span class="pun">:</span><span class="pln"> none</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	اطَّلع على تجربة حيَّة للمثال أعلاه على <a href="https://jsfiddle.net/0t1f84tL/" rel="external nofollow">JSFiddle</a>.
</p>

<h3>
	توزيع العناصر بشكل مثالي داخل الحاوية
</h3>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_53" style=""><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">"flex-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">"flex-item"</span><span class="tag">&gt;</span><span class="pln">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">"flex-item"</span><span class="tag">&gt;</span><span class="pln">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">"flex-item"</span><span class="tag">&gt;</span><span class="pln">3</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">"flex-item"</span><span class="tag">&gt;</span><span class="pln">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">"flex-item"</span><span class="tag">&gt;</span><span class="pln">5</span><span class="tag">&lt;/div&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span></pre>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_55" style=""><span class="pln">  </span><span class="pun">.</span><span class="pln">flex</span><span class="pun">-</span><span class="pln">container </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">#000;</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%;</span><span class="pln">
      display</span><span class="pun">:</span><span class="pln">flex</span><span class="pun">;</span><span class="pln">
      flex</span><span class="pun">-</span><span class="pln">direction</span><span class="pun">:</span><span class="pln"> row</span><span class="pun">;</span><span class="pln">
      flex</span><span class="pun">-</span><span class="pln">wrap</span><span class="pun">:</span><span class="pln"> wrap</span><span class="pun">;</span><span class="pln">
      justify</span><span class="pun">-</span><span class="pln">content</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">-</span><span class="pln">start</span><span class="pun">;</span><span class="pln">
      align</span><span class="pun">-</span><span class="pln">content</span><span class="pun">:</span><span class="pln"> stretch</span><span class="pun">;</span><span class="pln">
      align</span><span class="pun">-</span><span class="pln">items</span><span class="pun">:</span><span class="pln"> stretch</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">flex</span><span class="pun">-</span><span class="pln">item </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">#ccf;</span><span class="pln">
      margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0.1em</span><span class="pun">;</span><span class="pln">
      flex</span><span class="pun">-</span><span class="pln">grow</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
      flex</span><span class="pun">-</span><span class="pln">shrink</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
      flex</span><span class="pun">-</span><span class="pln">basis</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></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img alt="fit.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52866" data-unique="5g15jfdvl" src="https://academy.hsoub.com/uploads/monthly_2020_11/fit.png.29b74bb6846ba82b80abd385f0a390d9.png">
</p>

<p>
	اطلع على تجربة حية لهذا المثال على <a href="https://jsfiddle.net/6gfogoqk/" rel="external nofollow">JSFiddle</a>.
</p>

<h3>
	إنشاء تخطيط Holy Grail باستخدام حاوية flex
</h3>

<p>
	تخطيط <a href="http://alistapart.com/article/holygrail" rel="external nofollow">Holy Grail</a> هو تخطيط يتكون من رأس صفحة (header) بارتفاع ثابت، وثلاثة أعمدة، وذيل صفحة (footer) ثابت.
</p>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_57" style=""><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;header</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"header"</span><span class="tag">&gt;</span><span class="pln">Header</span><span class="tag">&lt;/header&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">"content-body"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;main</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"content"</span><span class="tag">&gt;</span><span class="pln">Content</span><span class="tag">&lt;/main&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">"sidenav"</span><span class="tag">&gt;</span><span class="pln">Nav</span><span class="tag">&lt;/nav&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">"ads"</span><span class="tag">&gt;</span><span class="pln">Ads</span><span class="tag">&lt;/aside&gt;</span><span class="pln">
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">
      </span><span class="tag">&lt;footer</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"footer"</span><span class="tag">&gt;</span><span class="pln">Footer</span><span class="tag">&lt;/footer&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span></pre>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_59" style=""><span class="pln">  body </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">
      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="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">container </span><span class="pun">{</span><span class="pln">
      display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">;</span><span class="pln">
      flex</span><span class="pun">-</span><span class="pln">direction</span><span class="pun">:</span><span class="pln"> column</span><span class="pun">;</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100vh</span><span class="pun">;</span><span class="pln">
  </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">
      flex</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="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">content</span><span class="pun">-</span><span class="pln">body </span><span class="pun">{</span><span class="pln">
      flex</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="kwd">auto</span><span class="pun">;</span><span class="pln">
      display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">;</span><span class="pln">
      flex</span><span class="pun">-</span><span class="pln">direction</span><span class="pun">:</span><span class="pln"> row</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">content</span><span class="pun">-</span><span class="pln">body </span><span class="pun">.</span><span class="pln">content </span><span class="pun">{</span><span class="pln">
      flex</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="kwd">auto</span><span class="pun">;</span><span class="pln">
      overflow</span><span class="pun">:</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">content</span><span class="pun">-</span><span class="pln">body </span><span class="pun">.</span><span class="pln">sidenav </span><span class="pun">{</span><span class="pln">
      order</span><span class="pun">:</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1</span><span class="pun">;</span><span class="pln">
      flex</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">100px</span><span class="pun">;</span><span class="pln">
      overflow</span><span class="pun">:</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">content</span><span class="pun">-</span><span class="pln">body </span><span class="pun">.</span><span class="pln">ads </span><span class="pun">{</span><span class="pln">
      flex</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">100px</span><span class="pun">;</span><span class="pln">
      overflow</span><span class="pun">:</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">footer </span><span class="pun">{</span><span class="pln">
      flex</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="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	اطلع على تجربة حية لهذا المثال على <a href="https://jsfiddle.net/adityarb88/hek6ms0x/" rel="external nofollow">JSFiddle</a>.
</p>

<h3>
	محاذاة الأزرار داخل البطاقات باستخدام حاوية flex
</h3>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52857" href="https://academy.hsoub.com/uploads/monthly_2020_11/buttons-1.png.e1cf7432d60c4b66ffb7852c92b7975e.png" rel="" data-fileext="png"><img alt="buttons-1.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52857" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/buttons-1.png.e1cf7432d60c4b66ffb7852c92b7975e.png"></a>
</p>

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

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_61" style=""><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">"cards"</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="tag">&lt;p&gt;</span><span class="pln">Lorem ipsum Magna proident ex anim dolor ullamco pariatur reprehenderit culpa esse enim
          mollit labore dolore voluptate ullamco et ut sed qui minim.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
          </span><span class="tag">&lt;p&gt;&lt;button&gt;</span><span class="pln">Action</span><span class="tag">&lt;/button&gt;&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">"card"</span><span class="tag">&gt;</span><span class="pln">
          </span><span class="tag">&lt;p&gt;</span><span class="pln">Lorem ipsum Magna proident ex anim dolor ullamco pariatur reprehenderit culpa esse enim
          mollit labore dolore voluptate ullamco et ut sed qui minim.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
          </span><span class="tag">&lt;p&gt;</span><span class="pln">Lorem ipsum Magna proident ex anim dolor ullamco pariatur reprehenderit culpa esse enim
          mollit labore dolore voluptate ullamco et ut sed qui minim.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
          </span><span class="tag">&lt;p&gt;</span><span class="pln">Lorem ipsum Magna proident ex anim dolor ullamco pariatur reprehenderit culpa esse enim
          mollit labore dolore voluptate ullamco et ut sed qui minim.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
          </span><span class="tag">&lt;p&gt;</span><span class="pln">Lorem ipsum Magna proident ex anim dolor ullamco pariatur reprehenderit culpa esse enim
          mollit labore dolore voluptate ullamco et ut sed qui minim.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
          </span><span class="tag">&lt;p&gt;&lt;button&gt;</span><span class="pln">Action</span><span class="tag">&lt;/button&gt;&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>display: flex</code> على الحاوية للحصول على عمودين متساويين في الارتفاع.
</p>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_63" style=""><span class="pln">  </span><span class="pun">.</span><span class="pln">cards </span><span class="pun">{</span><span class="pln">
      display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">card </span><span class="pun">{</span><span class="pln">
      border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> solid </span><span class="com">#ccc;</span><span class="pln">
      margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10px</span><span class="pln"> </span><span class="lit">10px</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">20px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  button </span><span class="pun">{</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">40px</span><span class="pun">;</span><span class="pln">
      background</span><span class="pun">:</span><span class="pln"> </span><span class="com">#fff;</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">40px</span><span class="pun">;</span><span class="pln">
      border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> solid </span><span class="com">#000;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">p
  </span><span class="pun">:</span><span class="kwd">last</span><span class="pun">-</span><span class="pln">child </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="52858" href="https://academy.hsoub.com/uploads/monthly_2020_11/buttons-2.png.b4280296e1827cc0e48854606277dfff.png" rel="" data-fileext="png"><img alt="buttons-2.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52858" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/buttons-2.png.b4280296e1827cc0e48854606277dfff.png"></a>
</p>

<p>
	لدفع الزر إلى أسفل البطاقة يجب إضافة القاعدة <code>display: flex</code> للبطاقة، وتحديد اتجاه الحاوية ليكون عموديًا باستخدام القاعدة <code>flex-direction: column</code>، وأخيرًأ نُطبق القاعدة <code>margin-top: auto</code> على آخر عنصر داخل البطاقة لدفعه إلى أسفلها.
</p>

<ul>
	<li>
		ملف CSS النهائي
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_65" style=""><span class="pln">  </span><span class="pun">.</span><span class="pln">cards </span><span class="pun">{</span><span class="pln">
      display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">card </span><span class="pun">{</span><span class="pln">
      border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> solid </span><span class="com">#ccc;</span><span class="pln">
      margin</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10px</span><span class="pln"> </span><span class="lit">10px</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">20px</span><span class="pun">;</span><span class="pln">
      display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">;</span><span class="pln">
      flex</span><span class="pun">-</span><span class="pln">direction</span><span class="pun">:</span><span class="pln"> column</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  button </span><span class="pun">{</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">40px</span><span class="pun">;</span><span class="pln">
      background</span><span class="pun">:</span><span class="pln"> </span><span class="com">#fff;</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">40px</span><span class="pun">;</span><span class="pln">
      border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> solid </span><span class="com">#000;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">p
  </span><span class="pun">:</span><span class="kwd">last</span><span class="pun">-</span><span class="pln">child </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">
      margin</span><span class="pun">-</span><span class="pln">top</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">auto</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<h3>
	إنشاء حاويات متداخلة بارتفاعات متساوية
</h3>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_67" style=""><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">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"> red</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">
          Some </span><span class="tag">&lt;br</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
          data </span><span class="tag">&lt;br</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
          to make </span><span class="tag">&lt;br</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
          a height </span><span class="tag">&lt;br</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</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"> blue</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">
          Fewer </span><span class="tag">&lt;br</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
          lines </span><span class="tag">&lt;br</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></pre>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_69" style=""><span class="pln">  </span><span class="pun">.</span><span class="pln">container </span><span class="pun">{</span><span class="pln">
      display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">;</span><span class="pln">
      align</span><span class="pun">-</span><span class="pln">items</span><span class="pun">:</span><span class="pln"> stretch
  </span><span class="pun">}</span></pre>

<p>
	اطلع على تجربة حية على <a href="https://jsfiddle.net/3wwh7ewp/" rel="external nofollow">JSFiddle</a>.
</p>

<p>
	<strong>ملاحظة</strong>: <a href="https://caniuse.com/#search=flexbox" rel="external nofollow">لا تعمل هذه الطريقة على متصفح IE9 والإصدارات السابقة له</a>.
</p>

<h2>
	التخطيط الشبكي (Grid)
</h2>

<p>
	يُستخدم التخطيط الشبكي لتقسيم الصفحة إلى صفوف وأعمدة.
</p>

<p>
	<strong>القيم المتاحة للخاصية</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_71" style=""><span class="pln">display</span><span class="pun">:</span><span class="pln"> grid </span><span class="pun">/</span><span class="pln"> </span><span class="kwd">inline</span><span class="pun">-</span><span class="pln">grid</span></pre>

<p>
	<strong>مثال</strong>
</p>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_73" style=""><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">"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">"item1"</span><span class="tag">&gt;</span><span class="pln">Item1</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">"item2"</span><span class="tag">&gt;</span><span class="pln">Item2</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">"item3"</span><span class="tag">&gt;</span><span class="pln">Item3</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">"item4"</span><span class="tag">&gt;</span><span class="pln">Item4</span><span class="tag">&lt;/div&gt;</span><span class="pln">
  </span><span class="tag">&lt;/section&gt;</span></pre>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_75" style=""><span class="pln">  </span><span class="pun">.</span><span class="pln">container </span><span class="pun">{</span><span class="pln">
      display</span><span class="pun">:</span><span class="pln"> grid</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

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

<ol>
	<li>
		<code>grid-columns</code>: وتستخدم لتحديد عدد الأعمدة وعرض كل عمود.
	</li>
	<li>
		<code>grid-rows</code>: وتستخدم لتحديد عدد الصفوف وارتفاع كل صف.
	</li>
</ol>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_77" style=""><span class="pun">.</span><span class="pln">container </span><span class="pun">{</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> grid</span><span class="pun">;</span><span class="pln">
    </span><span class="com">/* إنشاء ثلاثة أعمدة كل منها بعرض 50 بكسل */</span><span class="pln">
    grid</span><span class="pun">-</span><span class="pln">columns</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pln"> </span><span class="lit">50px</span><span class="pln"> </span><span class="lit">50px</span><span class="pun">;</span><span class="pln">
    </span><span class="com">/* إنشاء صفين كل منهما بإرتفاع 50 بكسل */</span><span class="pln">
    grid</span><span class="pun">-</span><span class="pln">rows</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pln"> </span><span class="lit">50px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	ومن الممكن أيضًا تحديد ترتيب العناصر في التخطيط الشبكي عن طريق الخاصيتين <code>grid-column</code> و <code>grid-row</code> واللتان تحددان العمود والصف اللذان سيُعرض فيهما العنصر.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_79" style=""><span class="pun">.</span><span class="pln">container </span><span class="pun">.</span><span class="pln">item1 </span><span class="pun">{</span><span class="pln">
    grid</span><span class="pun">-</span><span class="pln">column</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
    grid</span><span class="pun">-</span><span class="pln">row</span><span class="pun">:</span><span class="pln"> </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">container </span><span class="pun">.</span><span class="pln">item2 </span><span class="pun">{</span><span class="pln">
    grid</span><span class="pun">-</span><span class="pln">column</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2</span><span class="pun">;</span><span class="pln">
    grid</span><span class="pun">-</span><span class="pln">row</span><span class="pun">:</span><span class="pln"> </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">container </span><span class="pun">.</span><span class="pln">item3 </span><span class="pun">{</span><span class="pln">
    grid</span><span class="pun">-</span><span class="pln">column</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pun">;</span><span class="pln">
    grid</span><span class="pun">-</span><span class="pln">row</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2</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">item4 </span><span class="pun">{</span><span class="pln">
    grid</span><span class="pun">-</span><span class="pln">column</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2</span><span class="pun">;</span><span class="pln">
    grid</span><span class="pun">-</span><span class="pln">row</span><span class="pun">;</span><span class="pln"> </span><span class="lit">2</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	اطَّلع على تجربة حيَّة لهذا المثال على <a href="https://jsfiddle.net/fexfwkkv/3/" rel="external nofollow">JSFiddle</a>.
</p>

<p>
	<a href="https://caniuse.com/#feat=css-grid" rel="external nofollow">انظر دعم المتصفحات للقاعدة <code>display: gird</code></a>.
</p>

<h2>
	التخطيط الجدولي
</h2>

<h3>
	الخاصية <code>table-layout</code>
</h3>

<p>
	تُستخدم الخاصية <code>table-layout</code> لتحديد كيفية إنشاء الجدول ووضع العناصر بداخله، وتأخذ إحدى القيمتين:
</p>

<ol>
	<li>
		<code>auto</code>: وتسمح للجدول بأخذ العرض اللازم لمنع طفحان المحتوى خارج الجدول.
	</li>
	<li>
		<code>fixed</code>: وتُعطي الجدول العرض المحدد له بالخاصية <code>width</code> فقط، ولا تسمح له بالتمدد مما يؤدي لطفحان المحتوى خارج الجدول في حال عدم وجود مساحة كافية له.
	</li>
</ol>

<p style="text-align: center;">
	<img alt="wkJpO.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52873" data-unique="xthmi74j4" src="https://academy.hsoub.com/uploads/monthly_2020_11/wkJpO.png.6fb45f58fcf7443e27c925d272cc77c0.png">
</p>

<h3>
	الخاصية <code>empty-cells</code>
</h3>

<p>
	تحدد الخاصية <code>empty-cells</code> ما إذا كانت الخلايا الفارغة ستُعرض أم لا، ولا يكون لها أثرٌ إلا إذا كانت قيمة الخاصية <code>border-collapse</code> هي <code>separate</code>، وتأخذ إحدى القيمتين <code>show</code> والتي تعني إظهار الخلايا الفارغة أو <code>hide</code> والتي تعني إخفائها.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52855" href="https://academy.hsoub.com/uploads/monthly_2020_11/2G54T.png.81ef7421c52215fd350d39d87407d5d4.png" rel="" data-fileext="png"><img alt="2G54T.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52855" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/2G54T.png.81ef7421c52215fd350d39d87407d5d4.png"></a>
</p>

<p>
	<strong>مصادر إضافية</strong>
</p>

<ul>
	<li>
		<p>
			<a href="https://www.w3.org/TR/CSS21/tables.html#empty-cells" rel="external nofollow">توثيق W3.org</a>.
		</p>
	</li>
	<li>
		<p>
			<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/empty-cells" rel="external nofollow">توثيق MDN</a>.
		</p>
	</li>
	<li>
		<p>
			<a href="http://codepen.io/SitePoint/pen/yfhtq" rel="external nofollow">codepen</a>.
		</p>
	</li>
	<li>
		<p>
			<a href="https://css-tricks.com/almanac/properties/e/empty-cells/" rel="external nofollow">css tricks</a>.
		</p>
	</li>
</ul>

<h3>
	الخاصية <code>border-collapse</code>
</h3>

<p>
	تحدد الخاصية <code>border-collapse</code> ما إذا كان إطار الجدول منفصلًا عن إطار الخلايا (أي لكلٍ واحدٍ منها إطارٌ خاصٌ به) أم أنه مدمج معها (أي تتشارك الخلايا المتجاورة الإطار مع بعضها بعضًا)، وتأخذ إحدى القيمتين <code>separate</code> والتي تفصل بين الإطارات أو <code>collapse</code> والتي تدمج اطارات الخلايا المتجاورة.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52856" href="https://academy.hsoub.com/uploads/monthly_2020_11/awGlj.png.f5c937e4e0e81b7fc42df9e3c63b714c.png" rel="" data-fileext="png"><img alt="awGlj.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52856" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/awGlj.png.f5c937e4e0e81b7fc42df9e3c63b714c.png"></a>
</p>

<h3>
	الخاصية <code>border-spacing</code>
</h3>

<p>
	الخاصية <code>border-spacing</code> في CSS تُحدِّد المسافة بين إطارات خلايا الجداول المتجاورة. لن يكون لهذه الخاصية أثرٌ إلا إذا كانت قيمة الخاصية <code>border-collapse</code> هي <code>separate</code>. ويمكن تحديد المسافات الأفقية والرأسية بين الإطارات في آن واحد عن طريق تحديد قيمة واحدة للخاصية مثل <code>border-spacing: 2px</code>، أو تحديد قيمة مختلفة لكل واحدة على حدة مثل <code>border-spacing: 2px 4px</code>، حيث تمثل القيم الأولى المسافة بين الإطارات الأفقية وتحدد القيمة الثانية المسافة بين الإطارات الرأسية.
</p>

<p style="text-align: center;">
	<img alt="KlVh0.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52868" data-unique="ip8dncwx1" src="https://academy.hsoub.com/uploads/monthly_2020_11/KlVh0.png.4019296e2253e91622f15490d4d1145f.png">
</p>

<h3>
	الخاصية <code>caption-side</code>
</h3>

<p>
	تحدد الخاصية <code>caption-side</code> موضع لافتة الجدول المُعرَّفة عبر العنصر <code>&lt;caption&gt;</code>، وتأخذ إحدى القيمتين <code>top</code> والتي تُضيف اللافتة أعلى الجدول أو <code>bottom</code> والتي تُضيفها أسفل الجدول.
</p>

<p style="text-align: center;">
	<img alt="nmLkG.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52870" data-unique="grb5smmvz" src="https://academy.hsoub.com/uploads/monthly_2020_11/nmLkG.png.7d6ec40c3e7ffdf5372fc1dd1106fda1.png">
</p>

<h2>
	التخطيط الكتلي السطري (Inline-block layout)
</h2>

<h3>
	إنشاء شريط تَنَقُّل علوي (navigation bar)
</h3>

<p>
	من الشائع انشاء شريط تَنَقُّل علوي يحتوي على ازار للتنقل بين صفحات الموقع المختلفة، وفيه تكون المسافات بين الأزرار متساوية، ويكون للزر الأول فيه هامش أيمن فقط (وأيسر إذا كانت الصفحة باللغة العربية)، ولآخر زر هامش أيسر فقط (وأيمن إذا كانت الصفحة باللغة العربية).
</p>

<p>
	<strong>مثال</strong>
</p>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_81" style=""><span class="pln">  </span><span class="tag">&lt;nav&gt;</span><span class="pln">
      </span><span class="tag">&lt;ul&gt;</span><span class="pln">
          </span><span class="tag">&lt;li&gt;</span><span class="pln">abc</span><span class="tag">&lt;/li&gt;</span><span class="pln">
          </span><span class="tag">&lt;li&gt;</span><span class="pln">abcdefghijkl</span><span class="tag">&lt;/li&gt;</span><span class="pln">
          </span><span class="tag">&lt;li&gt;</span><span class="pln">abcdef</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;/nav&gt;</span></pre>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_83" style=""><span class="pln">  nav </span><span class="pun">{</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%;</span><span class="pln">
      line</span><span class="pun">-</span><span class="pln">height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1.4em</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  ul </span><span class="pun">{</span><span class="pln">
      list</span><span class="pun">-</span><span class="pln">style</span><span class="pun">:</span><span class="pln"> none</span><span class="pun">;</span><span class="pln">
      display</span><span class="pun">:</span><span class="pln"> block</span><span class="pun">;</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</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">
      padding</span><span class="pun">:</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"> justify</span><span class="pun">;</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="pun">-</span><span class="lit">1.4em</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  ul</span><span class="pun">:</span><span class="pln">after </span><span class="pun">{</span><span class="pln">
      content</span><span class="pun">:</span><span class="pln"> </span><span class="str">""</span><span class="pun">;</span><span class="pln">
      display</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">inline</span><span class="pun">-</span><span class="pln">block</span><span class="pun">;</span><span class="pln">
      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="pun">}</span><span class="pln">
  li </span><span class="pun">{</span><span class="pln">
      display</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">inline</span><span class="pun">-</span><span class="pln">block</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	<strong>ملاحظات</strong>
</p>

<ol>
	<li>
		استُعملت العناصر <code>nav</code>، و<code>ul</code>، و<code>li</code> لمعناها الدلالي فقط (عناصر قائمة التنقل)، ويمكن استعمال أي عناصر أخرى.
	</li>
	<li>
		استُخدمت قيمة سالبة مساوية لقيمة ارتفاع السطر للخاصية <code>margin-bottom</code> للتخلص من المساحة الفارغة التي يتسبب فيها العنصر الزائف <code>after:</code>.
	</li>
	<li>
		اذا تقَّلص عرض الصفحة لحد لا يسمح بأن تكون جميع العناصر في سطر واحد، يتنقل جزء من العناصر للسطر التالي.
	</li>
</ol>

<h2>
	التوسيط (Centering)
</h2>

<h3>
	توسيط العناصر باستخدام حاوية Flexbox) Flex)
</h3>

<ul>
	<li>
		ملف HTML:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_85" style=""><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;img</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"http://lorempixel.com/400/200"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span></pre>

<ul>
	<li>
		ملف CSS:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_87" style=""><span class="pln">  html</span><span class="pun">,</span><span class="pln">
  body</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">
    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="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">container </span><span class="pun">{</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">;</span><span class="pln">
    justify</span><span class="pun">-</span><span class="pln">content</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* التوسيط أفقيًا */</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  img </span><span class="pun">{</span><span class="pln">
    align</span><span class="pun">-</span><span class="kwd">self</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* التوسيط رأسيًا */</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	<a href="https://jsfiddle.net/aLu05kjy/1/" rel="external nofollow">عرض النتيجة</a>
</p>

<ul>
	<li>
		ملف HTML:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_89" style=""><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">"http://lorempixel.com/400/400"</span><span class="pln"> </span><span class="tag">/&gt;</span></pre>

<ul>
	<li>
		ملف CSS:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_91" style=""><span class="pln">  html</span><span class="pun">,</span><span class="pln">
  body </span><span class="pun">{</span><span class="pln">
    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="pun">}</span><span class="pln">
  body </span><span class="pun">{</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> flex</span><span class="pun">;</span><span class="pln">
    justify</span><span class="pun">-</span><span class="pln">content</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* التوسيط أفقيًا */</span><span class="pln">
    align</span><span class="pun">-</span><span class="pln">items</span><span class="pun">:</span><span class="pln"> center</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* التوسيط رأسيًا */</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	<a href="https://jsfiddle.net/ttp0bzfm/1/" rel="external nofollow">عرض النتيجة</a>
</p>

<p>
	زُر <a href="https://wiki.hsoub.com/CSS/flex" rel="external">التوثيق الرسمي لحاوية flex</a> لمزيد من المعلومات حول التوسيط الأفقي والرأسي، ومزيد من المعلومات حول حاوية flex ومعاني الأنماط المختلفة.
</p>

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

<ul>
	<li>
		كل المتصفحات الرئيسية تدعم حاوية flex، <a href="http://caniuse.com/#search=flex" rel="external nofollow">عدا الإصدارات التي تسبق الإصدار العاشر من متصفح IE</a>.
	</li>
	<li>
		بعض إصدارات المتصفحات، مثل Safari 8 و IES10، تتطلب استخدام البوادئ الخاصة بها <a href="https://developer.mozilla.org/en-US/docs/Glossary/Vendor_Prefix" rel="external nofollow">vendor prefixes</a>.
	</li>
	<li>
		لتوليد البوادئ بشكل تلقائي يمكن استعمال أداة <a href="https://autoprefixer.github.io/" rel="external nofollow">Autoprefixer</a>.
	</li>
	<li>
		يمكن تعويض نقص دعم المتصفحات القديمة (مثل IE8 وIE9) لحاوية flex بإضافة <a href="https://github.com/jonathantneal/flexibility" rel="external nofollow">شيفرات خاصة</a>.
	</li>
	<li>
		لمزيد من التفاصيل حول دعم المتصفحات لحاوية flex، انظر <a href="https://stackoverflow.com/a/35137869/3597276" rel="external nofollow">هذه الإجابة</a>.
	</li>
</ul>

<h3>
	توسيط العناصر باستخدام تحويلات CSS Transform) CSS)
</h3>

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

<ul>
	<li>
		طبِّق القاعدة <code>position: absolute</code> على العنصر المراد توسيطه.
	</li>
	<li>
		حدد القيمة %50 للخاصيتين <code>top</code> و <code>left</code>.
	</li>
	<li>
		طبِّق القاعدة <code>(%50- ,%50-)transform: translate</code>.
	</li>
</ul>

<p>
	خذ في الحسبان أن استعمال هذه الطريقة قد يؤدي إلى ظهور العنصر المراد توسيطه مشوشًا، وذلك بسبب عرضه على بكسلات ذات قيم غير حقيقية (تحتوي على أرقام كسرية مثل 5.6). انظر <a href="https://stackoverflow.com/a/32329785/1385678" rel="external nofollow">هذه الاجابة</a> لمعرفة كيفية تفادي هذه المشكلة.
</p>

<ul>
	<li>
		ملف HTML:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_93" style=""><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">"element"</span><span class="tag">&gt;&lt;/div&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span></pre>

<ul>
	<li>
		ملف CSS:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_95" style=""><span class="pln">  </span><span class="pun">.</span><span class="pln">container </span><span class="pun">{</span><span class="pln">
    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">element </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">
    top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50</span><span class="pun">%;</span><span class="pln">
    left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50</span><span class="pun">%;</span><span class="pln">
    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">50</span><span class="pun">%);</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	<a href="https://jsfiddle.net/webtiki/rz3p3ufs/" rel="external nofollow">عرض المثال على JSFiddle</a>
</p>

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

<ul>
	<li>
		<p>
			خاصية <code>transform</code> تتطلب استخدام البوادئ لكي تُدعم في المتصفحات القديمة. هذه البوادئ لازمة للمتصفحات الآتية:
		</p>

		<ul>
			<li>
				Chrome&lt;=35
			</li>
			<li>
				Safari&lt;=8
			</li>
			<li>
				Opera&lt;=22
			</li>
			<li>
				Android Browser&lt;=4.4.4
			</li>
			<li>
				IE 9.
			</li>
		</ul>
	</li>
	<li>
		<p>
			تحويلات CSS غير مدعومة في متصفح IE8 والإصدارات السابقة له.
		</p>
	</li>
	<li>
		<p>
			بعض التحويلات الشائعة للمثال السابق:
		</p>
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_97" style=""><span class="pln">  </span><span class="pun">-</span><span class="pln">webkit</span><span class="pun">-</span><span class="pln">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">50</span><span class="pun">%);</span><span class="pln"> </span><span class="com">/* Chrome, Safari, Opera, Android */</span><span class="pln">
      </span><span class="pun">-</span><span class="pln">ms</span><span class="pun">-</span><span class="pln">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">50</span><span class="pun">%);</span><span class="pln"> </span><span class="com">/* IE 9 */</span><span class="pln">
          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">50</span><span class="pun">%);</span></pre>

<p>
	لمزيد من المعلومات قم بزيارة <a href="http://caniuse.com/#feat=transforms2d" rel="external nofollow">caniuse</a>.
</p>

<p>
	<strong>معلومات إضافية</strong>
</p>

<ul>
	<li>
		يُحدد موضع العنصر وفقًا لأول أب غير ثابت، أي قيمة الخاصية <code>position</code> له هي <code>relative</code> أو <code>absolute</code> أو <code>fixed</code> استكشف المزيد على <a href="https://jsfiddle.net/siavasfiroozbakht/ox8kyypa/" rel="external nofollow">fiddle</a>.
	</li>
	<li>
		للتوسيط أفقيًا فقط، استعمل <code>left: 50%</code> و <code>(transform: translateX(-50%</code>. كذلك للتوسيط رأسيًا فقط استعمل<code>top: 50</code>% و <code>(transform: translateY(-50%</code>.
	</li>
	<li>
		استعمال عناصر ذات عرض أو ارتفاع غير ثابت مع طريقة التوسيط هذه قد يجعل العنصر المراد توسيطه يبدو مضعوطاً. غالباً ما يحدث هذا مع العناصر التي تحتوي على نصوص، ويمكن معالجتها بإضافة القواعد: <code>;margin-right: -50%</code> و <code>margin-bottom: -50%</code>. لمزيد من المعلومات <a href="https://jsfiddle.net/4xxmxca0/" rel="external nofollow">اطّلع على المثال التالي</a>.
	</li>
</ul>

<p>
	ملاحظة: إذا كانت الصفحة باللغة العربية أو إحدى اللغات الأخرى التي تُكتب من اليمين إلى اليسار (rtl) تستبدل القاعدة <code>left: 50%</code> بالقاعدة<code>right: 50%</code>.
</p>

<h3>
	التوسيط باستخدام الخاصية <code>margin</code>
</h3>

<p>
	يمكن توسيط العناصر باستخدام <code>;margin: 0 auto</code> إذا كانت عناصر كتليه ولها عرض محدد.
</p>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_99" style=""><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">"containerDiv"</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">"centeredDiv"</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">"containerDiv"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"centeredParagraph"</span><span class="tag">&gt;</span><span class="pln">This is a centered paragraph</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">"containerDiv"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;img</span><span class="pln">
      </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"centeredImage"</span><span class="pln">
      </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"https://i.kinja-img.com/gawker-media/image/upload/s--c7Q9b4Eh--/c_scale,fl_progressive,q_80,w_
  800/qqyvc3bkpyl3mfhr8all.jpg"</span><span class="pln">
    </span><span class="tag">/&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span></pre>

<ul>
	<li>
		ملف CSS:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_101" style=""><span class="pln">  </span><span class="pun">.</span><span class="pln">container </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</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">40px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="com">#centeredDiv {</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">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">200px</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
    border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> solid </span><span class="com">#000;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="com">#centeredParagraph {</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">200px</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="com">#centeredImage {</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> block</span><span class="pun">;</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">200px</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></pre>

<p>
	النتيجة:
</p>

<p style="text-align: center;">
	<img alt="Zq0N0.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52874" data-unique="z05w1lgf4" src="https://academy.hsoub.com/uploads/monthly_2020_11/Zq0N0.png.e7125557e90ee2182477a28093824fc9.png">
</p>

<p>
	اطّلع على تجربة حيّة لهذا المثال على <a href="https://jsfiddle.net/xf1ze3v9/" rel="external nofollow">JSFiddle</a>.
</p>

<h3>
	التوسيط باستخدام محاذاة النص <code>text-align</code>
</h3>

<p>
	من أسهل أنواع التوسيط وأكثرها انتشارًا توسيط النصوص داخل عنصر معين باستخدام <code>;text-align: center</code>.
</p>

<ul>
	<li>
		ملف HTML:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_103" style=""><span class="pln">  </span><span class="tag">&lt;p&gt;</span><span class="pln">lorem ipsum</span><span class="tag">&lt;/p&gt;</span></pre>

<ul>
	<li>
		ملف CSS:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_105" style=""><span class="pln">  p </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>
	تستعمل <code>text-align</code> لمحاذاة المحتوى السطري (inline-content) فقط مثل محاذاة النصوص والصور داخل العنصر الأب لها، ولا يمكن استعمالها لتوسيط العناصر الكتلية.
</p>

<h3>
	استخدام الموضع المطلق (position: absolute)
</h3>

<ul>
	<li>
		تعمل على المتصفحات القديمة (IE &gt;= <span class="ipsEmoji">?</span>
	</li>
</ul>

<p>
	يمكن توسيط عنصر ذي موضع مطلق داخل العنصر الأب له باستعمال الهوامش التلقائية مع وضع قيمة صفر لكل من الخواص <code>left</code>، و<code>right</code>، و<code>top</code>، و <code>bottom</code>.
</p>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_107" style=""><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">"parent"</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">"center"</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"http://lorempixel.com/400/200"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span></pre>

<ul>
	<li>
		ملف CSS:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_109" style=""><span class="pln">  </span><span class="pun">.</span><span class="pln">parent </span><span class="pun">{</span><span class="pln">
    position</span><span class="pun">:</span><span class="pln"> relative</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">500px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="pun">.</span><span class="pln">center </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">
    margin</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">auto</span><span class="pun">;</span><span class="pln">
    top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    right</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    bottom</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln">
    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="pun">}</span></pre>

<p>
	تحتاج العناصر التي لا تمتلك ارتفاعًا وعرضًا ضمنيين مثل الصور إلى تحديد قيمتهما.
</p>

<p>
	مصادر أخرى: <a href="http://codepen.io/shshaw/details/gEiDt" rel="external nofollow">Absolute Centering in CSS</a>.
</p>

<h3>
	التوسيط باستخدام الدالة <code>()calc</code>
</h3>

<p>
	دالة <code>calc()‎</code> هي صيغة جديدة تمت إضافتها في CSS3. تمكنك هذه الدالة من أن تحسب رياضيًا الحجم أو الموضع الذي يشغله العنصر باستخدام عدد من القيم مثل: البكسلات (نقاط الشاشة)، النسب المئوية …الخ.
</p>

<p>
	ملاحظة: عند استخدام هذه الدالة، يجب مراعاة المسافة بين القيمتين <code>(calc(100% - 80px</code> .
</p>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_111" style=""><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">"center"</span><span class="tag">&gt;&lt;/div&gt;</span></pre>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_113" style=""><span class="pln">  </span><span class="pun">.</span><span class="pln">center </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">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pun">;</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</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">
    top</span><span class="pun">:</span><span class="pln"> calc</span><span class="pun">(</span><span class="lit">50</span><span class="pun">%</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="lit">50px</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> </span><span class="lit">2</span><span class="pun">);</span><span class="pln"> </span><span class="com">/* الإرتفاع مقسوم على 2 */</span><span class="pln">
    left</span><span class="pun">:</span><span class="pln"> calc</span><span class="pun">(</span><span class="lit">50</span><span class="pun">%</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="lit">50px</span><span class="pln"> </span><span class="pun">/</span><span class="pln"> </span><span class="lit">2</span><span class="pun">);</span><span class="pln"> </span><span class="com">/* العرض مقسوم على 2 */</span><span class="pln">
  </span><span class="pun">}</span></pre>

<h3>
	توسيط النص رأسيًأ باستخدام ارتفاع السطر (line-height)
</h3>

<p>
	يمكن استخدام خاصية ارتفاع السطر <code>line-height</code> لتوسيط نص من سطر واحد رأسيًا داخل الحاوية.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_117" style=""><span class="pln">div </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">
  line</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></pre>

<p>
	قد لا يبدو ذلك أنيقًا، ولكن قد يكون مفيد إذا أردت توسيط النص رأسيًا داخل عنصر <code>&lt;/ input&gt;</code>. خاصية <code>line-height</code> تعمل فقط إذا كان النص المراد توسيطه من سطر واحد، ولكن إذا كان أكثر من سطر لن يكون الناتج في الوسط.
</p>

<h2>
	محاذاة أي شيء رأسيًا في ثلاثة أسطر
</h2>

<ul>
	<li>
		<a href="https://caniuse.com/#search=transform" rel="external nofollow">مدعومة في متصفح IE 11 والإصدارات التي تليه</a>.
	</li>
</ul>

<p>
	يمكنك باستعمال الثلاثة أسطر أدناه توسيط أي شيء رأسيًا، فقط تأكد أن الحاوية (div) أو الصورة التي تطبق عليها الشيفرة لها أب (parent) ذو ارتفاع محدد.
</p>

<ul>
	<li>
		ملف CSS:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_119" style=""><span class="pln">  div</span><span class="pun">.</span><span class="pln">vertical </span><span class="pun">{</span><span class="pln">
    position</span><span class="pun">:</span><span class="pln"> relative</span><span class="pun">;</span><span class="pln">
    top</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50</span><span class="pun">%;</span><span class="pln">
    transform</span><span class="pun">:</span><span class="pln"> translateY</span><span class="pun">(-</span><span class="lit">50</span><span class="pun">%);</span><span class="pln">
  </span><span class="pun">}</span></pre>

<ul>
	<li>
		ملف HTML:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_121" style=""><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">"vertical"</span><span class="tag">&gt;</span><span class="pln">Vertical aligned text!</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	<a href="https://jsfiddle.net/bnqrLgk9/1/" rel="external nofollow">عرض النتيجة</a>.
</p>

<h3>
	التوسيط نسبةً لعنصر آخر
</h3>

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

<ul>
	<li>
		<p>
			متوافق مع IE 8 والإصدارات التي تليه، بالإضافة لكل المتصفحات الحديثة.
		</p>
	</li>
	<li>
		<p>
			ملف HTML:
		</p>
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_123" style=""><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">"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">"position-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">"thumb"</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">"http://lorempixel.com/400/200"</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</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"details"</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">"banner-title"</span><span class="tag">&gt;</span><span class="pln">text</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">"banner-text"</span><span class="tag">&gt;</span><span class="pln">content content content content</span><span class="tag">&lt;/p&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">"btn"</span><span class="tag">&gt;</span><span class="pln">button</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></pre>

<ul>
	<li>
		ملف CSS:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_125" style=""><span class="pln">  </span><span class="pun">.</span><span class="pln">content </span><span class="pun">*</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    box</span><span class="pun">-</span><span class="pln">sizing</span><span class="pun">:</span><span class="pln"> border</span><span class="pun">-</span><span class="pln">box</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="pun">.</span><span class="pln">content </span><span class="pun">.</span><span class="pln">position</span><span class="pun">-</span><span class="pln">container </span><span class="pun">{</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> table</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="pun">.</span><span class="pln">content </span><span class="pun">.</span><span class="pln">details </span><span class="pun">{</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> table</span><span class="pun">-</span><span class="pln">cell</span><span class="pun">;</span><span class="pln">
    vertical</span><span class="pun">-</span><span class="pln">align</span><span class="pun">:</span><span class="pln"> middle</span><span class="pun">;</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">33.33333</span><span class="pun">%;</span><span class="pln">
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">30px</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">17px</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="pun">.</span><span class="pln">content </span><span class="pun">.</span><span class="pln">thumb </span><span class="pun">{</span><span class="pln">
    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="pun">}</span><span class="pln">

  </span><span class="pun">.</span><span class="pln">content </span><span class="pun">.</span><span class="pln">thumb img </span><span class="pun">{</span><span class="pln">
    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="pun">}</span></pre>

<p>
	اطّلع على تجربة حيّة لهذا المثال على <a href="https://jsfiddle.net/gasp10/6bv92mko/4/" rel="external nofollow">JSFiddle</a>.
</p>

<p>
	النقاط الرئيسية هي الحاويات الثلاث <code>thumb.</code>، و <code>details.</code>، و <code>position-container.</code>:
</p>

<ul>
	<li>
		يجب أن تمتلك الحاوية <code>position-container.</code> القاعدة <code>display: table</code>.
	</li>
	<li>
		يجب أن تمتلك الحاوية <code>details.</code> الخصائص <code>width</code> و <code>display: table-cell</code>، و <code>vertical-align: middle</code>.
	</li>
	<li>
		يجب أن تمتلك الحاوية <code>thumb.</code> القاعدة <code>width: 100%</code> إذا كنت تريدها أن تأخذ كل المساحة المتبقية، وستكون محددة بعرض حاوية <code>details.</code>.
	</li>
	<li>
		يجب أن تكون الصورة (في حال كان لديك صورة) داخل الحاوية <code>thumb.</code> ويجب أن تمتلك القاعدة <code>width: 100%</code>، لكنها غير ضرورية إذا كان لديك تناسب صحيح.
	</li>
</ul>

<h3>
	طريقة العنصر الشبح (خدعة Michat Czernow)
</h3>

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

<p>
	قم بإنشاء عنصر "شبح" بارتفاع 100% داخل الحاوية التي تريد توسيطها، ومن ثم طبق القاعدة <code>vertical-align: middle</code> عليه وعلى الحاوية المراد توسيطها.
</p>

<ul>
	<li>
		ملف CSS:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_127" style=""><span class="pln">  </span><span class="com">/* يُمكن أن يأخذ العنصر الأب أي ارتفاع وعرض */</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">block </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="com">/* انظر الملاحظة رقم 1 */</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="com">/* The ghost element */</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">block</span><span class="pun">:</span><span class="pln">before </span><span class="pun">{</span><span class="pln">
    content</span><span class="pun">:</span><span class="pln"> </span><span class="str">""</span><span class="pun">;</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">inline</span><span class="pun">-</span><span class="pln">block</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%;</span><span class="pln">
    vertical</span><span class="pun">-</span><span class="pln">align</span><span class="pun">:</span><span class="pln"> middle</span><span class="pun">;</span><span class="pln">

    </span><span class="com">/* انظر الملاحظة رقم 2 */</span><span class="pln">
    margin</span><span class="pun">-</span><span class="pln">right</span><span class="pun">:</span><span class="pln"> </span><span class="pun">-</span><span class="lit">0.25rem</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="com">/* The element to be centered, can also be of any width and height */</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">centered </span><span class="pun">{</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">inline</span><span class="pun">-</span><span class="pln">block</span><span class="pun">;</span><span class="pln">
    vertical</span><span class="pun">-</span><span class="pln">align</span><span class="pun">:</span><span class="pln"> middle</span><span class="pun">;</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">300px</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"> normal</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* Resetting inherited nowrap behavior */</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	ملاحظات:
</p>

<ol>
	<li>
		يكون عرض الحاوية في بعض الأحيان أقل من عرض العناصر الداخلية لها مما يؤدي إلى قص أجزاء منها، ويمكنك إضافة القاعدة <code>white-space: nowrap</code> لتفادي هذا الأمر.
	</li>
	<li>
		يتسبب حرف المسافة الخاص بالعنصر الشبح في وجود فراغ بينه وبين الحاوية <code>centered.</code>، للتخلص من هذا الفراغ يمكن دفع الحاوية <code>centered.</code> إلى اليمين (أو إلى اليسار في حالة الصفحات العربية) قليلًا (تعتمد المسافة التي يجب دفع الحاوية بها على نوع الخط المستخدم في الصفحة) أو عن طريق تحديد قيمة صفر لخاصية <code>font-size</code> في الحاوية <code>parent.</code> ومن ثم إعادة تعيينه في الحاوية <code>centered.</code>.
	</li>
</ol>

<ul>
	<li>
		ملف HTML:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_129" style=""><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">"block"</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">"centered"</span><span class="tag">&gt;&lt;/div&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span></pre>

<h3>
	التوسيط أفقيًا ورأسيًا دون القلق بشأن ارتفاع وعرض العنصر
</h3>

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

<p>
	<strong>الحاوية الخارجية</strong>
</p>

<ul>
	<li>
		يجب أن تمتلك القاعدة <code>display: table</code>.
	</li>
</ul>

<p>
	<strong>الحاوية الداخلية</strong>
</p>

<ul>
	<li>
		يجب أن تمتلك القواعد التالية
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_131" style=""><span class="pln">display</span><span class="pun">:</span><span class="pln"> table</span><span class="pun">-</span><span class="pln">cell</span><span class="pun">;</span><span class="pln">
vertical</span><span class="pun">-</span><span class="pln">align</span><span class="pun">:</span><span class="pln"> middle</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></pre>

<p>
	<strong>صندوق المحتوى</strong>
</p>

<ul>
	<li>
		يجب أن يمتلك القاعدة <code>display: inline-block</code>.
	</li>
	<li>
		يجب إعادة ضبط محاذاة النص، مثلاً <code>text-align-left</code> أو <code>text-align: right</code>، إلا إذا كنت ترغب في أن يكون النص في الوسط.
	</li>
</ul>

<p>
	إليك المثال التالي:
</p>

<ul>
	<li>
		ملف HTML:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_133" style=""><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">"outer-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">"inner-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">"centered-content"</span><span class="tag">&gt;</span><span class="pln">
        You can put anything here!
      </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>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_135" style=""><span class="pln">  body </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">outer</span><span class="pun">-</span><span class="pln">container </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">
    display</span><span class="pun">:</span><span class="pln"> table</span><span class="pun">;</span><span class="pln">
    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="com">/* This could be ANY width */</span><span class="pln">
    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="com">/* This could be ANY height */</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> </span><span class="com">#ccc;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="pun">.</span><span class="pln">inner</span><span class="pun">-</span><span class="pln">container </span><span class="pun">{</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> table</span><span class="pun">-</span><span class="pln">cell</span><span class="pun">;</span><span class="pln">
    vertical</span><span class="pun">-</span><span class="pln">align</span><span class="pun">:</span><span class="pln"> middle</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="pun">.</span><span class="pln">centered</span><span class="pun">-</span><span class="pln">content </span><span class="pun">{</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">inline</span><span class="pun">-</span><span class="pln">block</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"> left</span><span class="pun">;</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> </span><span class="com">#fff;</span><span class="pln">
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">20px</span><span class="pun">;</span><span class="pln">
    border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> solid </span><span class="com">#000;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	اطّلع على تجربة حيّة لهذا المثال على <a href="http://jsfiddle.net/WXLsY/621/" rel="external nofollow">JSFiddle</a>.
</p>

<h3>
	محاذاة صورة رأسيًا داخل حاوية div
</h3>

<ul>
	<li>
		ملف HTML:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_137" style=""><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">"wrap"</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">"http://lorempixel.com/400/200"</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span></pre>

<ul>
	<li>
		ملف CSS:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_139" style=""><span class="pln">  </span><span class="pun">.</span><span class="pln">wrap </span><span class="pun">{</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pun">;</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
    border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> solid blue</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="pun">.</span><span class="pln">wrap</span><span class="pun">:</span><span class="pln">before </span><span class="pun">{</span><span class="pln">
    content</span><span class="pun">:</span><span class="pln"> </span><span class="str">""</span><span class="pun">;</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">inline</span><span class="pun">-</span><span class="pln">block</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%;</span><span class="pln">
    vertical</span><span class="pun">-</span><span class="pln">align</span><span class="pun">:</span><span class="pln"> middle</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">
  </span><span class="pun">}</span><span class="pln">

  img </span><span class="pun">{</span><span class="pln">
    vertical</span><span class="pun">-</span><span class="pln">align</span><span class="pun">:</span><span class="pln"> middle</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<h3>
	التوسيط مع حجم ثابت
</h3>

<p>
	إذا كان حجم المحتوى ثابتًا، يمكن تعيين قيمة الموضع المطلق بالقيمة 50% مع هوامش تُقلص نصف عرض وارتفاع المحتوى.
</p>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_141" style=""><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">"center"</span><span class="tag">&gt;</span><span class="pln">
    Center vertically and horizontally
  </span><span class="tag">&lt;/div&gt;</span></pre>

<ul>
	<li>
		ملف CSS:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_143" style=""><span class="pln">  </span><span class="pun">.</span><span class="pln">center </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">
    background</span><span class="pun">:</span><span class="pln"> </span><span class="com">#ccc;</span><span class="pln">

    left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50</span><span class="pun">;</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">150px</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="pun">-</span><span class="lit">75px</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* width * -0.5 */</span><span class="pln">

    top</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="lit">200px</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="pln"> </span><span class="pun">-</span><span class="lit">100px</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* height * -0.5 */</span><span class="pln">
  </span><span class="pun">}</span></pre>

<h4>
	التوسيط أفقيًا مع عرض ثابت
</h4>

<p>
	يمكنك توسيط العنصر أفقيًا حتى إذا لم تكن تعرف إرتفاع محتواه.
</p>

<ul>
	<li>
		ملف HTML:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_145" style=""><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">
    Center only horizontally
  </span><span class="tag">&lt;/div&gt;</span></pre>

<ul>
	<li>
		ملف CSS:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_147" style=""><span class="pln">  </span><span class="pun">.</span><span class="pln">center </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">
    background</span><span class="pun">:</span><span class="pln"> </span><span class="com">#ccc;</span><span class="pln">

    left</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50</span><span class="pun">%;</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">150px</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="pun">-</span><span class="lit">75px</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* width * -0.5 */</span><span class="pln">
  </span><span class="pun">}</span></pre>

<h4>
	التوسيط رأسيًا مع ارتفاع ثابت
</h4>

<p>
	يمكنك توسيط العنصر رأسيًا إذا كنت تعرف فقط إرتفاعه.
</p>

<ul>
	<li>
		ملف HTML:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_149" style=""><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">"center"</span><span class="tag">&gt;</span><span class="pln">
    Center only vertically
  </span><span class="tag">&lt;/div&gt;</span></pre>

<ul>
	<li>
		ملف CSS:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_151" style=""><span class="pln">  </span><span class="pun">.</span><span class="pln">center </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">
    background</span><span class="pun">:</span><span class="pln"> </span><span class="com">#ccc;</span><span class="pln">

    top</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="lit">200px</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="pln"> </span><span class="pun">-</span><span class="lit">100px</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* width * -0.5 */</span><span class="pln">
  </span><span class="pun">}</span></pre>

<h3>
	المحاذاة الرأسية للعناصر ذات الارتفاع الديناميكي
</h3>

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

<ul>
	<li>
		قاعدة <code>vertical-align: middle</code> <a href="https://www.w3.org/TR/CSS21/visudet.html#propdef-vertical-align" rel="external nofollow">لا تنطبق على العناصر الكتلية</a>.
	</li>
	<li>
		قاعدة <code>margin-top: auto</code> و <code>margin-bottom: auto</code> <a href="http://www.w3.org/TR/CSS2/visudet.html#Computing_heights_and_margins" rel="external nofollow">تُحسب القيم المستخدمة لها <strong>كأصفار</strong></a>.
	</li>
	<li>
		قاعدة margin-top: -50% <a href="https://www.w3.org/TR/CSS2/box.html#margin-properties" rel="external nofollow">يتم حساب قيمة الهامش على أساس النسبة المئوية بالنسبة <strong>لعرض</strong> الكتلة التي تحويها</a>.
	</li>
</ul>

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

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_153" style=""><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">"vcenter--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">"vcenter--helper"</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">"vcenter--content"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="com">&lt;!-- stuff --&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>

<ul>
	<li>
		ملف CSS:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_155" style=""><span class="pln">  </span><span class="pun">.</span><span class="pln">vcenter</span><span class="pun">--</span><span class="pln">container </span><span class="pun">{</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> table</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</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">
    overflow</span><span class="pun">:</span><span class="pln"> hidden</span><span class="pun">;</span><span class="pln">
    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="pun">}</span><span class="pln">

  </span><span class="pun">.</span><span class="pln">vcenter</span><span class="pun">--</span><span class="pln">helper </span><span class="pun">{</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> table</span><span class="pun">-</span><span class="pln">cell</span><span class="pun">;</span><span class="pln">
    vertical</span><span class="pun">-</span><span class="pln">align</span><span class="pun">:</span><span class="pln"> middle</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="pun">.</span><span class="pln">vcenter</span><span class="pun">--</span><span class="pln">content </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">
    width</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></pre>

<p>
	المصدر: <a href="https://stackoverflow.com/questions/12415661/using-marginauto-to-vertically-align-a-div/12417336#12417336" rel="external nofollow">Stackoverflow</a> - المثال على <a href="http://jsfiddle.net/ovfiddle/yVAW9/" rel="external nofollow">JSFiddle</a>.
</p>

<ul>
	<li>
		<p>
			تعمل هذه الطريقة مع العناصر ذات الارتفاعات الديناميكية.
		</p>
	</li>
	<li>
		<p>
			تأخذ في الاعتبار تدفق المحتوى .
		</p>
	</li>
	<li>
		<p>
			مدعومة من قبل معظم المتصفحات.
		</p>
	</li>
</ul>

<h3>
	التوسيط أفقيًا ورأسيًا باستخدام تخطيط الجدول
</h3>

<p>
	يمكن ببساطة توسيط العنصر الإبن باستخدام القاعدة <code>display: table</code>.
</p>

<ul>
	<li>
		ملف HTML:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_157" style=""><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"</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">"parent"</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">"child"</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&gt;</span></pre>

<ul>
	<li>
		ملف CSS:
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_159" style=""><span class="pln">  </span><span class="pun">.</span><span class="pln">wrapper </span><span class="pun">{</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> table</span><span class="pun">;</span><span class="pln">
    vertical</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">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">200px</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">
    background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> </span><span class="com">#9e9e9e;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="pun">.</span><span class="pln">parent </span><span class="pun">{</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> table</span><span class="pun">-</span><span class="pln">cell</span><span class="pun">;</span><span class="pln">
    vertical</span><span class="pun">-</span><span class="pln">align</span><span class="pun">:</span><span class="pln"> middle</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="pun">.</span><span class="pln">child </span><span class="pun">{</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">inline</span><span class="pun">-</span><span class="pln">block</span><span class="pun">;</span><span class="pln">
    vertical</span><span class="pun">-</span><span class="pln">align</span><span class="pun">:</span><span class="pln"> middle</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">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</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"> teal</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	ملاحظة: بالرغم من بساطة وسهولة هذه الطريقة إلا أنها لا تُعد ممارسة جيدة و يجب ألَّا تستعملها إلا إذا اضطررت لذلك، لمزيد من التفاصيل راجع <a href="https://stackoverflow.com/questions/83073/why-not-use-tables-for-layout-in-html?page=1&amp;tab=votes#tab-top" rel="external nofollow">هذه الاجابة على StackOverflow.</a>
</p>

<h3>
	التوسيط باستخدام العناصر الزائفة
</h3>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_5227_161" style=""><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"</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">"content"</span><span class="tag">&gt;&lt;/div&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span></pre>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5227_163" style=""><span class="pln">  </span><span class="pun">.</span><span class="pln">wrapper</span><span class="pun">{</span><span class="pln">
      min</span><span class="pun">-</span><span class="pln">height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">600px</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">before</span><span class="pun">{</span><span class="pln">
      content</span><span class="pun">:</span><span class="pln"> </span><span class="str">""</span><span class="pun">;</span><span class="pln">
      display</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">inline</span><span class="pun">-</span><span class="pln">block</span><span class="pun">;</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">%;</span><span class="pln">
      vertical</span><span class="pun">-</span><span class="pln">align</span><span class="pun">:</span><span class="pln"> middle</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">content </span><span class="pun">{</span><span class="pln">
      display</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">inline</span><span class="pun">-</span><span class="pln">block</span><span class="pun">;</span><span class="pln">
      height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">80px</span><span class="pun">;</span><span class="pln">
      vertical</span><span class="pun">-</span><span class="pln">align</span><span class="pun">:</span><span class="pln"> middle</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<p>
	ترجمة -وبتصرف- للفصول [Layout Control, Flexbox Layout, Grid, Tables, Centering] من كتاب <a href="https://books.goalkicker.com/CSSBook/" rel="external nofollow">CSS Notes For Professionals</a>
</p>
]]></description><guid isPermaLink="false">1050</guid><pubDate>Wed, 04 Nov 2020 13:00:00 +0000</pubDate></item><item><title>&#x623;&#x633;&#x627;&#x633;&#x64A;&#x627;&#x62A; &#x627;&#x633;&#x62A;&#x639;&#x645;&#x627;&#x644; &#x644;&#x63A;&#x629; CSS</title><link>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/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2020_11/0.png.e6e5665fdd84ed2a9e2e0404dd08b139.png" /></p>
<p>
	<strong>إصدارات CSS</strong>
</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 style="text-align:right">
				الإصدار
			</th>
			<th style="text-align:right">
				تاريخ الصدور
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				<a href="https://www.w3.org/TR/REC-CSS1/" rel="external nofollow">CSS1</a>
			</td>
			<td style="text-align:right">
				17-12-1996
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<a href="https://www.w3.org/TR/REC-CSS2/" rel="external nofollow">CSS2</a>
			</td>
			<td style="text-align:right">
				12-5-1998
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<a href="https://www.w3.org/TR/css-2015/" rel="external nofollow">CSS3</a>
			</td>
			<td style="text-align:right">
				13-10-2015
			</td>
		</tr>
	</tbody>
</table>

<h2>
	إضافة تنسيقات CSS للصفحات
</h2>

<h3>
	التنسيقات الخارجية (External Styles)
</h3>

<p>
	تًضاف ملفات <a href="https://wiki.hsoub.com/CSS" rel="external">CSS </a>الخارجية إلى صفحات HTML عن طريق الوسم <code>&lt;link&gt;</code>، حيث تحدد الخاصية <code>href</code> فيه إلى مسار الملف، وتأخذ الخاصية <code>rel</code> القيمة <code>stylesheet</code>، أما الخاصية <code>type</code> <a href="https://html.spec.whatwg.org/multipage/semantics.html#the-link-element" rel="external nofollow">فيمكن تجاهلها</a> أو إعطائها القيمة <code>text/css</code>. ومن الأفضل إضافة هذا الوسم داخل الوسم <code>&lt;head&gt;</code> لضمان تحميل ملف التنسيقات قبل تحميل العناصر مما يؤدي لظهورها مُنسَّقة فورًا، وفيما عدا ذلك <a href="https://stackoverflow.com/questions/1642212/whats-the-difference-if-i-put-css-file-inside-head-or-body/1642259#1642259" rel="external nofollow">ستظهر العناصر غير مُنسَّقة لفترة قصيرة حتى يكتمل تحميل ملف التنسيقات</a>.
</p>

<p>
	تتكون قواعد CSS من: مُحدَّد (selector)، و كتلة التعريفات (declaration block)
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_7" style=""><span class="pln">h1 </span><span class="pun">{}</span><span class="pln">
</span><span class="com">/* h1: المحدد
{}: كتلة التعريفات
*/</span></pre>

<p>
	<strong>مثال</strong>
</p>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_9" style=""><span class="pln">  </span><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="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">"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">"style.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;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">I ♥ CSS</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>

<ul>
	<li>
		ملف style.css
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_11" style=""><span class="pln">  h1 </span><span class="pun">{</span><span class="pln">
      color</span><span class="pun">:</span><span class="pln"> green</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"> underline</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  p </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">25px</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">'Trebuchet MS'</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="pun">}</span></pre>

<p>
	<strong>ملاحظة</strong>: تأكد دائمًا أن الخاصية <code>href</code> تشير للمسار الصحيح لملف CSS، وإذا كان الملف داخل مجلد آخر ينبغي تحديد ذلك المجلد كما هو موضح بالشيفرة التالية:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_13" 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">"foldername/style.css"</span><span class="pln"> </span><span class="tag">/&gt;</span></pre>

<p>
	وتعتبر إضافة التنسيقات عن طريق ملف CSS خارجي هي الطريقة الأفضل ولذلك لأنها تجمع كل التنسيقات في ملف مركزي واحد مما يُسهِّل الرجوع إليه وتعديله في المستقبل.
</p>

<p>
	ومن الممكن أيضًا إضافة عدد من ملفات CSS الخارجية، مثلًا:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_15" 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="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">"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">"override.css"</span><span class="pln"> </span><span class="tag">/&gt;</span></pre>

<p>
	وفي هذه الحالة ينبغي مراعاة ترتيب الملفات عند كتابة التنسيقات، فعلى سبيل المثال إذا كان الملف main.css يحوي القاعدة التالية والتي تجعل جميع الفقرات ذات الصنف <code>green</code> تظهر باللون الأخضر الفاتح.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_17" style=""><span class="pln">p</span><span class="pun">.</span><span class="pln">green </span><span class="pun">{</span><span class="pln"> color</span><span class="pun">:</span><span class="pln"> </span><span class="com">#00FF00; }</span></pre>

<p>
	وكان الملف override.css يحوي القاعدة الموضحة أدناه والتي تجعل لون الفقرات أخضر غامقًا
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_19" style=""><span class="pln">p</span><span class="pun">.</span><span class="pln">green </span><span class="pun">{</span><span class="pln"> color</span><span class="pun">:</span><span class="pln"> </span><span class="com">#006600; }</span></pre>

<p>
	فإن النتيجة النهائية ستكون ظهور الفقرات باللون الأخضر الغامق بسبب أن الملف override.css يُحمَّل إلى المتصفح بعد الملف main.css مما يُجبر المتصفح على تطبيق القواعد المذكوره فيه وستطغى القواعد الموجودة فيه مع أي قواعد سابقة تتعارض معها وتلغيها.
</p>

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

<p>
	<strong>ملاحظة</strong>: تُحمَّل ملفات CSS الخارجية مرة واحدة فقط عند تحميل الصفحة للمرة الأولى، وتبقى محفوظة في ذاكرة المتصفح عند التنقل بين الصفحات مما يؤدي لتحميلها بشكل أسرع.
</p>

<h3>
	التنسيقات الداخلية (Internal Styles)
</h3>

<p>
	يمكن إضافة تنسيقات CSS داخل ملف HTML مباشرة، وذلك عن طريق كتابتها بين الوسمين <code>&lt;style&gt; ... &lt;/style&gt;</code>، ويجب وضعها داخل الوسم <code>&lt;head&gt;</code>.
</p>

<p>
	<strong>مثال</strong>
</p>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_21" style=""><span class="pln">  </span><span class="tag">&lt;head&gt;</span><span class="pln">
      </span><span class="tag">&lt;style&gt;</span><span class="pln">
          h1 </span><span class="pun">{</span><span class="pln">
              color</span><span class="pun">:</span><span class="pln"> green</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"> underline</span><span class="pun">;</span><span class="pln">
          </span><span class="pun">}</span><span class="pln">
          p </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">25px</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">'Trebuchet MS'</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="pun">}</span><span class="pln">
      </span><span class="tag">&lt;/style&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">I ♥ CSS</span><span class="tag">&lt;/p&gt;</span><span class="pln">
  </span><span class="tag">&lt;/body&gt;</span></pre>

<h3>
	القاعدة <code>‎</code>@import
</h3>

<p>
	تُستعمل القاعدة <code>‎@import</code> لاستيراد قواعد CSS من ملفات أخرى، ويجب أن تسبق هذه القاعدة جميع القواعد الأخرى عدا القاعدة <code>‎@charset</code>، ولا يمكن استعمالها داخل قواعد <code>@</code> مثل قواعد استعلامات الوسائط وغيرها.
</p>

<p>
	<strong>كيفية استخدام القاعدة <code>‎@import</code></strong>
</p>

<ul>
	<li>
		استعمالها في التنسيقات الداخلية
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_23" style=""><span class="pln">  </span><span class="tag">&lt;style&gt;</span><span class="pln">
      </span><span class="lit">@import</span><span class="pln"> url</span><span class="pun">(</span><span class="str">'/css/style.css'</span><span class="pun">);</span><span class="pln">
  </span><span class="tag">&lt;/style&gt;</span></pre>

<p>
	حيث تحدد الخاصية <code>url</code> مسار الملف المُراد استيراده.
</p>

<ul>
	<li>
		<p>
			استعمالها في ملفات التنسيقات الخارجية
		</p>

		<p>
			تستورد الشيفرة ادناه الملف additional-styles.css إلى ملف CSS الرئيسي:
		</p>
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_25" style=""><span class="pln">  </span><span class="lit">@import</span><span class="pln"> </span><span class="str">'/additional-styles.css'</span><span class="pun">;</span></pre>

<p>
	ومن الشائع استعمال القاعدة <code>‎@import</code> لاستيراد الخطوط من الويب كما هو موضح في الشيفرة التالية:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_27" style=""><span class="pln">  </span><span class="lit">@import</span><span class="pln"> </span><span class="str">'https://fonts.googleapis.com/css?family=Lato'</span><span class="pun">;</span></pre>

<p>
	ويمكن اضافة استعلامات الوسائط كمعاملات اختيارية للقاعدة <code>‎@import</code>، وفي هذه الحالية تُستورد الملفات المحددة فقط في حالة استيفاء شروط استعلامات الوسائط.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_29" style=""><span class="pln">  </span><span class="lit">@import</span><span class="pln"> </span><span class="str">'/print-styles.css'</span><span class="pln"> </span><span class="kwd">print</span><span class="pun">;</span><span class="pln">
  </span><span class="lit">@import</span><span class="pln"> url</span><span class="pun">(</span><span class="str">'landscape.css'</span><span class="pun">)</span><span class="pln"> screen </span><span class="kwd">and</span><span class="pln"> </span><span class="pun">(</span><span class="pln">orientation</span><span class="pun">:</span><span class="pln"> landscape</span><span class="pun">);</span></pre>

<h3>
	التنسيقات السطرية (Inline Styles)
</h3>

<p>
	تُستعمل التنسيقات السطرية لتطبيق الأنماط على عنصر محدد داخله مباشرةً، وتستبدل القواعد المحددة في الملفات الخارجية أو في الوسم <code>&lt;style&gt;</code> في حال حدوث أي تعارض.
</p>

<p>
	<strong>ملاحظة</strong>: من الأفضل استخدام الملفات الخارجية أو الوسم <code>&lt;style&gt;</code> لتطبيق التنسيقات، وذلك للفصل بين البنية الهيكلية للصفحة (ملف HTML) والتنسيقات مما يسهل الرجوع إليها وتعديلها.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_31" style=""><span class="tag">&lt;h1</span><span class="pln"> </span><span class="atn">style</span><span class="pun">=</span><span class="atv">"</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> green</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"> underline</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">
    Hello World!
</span><span class="tag">&lt;/h1&gt;</span><span class="pln">
</span><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="pln">font</span><span class="pun">-</span><span class="pln">size</span><span class="pun">:</span><span class="pln"> </span><span class="lit">25px</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">'Trebuchet MS'</span><span class="pun">;</span><span class="atv">"</span><span class="tag">&gt;</span><span class="pln">
    I ♥ CSS
</span><span class="tag">&lt;/p&gt;</span></pre>

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

<h3>
	التحكم في تنسيقات CSS باستخدام جافاسكربت
</h3>

<p>
	يمكن إضافة أو حذف أو تعديل قواعد CSS باستخدام جافاسكربت عن طريق الخاصية <code>style</code>.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_8167_33" style=""><span class="kwd">var</span><span class="pln"> el </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">"element"</span><span class="pun">);</span><span class="pln">
el</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">opacity</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0.5</span><span class="pun">;</span><span class="pln">
el</span><span class="pun">.</span><span class="pln">style</span><span class="pun">.</span><span class="pln">fontFamily</span><span class="pun">:</span><span class="pln"> </span><span class="str">'sans-serif'</span><span class="pun">;</span></pre>

<p>
	ينبغي ملاحظة استخدام نمط سنام الجمل المنخفض (lower camel case) لكتابة أسماء الخصائص في جافاسكربت، فمثلًا الخاصية <code>font-family</code> في CSS تصبح <code>fontFamily</code> في جافاسكربت.
</p>

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

<h3>
	استخدام JQuery
</h3>

<p>
	<strong>مثال: التحكم في خاصية واحدة</strong>
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_8167_35" style=""><span class="pln">$</span><span class="pun">(</span><span class="str">'#element'</span><span class="pun">).</span><span class="pln">css</span><span class="pun">(</span><span class="str">'margin'</span><span class="pun">,</span><span class="pln"> </span><span class="str">'5px'</span><span class="pun">);</span></pre>

<p>
	<strong>مثال: التحكم في عدد من الخصائص</strong>
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_8167_37" style=""><span class="pln">$</span><span class="pun">(</span><span class="str">'#element'</span><span class="pun">).</span><span class="pln">css</span><span class="pun">({</span><span class="pln">
    margin</span><span class="pun">:</span><span class="pln"> </span><span class="str">"5px"</span><span class="pun">,</span><span class="pln">
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="str">"10px"</span><span class="pun">,</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> </span><span class="str">"black"</span><span class="pln">
</span><span class="pun">});</span></pre>

<p>
	بالنسبة للخواص التي تتكون من أكثر من كلمة مثل الخاصية font-size، فيمكن كتابتها بين علامتي تنصيص أو استعمال نمط سنام الجمل لكتابتها.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_8167_39" style=""><span class="pln">$</span><span class="pun">(</span><span class="str">'.example-class'</span><span class="pun">).</span><span class="pln">css</span><span class="pun">({</span><span class="pln">
   </span><span class="str">"background-color"</span><span class="pun">:</span><span class="pln"> </span><span class="str">"blue"</span><span class="pun">,</span><span class="pln">
    fontSize</span><span class="pun">:</span><span class="pln"> </span><span class="str">"10px"</span><span class="pln">
</span><span class="pun">});</span></pre>

<p>
	للمزيد من المعلومات انظر <a href="https://wiki.hsoub.com/jQuery/CSS" rel="external">توثيق JQuery</a>).
</p>

<h2>
	هيكلة وصياغة قواعد CSS
</h2>

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

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_41" style=""><span class="pln">span </span><span class="pun">{</span><span class="pln">
    text</span><span class="pun">-</span><span class="pln">shadow</span><span class="pun">:</span><span class="pln"> yellow </span><span class="lit">0</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="lit">3px</span><span class="pun">,</span><span class="pln"> green </span><span class="lit">4px</span><span class="pln"> </span><span class="lit">4px</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><span class="pun">{</span><span class="pln">
    text</span><span class="pun">-</span><span class="pln">shadow</span><span class="pun">:</span><span class="pln">
        yellow </span><span class="lit">0</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="lit">3px</span><span class="pun">,</span><span class="pln">
        green </span><span class="lit">4px</span><span class="pln"> </span><span class="lit">4px</span><span class="pln"> </span><span class="lit">10px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

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

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_44" style=""><span class="pln">div</span><span class="pun">,</span><span class="pln"> p </span><span class="pun">{</span><span class="pln"> color</span><span class="pun">:</span><span class="pln"> blue</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span></pre>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_46" style=""><span class="pln">p</span><span class="pun">,</span><span class="pln"> </span><span class="pun">.</span><span class="pln">blue</span><span class="pun">,</span><span class="pln"> </span><span class="com">#first, div span {</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> blue</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	<strong>ملاحظة</strong>
</p>

<ul>
	<li>
		ينبغي الفصل بين المحددات بفاصلة.
	</li>
	<li>
		في حال عدم وضع الفاصلة كما في <code>div span</code>، فتُطبق التنسيقات على عناصر <code>span</code> الموجودة داخل عناصر <code>div</code> فقط.
	</li>
</ul>

<h2>
	التعليقات (Comments)
</h2>

<p>
	تُكتب التعليقات بين العلامتين <code>/*</code> و <code>*/</code> ، ويمكن أن تكون من سطر واحد (المثال الأول) أو عدد من الأسطر (كما في المثال الثاني).
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_48" style=""><span class="pln">div </span><span class="pun">{</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> red</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* هذا تعليق من سطر واحد */</span><span class="pln">
</span><span class="pun">}</span></pre>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_50" style=""><span class="com">/* 
تعليق
من 
أربعة
أسطر
*/</span><span class="pln">

div </span><span class="pun">{</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> red</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<h2>
	المحددات (Selectors)
</h2>

<p>
	تُستعمل المحددات لتحديد أو استهداف عناصر HTML المُراد تطبيق قواعد CSS عليها. وتحتوي CSS على أكثر من 50 نوع من أنواع المحددات منها محددات العناصر (elements)، والأصناف (classes)، والمُعرِّفات (IDs)، والعناصر الزائفة (pseudo-elements)، والأصناف الزائفة (pseudo-classes).
</p>

<h3>
	المحددات الأساسية
</h3>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				المحدد
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				*
			</td>
			<td style="text-align:right">
				المُحدِّد العام، ويُحدد جميع العناصر.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>div</code>
			</td>
			<td style="text-align:right">
				محدد الوسوم، ويُحدد جميع العناصر التي لها وسم مُعين.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>blue.</code>
			</td>
			<td style="text-align:right">
				مُحدد الصنف، ويُحدد جميع العناصر التي لها صِنف (class) مُعين.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>blue.red.</code>
			</td>
			<td style="text-align:right">
				يُحدد جميع العناصر التي لها الصنفين blue و red معًا.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>headline#</code>
			</td>
			<td style="text-align:right">
				مُحدد المُعرِّف، ويُحدد جميع العناصر التي لها مُعرِّف (Id) مُعين.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>pseudo-class::</code>
			</td>
			<td style="text-align:right">
				محددات الأصناف الزائفة.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>pseudo-element::</code>
			</td>
			<td style="text-align:right">
				محددات العناصر الزائفة.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>(lang(en:</code>
			</td>
			<td style="text-align:right">
				يُحدد العناصر ذات القيمة en للخاصية :lang، مثلًا العنصر
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>div &gt; p</code>
			</td>
			<td style="text-align:right">
				محدد الأبناء.
			</td>
		</tr>
	</tbody>
</table>

<p>
	<strong>ملاحظة</strong>: <a href="https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute" rel="external nofollow">معيار HTML5</a> يقول أنَّ قيمة الخاصية <code>id</code> يجب أن تكون فريدةً لكل عنصر في المستند، ولا يجوز تكرارها أبدًا.
</p>

<p>
	انظر <a href="https://wiki.hsoub.com/%D8%AA%D8%B5%D9%86%D9%8A%D9%81:CSS_Selectors" rel="external">قائمة محددات CSS</a>.
</p>

<h3>
	محددات الخاصيات (Attribute Selectors)
</h3>

<p>
	مُحدِّد الخاصيات (attribute selector) في CSS يُطابِق العناصر إذ وجدت فيها خاصية ما أو كانت تلك الخاصية تملك قيمة معيّنة.
</p>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				المُحدد
			</th>
			<th style="text-align:right">
				العُنصر المطابق
			</th>
			<th style="text-align:right">
				الوصف
			</th>
			<th style="text-align:right">
				إصدار CSS
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				<code>[attr]</code>
			</td>
			<td style="text-align:right">
				<code>&lt;div attr&gt;</code>
			</td>
			<td style="text-align:right">
				يُطابق العناصر ذات الخاصية attr
			</td>
			<td style="text-align:right">
				2
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>[attr='val'</code>‎<code>]</code>
			</td>
			<td style="text-align:right">
				<code>&lt;div attr='val'</code>‎<code>&gt;</code>
			</td>
			<td style="text-align:right">
				يطابق العناصر التي لها القيمة val للخاصية attr
			</td>
			<td style="text-align:right">
				2
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>[attr~='val'</code>‎<code>]</code>
			</td>
			<td style="text-align:right">
				<code>&lt;div attr='val val2 val3'</code>‎<code>&gt;</code>
			</td>
			<td style="text-align:right">
				يطابق العناصر التي تظهر فيها القيمة val كإحدى قيم الخاصية attr
			</td>
			<td style="text-align:right">
				2
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>[attr^='val'</code>‎<code>]</code>
			</td>
			<td style="text-align:right">
				<code>&lt;div attr='val1 val2'</code>‎<code>&gt;</code>
			</td>
			<td style="text-align:right">
				يطابق العناصر التي تبدأ قيمة الخاصية attr فيها بالكلمة val
			</td>
			<td style="text-align:right">
				3
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>[attr$='val'</code>‎<code>]</code>
			</td>
			<td style="text-align:right">
				<code>&lt;div attr='sth aval'</code>‎<code>&gt;</code>
			</td>
			<td style="text-align:right">
				يطابق العناصر التي تنتهي قيمة الخاصية attr فيها بالكلمة val
			</td>
			<td style="text-align:right">
				3
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>[attr*='val'</code>‎<code>]</code>
			</td>
			<td style="text-align:right">
				<code>&lt;div attr='somevalhere'</code>‎<code>&gt;</code>
			</td>
			<td style="text-align:right">
				يطابق العناصر التي تحتوي قيمة الخاصية attr فيها على الكلمة val
			</td>
			<td style="text-align:right">
				3
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>[attr\|='val'</code>‎<code>]</code>
			</td>
			<td style="text-align:right">
				<code>&lt;div attr='val-sth etc'</code>‎<code>&gt;</code>
			</td>
			<td style="text-align:right">
				يطابق العناصر التي لها القيمة val للخاصية attr، أو تبدأ بالكلمة val متبوعة بالمحرف (-).
			</td>
			<td>
				2
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>[attr='val' i]</code>
			</td>
			<td style="text-align:right">
				<code>&lt;div attr='val'</code>‎<code>&gt;</code>
			</td>
			<td style="text-align:right">
				يطابق العناصر التي لها القيمة val للخاصية attr، مع تجاهل حالة الأحرف.
			</td>
			<td style="text-align:right">
				4(2)
			</td>
		</tr>
	</tbody>
</table>

<p>
	<strong>ملاحظات</strong>
</p>

<ol>
	<li>
		يجب وضع قيم الخواص بين علامات تنصيص مزدوجة ("") أو مفردة ('').
	</li>
	<li>
		لا توجد إصدارة متكاملة من CSS4، لأنها مقسَّمة إلى عدد من الوحدات. لمزيد من المعلومات انظر <a href="https://caniuse.com/#feat=css-case-insensitive" rel="external nofollow">دعم المتصفحات</a>.
	</li>
</ol>

<h4>
	المحدد [attribute]
</h4>

<p>
	يُحدد العناصر التي تمتلك خاصية معينة.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_52" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    div</span><span class="pun">[</span><span class="pln">data</span><span class="pun">-</span><span class="pln">color</span><span class="pun">]</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        color</span><span class="pun">:</span><span class="pln"> red</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span><span class="pln">

</span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">data-color</span><span class="pun">=</span><span class="atv">"red"</span><span class="tag">&gt;</span><span class="pln">This will be red</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">data-color</span><span class="pun">=</span><span class="atv">"green"</span><span class="tag">&gt;</span><span class="pln">This will be red</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">data-background</span><span class="pun">=</span><span class="atv">"red"</span><span class="tag">&gt;</span><span class="pln">This will NOT be red</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	اطّلع على تجربة حيَّة على <a href="http://jsbin.com/cezale/1/edit?html,css,output" rel="external nofollow">JSBin</a>.
</p>

<h4>
	المحدد [attribute="value"‎]
</h4>

<p>
	يُحدد العناصر التي لها قيمة مُعينة للخاصية.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_8167_54" style=""><span class="pun">&lt;</span><span class="pln">style</span><span class="pun">&gt;</span><span class="pln">
    div</span><span class="pun">[</span><span class="pln">data</span><span class="pun">-</span><span class="pln">color</span><span class="pun">=</span><span class="str">"red"</span><span class="pun">]</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        color</span><span class="pun">:</span><span class="pln"> red</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">style</span><span class="pun">&gt;</span><span class="pln">

</span><span class="pun">&lt;</span><span class="pln">div data</span><span class="pun">-</span><span class="pln">color</span><span class="pun">=</span><span class="str">"red"</span><span class="pun">&gt;</span><span class="typ">This</span><span class="pln"> will be red</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 data</span><span class="pun">-</span><span class="pln">color</span><span class="pun">=</span><span class="str">"green"</span><span class="pun">&gt;</span><span class="typ">This</span><span class="pln"> will be red</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 data</span><span class="pun">-</span><span class="pln">background</span><span class="pun">=</span><span class="str">"red"</span><span class="pun">&gt;</span><span class="typ">This</span><span class="pln"> will NOT be red</span><span class="pun">&lt;/</span><span class="pln">div</span><span class="pun">&gt;</span></pre>

<p>
	اطَّلع على تجربة حيَّة على <a href="http://jsbin.com/waxoked/1/edit?html,css,output" rel="external nofollow">JSBin</a>.
</p>

<h4>
	المحدد [attribute*="value"‎]
</h4>

<p>
	يُحدد العناصر التي لها تحتوي قيمة الخاصية فيها على كلمة معينة.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_56" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    </span><span class="pun">[</span><span class="kwd">class</span><span class="pun">*=</span><span class="str">"foo"</span><span class="pun">]</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        color</span><span class="pun">:</span><span class="pln"> red</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&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">"foo-123"</span><span class="tag">&gt;</span><span class="pln">This will be red</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">"foo123"</span><span class="tag">&gt;</span><span class="pln">This will be red</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">"bar123foo"</span><span class="tag">&gt;</span><span class="pln">This will be red</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">"barfooo123"</span><span class="tag">&gt;</span><span class="pln">This will be red</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">"barfo0"</span><span class="tag">&gt;</span><span class="pln">This will NOT be red</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	اطَّلع على تجربة حيَّة على <a href="http://jsbin.com/dazige/1/edit?html,css,output" rel="external nofollow">JSBin</a>.
</p>

<h4>
	المحدد [attribute~="value"‎]
</h4>

<p>
	يُحدد العناصر التي تظهر فيها القيمة <code>value</code> كإحدى قيم الخاصية.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_58" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    </span><span class="pun">[</span><span class="kwd">class</span><span class="pun">~=</span><span class="str">"color-red"</span><span class="pun">]</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        color</span><span class="pun">:</span><span class="pln"> red</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&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">"color-red foo-bar the-div"</span><span class="tag">&gt;</span><span class="pln">This will be red</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">"color-blue foo-bar the-div"</span><span class="tag">&gt;</span><span class="pln">This will NOT be red</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	اطَّلع على تجربة حيَّة على <a href="http://jsbin.com/posuhim/1/edit?html,css,output" rel="external nofollow">JSBin</a>.
</p>

<h4>
	المُحدد <code>[attribute^="value"‎]</code>
</h4>

<p>
	يُحدد العناصر التي تبدأ قيمة الخاصية فيها بكلمة معينة.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_60" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    </span><span class="pun">[</span><span class="kwd">class</span><span class="pun">^=</span><span class="str">"foo-"</span><span class="pun">]</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        color</span><span class="pun">:</span><span class="pln"> red</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&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">"foo-123"</span><span class="tag">&gt;</span><span class="pln">This will be red</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">"foo-234"</span><span class="tag">&gt;</span><span class="pln">This will be red</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">"bar-123"</span><span class="tag">&gt;</span><span class="pln">This will NOT be red&lt;/div</span></pre>

<p>
	اطّلع على تجربة حيَّة على <a href="http://jsbin.com/yowihi/1/edit?html,css,output" rel="external nofollow">JSBin</a>.
</p>

<h4>
	المحدد <code>[attribute$="value"‎]</code>
</h4>

<p>
	يُحدد العناصر التي تنتهي قيمة الخاصية فيها بكلمة معينة.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_62" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    </span><span class="kwd">class</span><span class="pln">$</span><span class="pun">=</span><span class="str">"file"</span><span class="pun">]</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        color</span><span class="pun">:</span><span class="pln"> red</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&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">"foobar-file"</span><span class="tag">&gt;</span><span class="pln">This will be red</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">"foobar-file"</span><span class="tag">&gt;</span><span class="pln">This will be red</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">"foobar-input"</span><span class="tag">&gt;</span><span class="pln">This will NOT be red</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	اطَّلع على تجربة حيَّة على <a href="http://jsbin.com/yowihi/2/edit?html,css,output" rel="external nofollow">JSBin</a>.
</p>

<h4>
	المحدد <code>[attribute|="value"‎]</code>
</h4>

<p>
	يطابق العناصر التي لها القيمة <code>value</code> للخاصية، أو تبدأ بالكلمة <code>value</code> متبوعة بالمحرف (-).
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_64" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    </span><span class="pun">[</span><span class="pln">lang</span><span class="pun">|=</span><span class="str">"EN"</span><span class="pun">]</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        color</span><span class="pun">:</span><span class="pln"> red</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span><span class="pln">

</span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">lang</span><span class="pun">=</span><span class="atv">"EN-us"</span><span class="tag">&gt;</span><span class="pln">This will be red</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">lang</span><span class="pun">=</span><span class="atv">"EN-gb"</span><span class="tag">&gt;</span><span class="pln">This will be red</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">lang</span><span class="pun">=</span><span class="atv">"PT-pt"</span><span class="tag">&gt;</span><span class="pln">This will NOT be red</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	اطَّلع على تجربة حيَّة على <a href="http://jsbin.com/yowihi/3/edit?html,css,output" rel="external nofollow">JSBin</a>.
</p>

<h4>
	المُحدد <code>[attribute="value" i]</code>
</h4>

<p>
	يُحدد العناصر التي لها قيمة مُعينة للخاصية، مع تجاهل حالة الأحرف.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_66" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    </span><span class="pun">[</span><span class="pln">lang</span><span class="pun">=</span><span class="str">"EN"</span><span class="pln"> i</span><span class="pun">]</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        color</span><span class="pun">:</span><span class="pln"> red</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span><span class="pln">
</span><span class="tag">&lt;div</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">This will be red</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">lang</span><span class="pun">=</span><span class="atv">"en"</span><span class="tag">&gt;</span><span class="pln">This will be red</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">lang</span><span class="pun">=</span><span class="atv">"PT"</span><span class="tag">&gt;</span><span class="pln">This will NOT be red</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	اطّلع على تجربة حيَّة على <a href="http://jsbin.com/yowihi/4/edit?html,css,output" rel="external nofollow">JSBin</a>.
</p>

<h3>
	المُجمِّعات (Combinators)
</h3>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				المحدد
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				<code>div span</code>
			</td>
			<td style="text-align:right">
				مُحدِّد العناصر السليلة (descendant combinator) في CSS الذي يُمثَّل عادةً بفراغٍ واحد ويفصل بين مُحدِّدين، ويطُابِق العنصر الثاني إذا كان ابنًا للعنصر الأول.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>div &gt; span</code>
			</td>
			<td style="text-align:right">
				مُحدِّد العناصر الأبناء (child combinator) في CSS رمزه ‎<code>&gt;</code>‎ ويفصل بين مُحدِّدين، ويطُابِق العنصر الثاني إذا كان ابنًا للعنصر الأول.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>a ~ span</code>
			</td>
			<td style="text-align:right">
				مُحدِّد العناصر الأخوة العامة (general sibling combinator) في CSS رمزه <code>~</code> ويفصل بين مُحدِّدين، ويطابق العنصر الثاني إذا أتى بعد العنصر الأول (وليس بالضرورة أن يأتي بعده مباشرةً)، وكان كلا العنصرين ابناءً لعنصر أب مشترك.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>a + span</code>
			</td>
			<td style="text-align:right">
				مُحدِّد العناصر الأخوة المتجاورة (adjacent sibling combinator) في CSS رمزه <code>+</code> ويفصل بين مُحدِّدين، ويطُابِق العنصر الثاني إذا أتى <strong>مباشرةً</strong> بعد العنصر الأول وكان كلا العنصرين ابناءً لعنصر أب مشترك.
			</td>
		</tr>
	</tbody>
</table>

<p>
	<strong>مُلاحظة</strong>: مُحددات العناصر المتجاورة تُحدد العناصر التالية لعنصر مُعين، ولكن <a href="http://stackoverflow.com/a/36118012/3597276" rel="external nofollow">يُمكن استعمال الخاصية flex order لتحديد العناصر السابقة</a>
</p>

<h4>
	مُحدد العناصر السليلة (Descendant Combinator)
</h4>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_68" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    div p </span><span class="pun">{</span><span class="pln">
           color</span><span class="pun">:</span><span class="pln">red</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span><span class="pln">

</span><span class="tag">&lt;div&gt;</span><span class="pln">
    </span><span class="tag">&lt;p&gt;</span><span class="pln">My text is red</span><span class="tag">&lt;/p&gt;</span><span class="pln">
    </span><span class="tag">&lt;section&gt;</span><span class="pln">
        </span><span class="tag">&lt;p&gt;</span><span class="pln">My text is red</span><span class="tag">&lt;/p&gt;</span><span class="pln">
    </span><span class="tag">&lt;/section&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span><span class="pln">

</span><span class="tag">&lt;p&gt;</span><span class="pln">My text is not red</span><span class="tag">&lt;/p&gt;</span></pre>

<p>
	اطَّلع على تجربة حيَّة على <a href="http://jsbin.com/xonafuz/2/edit?html,css,output" rel="external nofollow">JSBin</a>.
</p>

<h4>
	مُحدد العناصر الأبناء (Child Combinator)
</h4>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_70" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    div </span><span class="pun">&gt;</span><span class="pln"> p </span><span class="pun">{</span><span class="pln">
        color</span><span class="pun">:</span><span class="pln">red</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span><span class="pln">

</span><span class="tag">&lt;div&gt;</span><span class="pln">
    </span><span class="tag">&lt;p&gt;</span><span class="pln">My text is red</span><span class="tag">&lt;/p&gt;</span><span class="pln">
    </span><span class="tag">&lt;section&gt;</span><span class="pln">
           </span><span class="tag">&lt;p&gt;</span><span class="pln">My text is not red</span><span class="tag">&lt;/p&gt;</span><span class="pln">
    </span><span class="tag">&lt;/section&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	اطّلع على تجربة حيَّة على <a href="http://jsbin.com/xonafuz/3/edit?html,css,output" rel="external nofollow">JSBin</a>.
</p>

<h4>
	مُحدد العناصر الإخوة المتجاورة (Adjacent Sibling Combinator)
</h4>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_72" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    p </span><span class="pun">+</span><span class="pln"> p </span><span class="pun">{</span><span class="pln">
        color</span><span class="pun">:</span><span class="pln">red</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span><span class="pln">

</span><span class="tag">&lt;p&gt;</span><span class="pln">My text is not red</span><span class="tag">&lt;/p&gt;</span><span class="pln">
</span><span class="tag">&lt;p&gt;</span><span class="pln">My text is red</span><span class="tag">&lt;/p&gt;</span><span class="pln">
</span><span class="tag">&lt;p&gt;</span><span class="pln">My text is red</span><span class="tag">&lt;/p&gt;</span><span class="pln">
</span><span class="tag">&lt;hr&gt;</span><span class="pln">
</span><span class="tag">&lt;p&gt;</span><span class="pln">My text is not red</span><span class="tag">&lt;/p&gt;</span></pre>

<p>
	اطَّلع على تجربة حيَّة على <a href="http://jsbin.com/xonafuz/4/edit?html,css,output" rel="external nofollow">JSBin</a>.
</p>

<h4>
	مُحدد العناصر الإخوة العامة (General Sibling Combinator)
</h4>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_74" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    p </span><span class="pun">~</span><span class="pln"> p </span><span class="pun">{</span><span class="pln">
        color</span><span class="pun">:</span><span class="pln">red</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span><span class="pln">

</span><span class="tag">&lt;p&gt;</span><span class="pln">My text is not red</span><span class="tag">&lt;/p&gt;</span><span class="pln">
</span><span class="tag">&lt;p&gt;</span><span class="pln">My text is red</span><span class="tag">&lt;/p&gt;</span><span class="pln">
</span><span class="tag">&lt;hr&gt;</span><span class="pln">
</span><span class="tag">&lt;h1&gt;</span><span class="pln">And now a title</span><span class="tag">&lt;/h1&gt;</span><span class="pln">
</span><span class="tag">&lt;p&gt;</span><span class="pln">My text is red</span><span class="tag">&lt;/p&gt;</span></pre>

<p>
	اطّلع على تجربة حيَّة على <a href="http://jsbin.com/xonafuz/5/edit?html,css,output" rel="external nofollow">JSBin</a>.
</p>

<h3>
	الأصناف الزائفة (pseudo-classes)
</h3>

<p>
	<a href="https://www.w3.org/TR/selectors/#pseudo-classes" rel="external nofollow">الأصناف الزائفة</a> هي كلمات مفتاحية تسمح بتحديد العناصر بناءً على معلومات غير متوفرة في البنية الشجرية للصفحة، مثال لذلك تحديد العناصر بناءً على <a href="https://www.w3.org/TR/selectors/#UIstates" rel="external nofollow">حالة</a> أو <a href="https://www.w3.org/TR/selectors/#dynamic-pseudos" rel="external nofollow">ديناميكية</a> العنصر، أو بناءً على الموقع (الأصناف الزائفة <a href="https://www.w3.org/TR/selectors/#structural-pseudos" rel="external nofollow">للبنية الهيكلية</a> <a href="https://www.w3.org/TR/selectors/#target-pseudo" rel="external nofollow">والاستهداف</a>)، أو استعمال <a href="https://www.w3.org/TR/selectors/#negation" rel="external nofollow">الأصناف الزائفة لنفي تحديد عنصر معين</a>، أو لتحديد العناصر <a href="https://www.w3.org/TR/selectors/#lang-pseudo" rel="external nofollow">بناءً على اللغة</a> المستخدمة فيها.
</p>

<p>
	<strong>الصيغة العامة</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_76" style=""><span class="pln">selector</span><span class="pun">:</span><span class="pln">pseudo</span><span class="pun">-</span><span class="kwd">class</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">property</span><span class="pun">:</span><span class="pln"> VALUE</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<h4>
	قائمة الأصناف الزائفة
</h4>
<link>
<table>
	<thead>
		<tr>
			<th style="text-align:right">
				الاسم
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				‎<a href="https://www.w3.org/TR/css3-selectors/#the-user-action-pseudo-classes-hover-act" rel="external nofollow">:active</a>
			</td>
			<td style="text-align:right">
				يُحدد العناصر التي جرى تفعيلها من المستخدم (active elements)، ويُفَعَّل العنصر عندما يضغط المستخدم عليه بزر الفأرة الرئيسي.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:any" rel="external nofollow">:any</a>
			</td>
			<td style="text-align:right">
				يُمكن من انشاء مجموعة من المحددات بحيث تُحدِّد العناصر التي تمتلك هذه المجموعة.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:target" rel="external nofollow">:target</a>
			</td>
			<td style="text-align:right">
				يُحدد عنصرًا فريدًا يُطابِق مُعرِّفه <code>id</code> قسمًا من رابط الصفحة.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://www.w3.org/TR/css3-selectors/#checked" rel="external nofollow">:checked</a>
			</td>
			<td style="text-align:right">
				يُحدد أزرار الإنتقاء (<a href="https://wiki.hsoub.com/HTML/input/radio" rel="external">radio button</a>) أو صناديق التأشير (<a href="https://wiki.hsoub.com/HTML/input/checkbox" rel="external">checkbox</a>) أو الخيارات<code>&lt;option&gt;</code> في عنصر <code>&lt;select&gt;</code> التي قام المستخدم بتحديدها أو إنتقائها.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:default" rel="external nofollow">:default</a>
			</td>
			<td style="text-align:right">
				يُمثِّل أي عنصر مُختار افتراضيًا بين مجموعة من العناصر المتعلقة به.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://www.w3.org/TR/css3-selectors/#enableddisabled" rel="external nofollow">:disabled</a>
			</td>
			<td style="text-align:right">
				يُمثِّل أي عنصر مُعطَّل، ولا يمكن اختياره أو النقر عليه أو الكتابة فيه.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://www.w3.org/TR/selectors/#empty-pseudo" rel="external nofollow">:empty</a>
			</td>
			<td style="text-align:right">
				يُمثِّل أي عنصر ليس له أبناء.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://www.w3.org/TR/css3-selectors/#enableddisabled" rel="external nofollow">:enabled</a>
			</td>
			<td style="text-align:right">
				يُمثِّل أي عنصر مُفعّل، أي يمكن اختياره أو النقر عليه أو الكتابة فيه.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="http://tympanus.net/codrops/css_reference/first" rel="external nofollow">:first</a>
			</td>
			<td style="text-align:right">
				يُستعمَل مع القاعدة ‎<code>@page</code>، ويُمثِّل أوّل صفحة من المستند عند طباعته.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:first-child" rel="external nofollow">:first-child</a>
			</td>
			<td style="text-align:right">
				يُمثِّل أوّل عنصر في مجموعة من العناصر الأخوة.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<a href="https://www.w3.org/TR/css3-selectors/#first-of-type-pseudo" rel="external nofollow">‎:first-of-type</a>
			</td>
			<td style="text-align:right">
				يُمثِّل أوّل عنصر من نوعه في مجموعة من العناصر الأخوة.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://www.w3.org/TR/css3-selectors/#the-user-action-pseudo-classes-hover-act" rel="external nofollow">:focus</a>
			</td>
			<td style="text-align:right">
				يُمثِّل عنصرًا (مثل عناصر النماذج) استقبل التركيز (focus)، ويُفعَّل التركيز إذا ضغط المستخدم أو لمس أحد العناصر أو وصل إليه عبر مفتاح tab على لوحة المفاتيح.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:focus-within" rel="external nofollow">:focus-within</a>
			</td>
			<td style="text-align:right">
				يُمثِّل عنصرًا (مثل عناصر النماذج) استقبل التركيز (foucs) أو احتوى على عنصر قد استقبل التركيز،
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:fullscreen" rel="external nofollow">:full-screen</a>‎
			</td>
			<td style="text-align:right">
				مثِّل العناصر التي تُعرَض عندما يكون المتصفح في وضع ملء الشاشة.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://www.w3.org/TR/css3-selectors/#the-user-action-pseudo-classes-hover-act" rel="external nofollow">:hover</a>
			</td>
			<td style="text-align:right">
				يُطابِق العناصر التي يتفاعل المستخدم معها عبر الفأرة لكن ليس بالضرورة أن يفعِّلها، ويُفعَّل هذا الصنف الزائف عادةً عندما يمرر المستخدم مؤشر الفأرة فوق العنصر.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://www.w3.org/TR/css3-selectors/#indeterminate" rel="external nofollow">:indeterminate</a>
			</td>
			<td style="text-align:right">
				يُمثِّل أيّة نماذج تكون حالتها غير معروفة.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:in-range" rel="external nofollow">:in-range</a>
			</td>
			<td style="text-align:right">
				يُمثِّل أيّة عناصر <code>&lt;input&gt;</code> التي تكون قيمتها ضمن المجال المسموح المُحدَّد عبر الخاصيتين <code>min</code> و <code>max</code>.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="http://tympanus.net/codrops/css_reference/invalid/" rel="external nofollow">:invalid</a>
			</td>
			<td style="text-align:right">
				يُمثِّل أيّة عناصر <code>&lt;input&gt;</code> أو <code>&lt;form&gt;</code> التي فشل التحقق من صحة محتوياتها.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://www.w3.org/TR/css3-selectors/#lang-pseudo" rel="external nofollow">:lang</a>
			</td>
			<td style="text-align:right">
				يطابق العناصر اعتمادًا على لغتها.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:last-child" rel="external nofollow">:last-child</a>
			</td>
			<td style="text-align:right">
				يُمثِّل آخر عنصر في مجموعة من العناصر الأخوة.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://www.w3.org/TR/css3-selectors/#last-of-type-pseudo" rel="external nofollow">:last-of-type</a>
			</td>
			<td style="text-align:right">
				يُمثِّل آخر عنصر من نوعه في مجموعة من العناصر الأخوة.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="http://tympanus.net/codrops/css_reference/left_pseudo-class/" rel="external nofollow">:left</a>
			</td>
			<td style="text-align:right">
				يُستعمَل مع القاعدة ‎<code>@page</code>، ويُمثِّل الصفحات اليسارية (left hand pages) من المستند عند طباعته.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://www.w3.org/TR/css3-selectors/#the-link-pseudo-classes-link-and-visited" rel="external nofollow">:link</a>
			</td>
			<td style="text-align:right">
				يُمثِّل عنصرًا لم تتم زيارته من قبل، ويُطابِق جميع عناصر <area> والتي لها الخاصية <code>href</code> ولم تتم زيارتها بعد.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://www.w3.org/wiki/CSS/Selectors/pseudo-classes/:not" rel="external nofollow">:not()</a>‎
			</td>
			<td style="text-align:right">
				مثِّل العناصر التي لا تُطابِق مُحدِّدًا أو أكثر، يسمى هذا الصنف أيضًا بصنف النفي الزائف.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://www.w3.org/TR/css3-selectors/#nth-child-pseudo" rel="external nofollow">:nth-child</a>
			</td>
			<td style="text-align:right">
				طابِق عنصرًا أو أكثر بناءً على موقعه ضمن مجموعة من العناصر الأخوة.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://www.w3.org/TR/css3-selectors/#nth-of-type-pseudo" rel="external nofollow">:nth-of-type</a>
			</td>
			<td style="text-align:right">
				يُطابِق عنصرًا أو أكثر بناءً على موقعه ضمن مجموعة من العناصر الأخوة (siblings)، وذلك بدءًا من نهاية المجموعة.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:only-child" rel="external nofollow">:only-child</a>
			</td>
			<td style="text-align:right">
				يُطابِق عنصرًا لا يملك أيّة عناصر أخوة، وهذا المُحدِّد يماثل <code>‎:first-child:last-child</code> أو <code>‎‎:nth-‎child(1):nth-last-child(1)‎‎‎</code> لكن درجة التحديد له أقل.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:optional" rel="external nofollow">:optional</a>
			</td>
			<td style="text-align:right">
				يُمثِّل أيّة عناصر <code>&lt;input&gt;</code> أو <code>&lt;select&gt;</code> أو <code>&lt;textarea&gt;</code> التي لم تُضبَط الخاصية <code>required</code> عليها.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:out-of-range" rel="external nofollow">:out-of-range</a>
			</td>
			<td style="text-align:right">
				يُمثِّل أيّة عناصر <code>&lt;input&gt;</code> التي لا تكون قيمتها ضمن المجال المسموح المُحدَّد عبر الخاصيتين <code>min</code> و <code>max</code>.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:placeholder-shown" rel="external nofollow">:placeholder-shown</a>
			</td>
			<td style="text-align:right">
				يُمثِّل أي عنصر <code>&lt;input&gt;</code> أو <code>&lt;textarea&gt;</code> الذي يُظهِر نصًا بديلًا (placeholder text).
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:read-only" rel="external nofollow">:read-only</a>
			</td>
			<td style="text-align:right">
				يُمثِّل أي عنصر فيه محتوى نصي لا يمكن للمستخدم تعديله.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:read-write" rel="external nofollow">:read-write</a>
			</td>
			<td style="text-align:right">
				يُمثِّل أي عنصر فيه محتوى نصي يمكن للمستخدم تعديله.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="http://tympanus.net/codrops/css_reference/right_pseudo-class" rel="external nofollow">:right</a>
			</td>
			<td style="text-align:right">
				يُستعمَل مع القاعدة ‎<code>@page</code>، ويُمثِّل الصفحات اليمينية (right hand pages) من المستند عند طباعته.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:root" rel="external nofollow">:root</a>
			</td>
			<td style="text-align:right">
				يُطابِق العنصر الجذر في شجرة المستند، أي أنَّه يُطابِق العنصر <code>&lt;html&gt;</code> في مستندات HTML، وهو مكافئ للمُحدِّد <code>html</code> إلا أنَّ درجة التحديد له أعلى.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:scope" rel="external nofollow">:scope</a>
			</td>
			<td style="text-align:right">
				يُحدد العناصر التي تُمثل نقطة مرجعية للمحددات.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				‎<a href="https://www.w3.org/TR/css3-selectors/#the-link-pseudo-classes-link-and-visited" rel="external nofollow">:visited</a>
			</td>
			<td style="text-align:right">
				يُمثِّل عنصرًا تمت زيارته من قبل، و<a href="https://hacks.mozilla.org/2010/03/privacy-related-changes-coming-to-css-vistited/" rel="external nofollow">لأسباب تابعة للخصوصية</a> فإنَّ عدد الخاصيات التي يمكن تغيير قيمتها باستخدام هذا المُحدِّد قليلةٌ جدًا.
			</td>
		</tr>
	</tbody>
</table>

<h4>
	صنف الابن الزائف (Child Pseudo Class)
</h4>

<p>
	يُحدد المُحدد الزائف <code>(nth-child(an+1b:</code> العناصر التي تسبقها an+b - 1 عنصر أخ في البنية الشجرية للصفحة، ويمكن أن تأخذ n أي عدد موجب أو الصفر.
</p>

<p>
	<strong>الجدول أدناه يوضح العناصر التي يُحددها المُحدد الزائف في بنية هيكلة تتكون من عنصر أب و عشرة عناصر ابناء</strong>
</p>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				المُحدد الزائف
			</th>
			<th style="text-align:center">
				1
			</th>
			<th style="text-align:center">
				2
			</th>
			<th style="text-align:center">
				3
			</th>
			<th style="text-align:center">
				4
			</th>
			<th style="text-align:center">
				5
			</th>
			<th style="text-align:center">
				6
			</th>
			<th style="text-align:center">
				7
			</th>
			<th style="text-align:center">
				8
			</th>
			<th style="text-align:center">
				9
			</th>
			<th style="text-align:center">
				10
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				<code>first-child:</code>
			</td>
			<td style="text-align:center">
				✔
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>(nth-child(3:</code>
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				✔
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>(nth-child(n+3:</code>
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				✔
			</td>
			<td style="text-align:center">
				✔
			</td>
			<td style="text-align:center">
				✔
			</td>
			<td style="text-align:center">
				✔
			</td>
			<td style="text-align:center">
				✔
			</td>
			<td style="text-align:center">
				✔
			</td>
			<td style="text-align:center">
				✔
			</td>
			<td style="text-align:center">
				✔
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>(nth-child(3n:</code>
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				✔
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				✔
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				✔
			</td>
			<td style="text-align:center">
				 
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>(nth-child(3n+1:</code>
			</td>
			<td style="text-align:center">
				✔
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				✔
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				✔
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				✔
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>(nth-child(-n+3:</code>
			</td>
			<td style="text-align:center">
				✔
			</td>
			<td style="text-align:center">
				✔
			</td>
			<td style="text-align:center">
				✔
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>(nth-child(odd:</code>
			</td>
			<td style="text-align:center">
				✔
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				✔
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				✔
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				✔
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				✔
			</td>
			<td style="text-align:center">
				 
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>(nth-child(even:</code>
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				✔
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				✔
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				✔
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				✔
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				✔
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>last-child:</code>
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				✔
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>(nth-last-child(3:</code>
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				✔
			</td>
			<td style="text-align:center">
				 
			</td>
			<td style="text-align:center">
				 
			</td>
		</tr>
	</tbody>
</table>

<h4>
	المُحدد <code>last-of-type:</code>
</h4>

<p>
	يُستخدم المُحدد <code>last-of-type:</code> لتحديد آخر عنصر من نوعه في مجموعة من العناصر الأخوة. في المثال أدناه تُحدد آخر فقرة وآخر عنوان رئيسي <code>h1</code> في الحاوية.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_80" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    p</span><span class="pun">:</span><span class="kwd">last</span><span class="pun">-</span><span class="pln">of</span><span class="pun">-</span><span class="pln">type </span><span class="pun">{</span><span class="pln">
        background</span><span class="pun">:</span><span class="pln"> </span><span class="com">#C5CAE9;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    h1</span><span class="pun">:</span><span class="kwd">last</span><span class="pun">-</span><span class="pln">of</span><span class="pun">-</span><span class="pln">type </span><span class="pun">{</span><span class="pln">
        background</span><span class="pun">:</span><span class="pln"> </span><span class="com">#CDDC39;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&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;p&gt;</span><span class="pln">First paragraph</span><span class="tag">&lt;/p&gt;</span><span class="pln">
    </span><span class="tag">&lt;p&gt;</span><span class="pln">Second paragraph</span><span class="tag">&lt;/p&gt;</span><span class="pln">
    </span><span class="tag">&lt;p&gt;</span><span class="pln">Last paragraph</span><span class="tag">&lt;/p&gt;</span><span class="pln">
    </span><span class="tag">&lt;h1&gt;</span><span class="pln">Heading 1</span><span class="tag">&lt;/h1&gt;</span><span class="pln">
    </span><span class="tag">&lt;h2&gt;</span><span class="pln">First heading 2</span><span class="tag">&lt;/h2&gt;</span><span class="pln">
    </span><span class="tag">&lt;h2&gt;</span><span class="pln">Last heading 2</span><span class="tag">&lt;/h2&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img alt="8RYda.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52849" data-unique="7xa7258n7" src="https://academy.hsoub.com/uploads/monthly_2020_11/8RYda.png.1c0f19d20bc982637ee5dba02b7e39db.png">
</p>

<p>
	اطّلع على تجربة حيّه على <a href="http://jsfiddle.net/MadalinaTn/YmMZZ/113/" rel="external nofollow">JsFiddle</a>.
</p>

<h4>
	المُحدد <code>in-range</code>:
</h4>

<p>
	<a href="https://developer.mozilla.org/en-US/docs/Web/CSS/:in-range" rel="external nofollow">المُحدد in-range:</a> يُحدد عناصر <code>&lt;input&gt;</code> التي تكون قيمتها ضمن المدى المسموح المُحدَّد عبر الخاصيتين <code>min</code> و <code>max</code>، مما يُتيح عرض تنبيهات تُفيد بأنَّ القيمة المُدخلة ضمن أو خارج المدى المسموح به.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_83" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    input</span><span class="pun">:</span><span class="kwd">in</span><span class="pun">-</span><span class="pln">range </span><span class="pun">{</span><span class="pln">
        border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> solid blue</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&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">"number"</span><span class="pln"> </span><span class="atn">min</span><span class="pun">=</span><span class="atv">"10"</span><span class="pln"> </span><span class="atn">max</span><span class="pun">=</span><span class="atv">"20"</span><span class="pln"> </span><span class="atn">value</span><span class="pun">=</span><span class="atv">"15"</span><span class="tag">&gt;</span><span class="pln">
</span><span class="tag">&lt;p&gt;</span><span class="pln">The border for this value will be blue</span><span class="tag">&lt;/p&gt;</span></pre>

<h4>
	المُحدد <code>not</code>:
</h4>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_85" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    input</span><span class="pun">:</span><span class="kwd">not</span><span class="pun">([</span><span class="pln">disabled</span><span class="pun">]):</span><span class="kwd">not</span><span class="pun">(.</span><span class="pln">example</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">#ccc;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span><span class="pln">

</span><span class="tag">&lt;form&gt;</span><span class="pln">
    Phone: </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"tel"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"example"</span><span class="tag">&gt;</span><span class="pln">
    E-mail: </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">disabled</span><span class="pun">=</span><span class="atv">"disabled"</span><span class="tag">&gt;</span><span class="pln">
    Password: </span><span class="tag">&lt;input</span><span class="pln"> </span><span class="atn">type</span><span class="pun">=</span><span class="atv">"password"</span><span class="tag">&gt;</span><span class="pln">
</span><span class="tag">&lt;/form&gt;</span></pre>

<p>
	المثال أعلاه يُحدد جميع عناصر &lt;input&gt; التي يُمكن للمستخدم التفاعل معها (غير مُعطلة)، ولا تمتلك الصنف <code>example.</code>.
</p>

<p>
	<strong>ملاحظة</strong>: يقبل المُحدد <code>()not:</code> قائمة من المُحددات مفصولة بفاصلة كما هو موضح بالشيفرة التالية:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_87" style=""><span class="pln">input</span><span class="pun">:</span><span class="kwd">not</span><span class="pun">([</span><span class="pln">disabled</span><span class="pun">],</span><span class="pln"> </span><span class="pun">.</span><span class="pln">example</span><span class="pun">)</span><span class="pln"> </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">#ccc;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	اطّلع على تجربة حيَّة على <a href="http://jsbin.com/japere/edit?html,css,output" rel="external nofollow">JSBin</a>.
</p>

<h4>
	المُحدد <code>focus-within:</code>
</h4>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_89" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    div </span><span class="pun">{</span><span class="pln">
        height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">80px</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
    input </span><span class="pun">{</span><span class="pln">
        margin</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">
    div</span><span class="pun">:</span><span class="pln">focus</span><span class="pun">-</span><span class="pln">within </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">#1565C0;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span><span class="pln">

</span><span class="tag">&lt;h3&gt;</span><span class="pln">Background os blue if the input is focused</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;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="tag">/&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<img alt="S4ke4.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52852" data-unique="nnaa0hyp7" src="https://academy.hsoub.com/uploads/monthly_2020_11/S4ke4.png.2ad4e4fc457f3efb5b3c14d6f8ec41ed.png">
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52851" href="https://academy.hsoub.com/uploads/monthly_2020_11/YGn3H.png.938f02eeade470b6f18602083f59b84a.png" rel="" data-fileext="png"><img alt="YGn3H.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52851" data-unique="nc2sn9x24" src="https://academy.hsoub.com/uploads/monthly_2020_11/YGn3H.thumb.png.f083ec2d2da754af0c8868eb0d37ff04.png"></a>
</p>

<h4>
	إنشاء قيم منطقية باستخدام المحددات
</h4>

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

<p>
	<strong>الخطوة الأولى</strong>: أنشئ أي عدد من صناديق الإختيار (checkboxes) بمُعرِّفات خاصة، واجعلها مخفية باستخدام الكلمة المحجوزة <code>hidden</code>.
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_91" style=""><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">id</span><span class="pun">=</span><span class="atv">"sidebarShown"</span><span class="pln"> </span><span class="atn">hidden</span><span class="pln"> </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">id</span><span class="pun">=</span><span class="atv">"darkThemeUsed"</span><span class="pln"> </span><span class="atn">hidden</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">

</span><span class="com">&lt;!-- here begins actual content --&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">"container"</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">"sidebar"</span><span class="tag">&gt;</span><span class="pln">
        </span><span class="com">&lt;!-- Menu, Search, ... --&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
    </span><span class="com">&lt;!-- Some more content ... --&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">"footer"</span><span class="tag">&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>
	<strong>الخطوة الثانية: التحكم في القيمة المنطقية</strong>
</p>

<p>
	يُمكنك التحكم في القيمة المنطقية عن طريق إنشاء عنصر <code>label</code> وربطه مع صنادق التأشير عن طريق الخاصية <code>for</code>.
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_93" style=""><span class="tag">&lt;label</span><span class="pln"> </span><span class="atn">for</span><span class="pun">=</span><span class="atv">"sodebarShown"</span><span class="tag">&gt;</span><span class="pln">Show/Hide the sidebar!</span><span class="tag">&lt;/label&gt;</span></pre>

<p>
	<strong>الخطوة الثالثة: الوصول إلى القيمة المنطقية باستخدام CSS</strong>
</p>

<p>
	يُمكن الحصول على مُحددات تُعطي القيم المنطقية <code>true</code> أو <code>false</code> باستخدام الشيفرة التالية:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_99" style=""><span class="com">/* true */</span><span class="pln">
</span><span class="str">&lt;checkbox&gt;</span><span class="pun">:</span><span class="kwd">checked</span><span class="pln"> </span><span class="pun">~</span><span class="pln"> </span><span class="pun">[</span><span class="pln">sibling of checkbox </span><span class="pun">&amp;</span><span class="pln"> parent of target </span><span class="str">&lt;target&gt;</span><span class="pln">

</span><span class="com">/* false */</span><span class="pln">
</span><span class="str">&lt;checkbox&gt;</span><span class="pun">:</span><span class="kwd">not</span><span class="pun">(:</span><span class="kwd">checked</span><span class="pun">)</span><span class="pln"> </span><span class="pun">~</span><span class="pln"> </span><span class="pun">[</span><span class="pln">sibling of checkbox </span><span class="pun">&amp;</span><span class="pln"> parent of target</span><span class="pun">]</span><span class="pln"> </span><span class="str">&lt;target&gt;</span></pre>

<p>
	<strong>ملاحظة</strong>: يجب استبدال <code>&lt;checkbox&gt;</code>، و<code>[sibling ...]</code>، و <code>&lt;target&gt;</code> بالمُحددات المناسبة، كما هو موضح بالمثال أدناه:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_97" style=""><span class="com">#sidebarShown:checked ~ #container #sidebar {</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">300px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">#darkThemeUsed:checked ~ #container,</span><span class="pln">
</span><span class="com">#darkThemeUsed:checked ~ #footer {</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> </span><span class="com">#333;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	اطَّلع على تجربة حيَّه على <a href="https://jsfiddle.net/yokosbm0/1/" rel="external nofollow">JSFiddle</a>.
</p>

<h4>
	المُحدد <code>only-child</code>:
</h4>

<p>
	يُستخدم لتحديد جميع العناصر التي لا تمتلك إخوة.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_101" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    p</span><span class="pun">:</span><span class="pln">only</span><span class="pun">-</span><span class="pln">child </span><span class="pun">{</span><span class="pln">
        color</span><span class="pun">:</span><span class="pln"> blue</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span><span class="pln">

</span><span class="tag">&lt;div&gt;</span><span class="pln">
    </span><span class="tag">&lt;p&gt;</span><span class="pln">This paragraph is the only child of the div, it will have the color blue</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;p&gt;</span><span class="pln">This paragraph is one of the two children of the div</span><span class="tag">&lt;/p&gt;</span><span class="pln">
    </span><span class="tag">&lt;p&gt;</span><span class="pln">This paragraph is one of the two children of its parent</span><span class="tag">&lt;/p&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	اطَّلع على تجربة حيَّة على <a href="https://jsbin.com/dizosi/edit?html,css" rel="external nofollow">JSBin</a>.
</p>

<h4>
	كيفية تنسيق عناصر input من النوع range
</h4>

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

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				التأثير
			</th>
			<th style="text-align:right">
				المُحددات
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				Thumb
			</td>
			<td style="text-align:right">
				input[type=range]::-webkit-slider-thumb, input[type=range]::-moz-range-thumb,<br>
				input[type=range]::-ms-thumb
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				Track
			</td>
			<td style="text-align:right">
				input[type=range]::-webkit-slider-runnable-track, input[type=range]::-moz-range-track,<br>
				input[type=range]::-ms-track
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				OnFocus
			</td>
			<td style="text-align:right">
				input[type=range]:focus
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				Lower part of the track
			</td>
			<td style="text-align:right">
				<p>
					input[type=range]::-moz-range-progress, input[type=range]::-ms-fill-lower
				</p>

				<p>
					(غير ممكن حاليًا في المتصفحات المعتمدة على WebKit لذا جافاسكربت مطلوبة)
				</p>
			</td>
		</tr>
	</tbody>
</table>

<h4>
	تحديد العناصر باستخدام المُعرِّف الخاص بها (ID) مع تفادي عُمق التحديد العالي للمُعرِّف
</h4>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_106" style=""><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">"element"</span><span class="pln">‎ </span><span class="tag">&gt;</span><span class="pln">
      ....
  </span><span class="tag">&lt;/div&gt;</span></pre>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_108" style=""><span class="pln">  </span><span class="com">#element { ... } /* محددات المعرفات لها عمق تحديد عالي */</span><span class="pln">

  </span><span class="pun">[</span><span class="pln">id</span><span class="pun">=</span><span class="str">"element"</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="pun">}</span><span class="pln"> </span><span class="com">/* يعطي نفس نتيجة محدد المعرف ولكن له عمق تحديد أقل بسبب استعمال محددات الخواص */</span></pre>

<h3>
	محددات الأصناف (Class Name Selectors)
</h3>

<p>
	تُحدد محددات الأصناف العناصر التي تمتلك صنف معين، على سبيل المثال سيُحدد المحدد <code>warning.</code> الحاوية أدناه
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_110" style=""><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"warning"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;p&gt;</span><span class="pln">THis would be some warning copy.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	يُمكن دمج عدد من الأصناف للحصول على عمق تحديد عالي كما هو موضح في المثال أدناه
</p>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_112" style=""><span class="pln">  </span><span class="pun">.</span><span class="pln">important </span><span class="pun">{</span><span class="pln">
      color</span><span class="pun">:</span><span class="pln"> orange</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="pun">.</span><span class="pln">warning </span><span class="pun">{</span><span class="pln">
      color</span><span class="pun">:</span><span class="pln"> blue</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  </span><span class="pun">.</span><span class="pln">warning</span><span class="pun">.</span><span class="pln">important </span><span class="pun">{</span><span class="pln">
      color</span><span class="pun">:</span><span class="pln"> red</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_114" style=""><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">"warning"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;p&gt;</span><span class="pln">This would be some warning copy.</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">"important warning"</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">"important"</span><span class="tag">&gt;</span><span class="pln">This is some really important warning copy.</span><span class="tag">&lt;/p&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	لاحظ عدم وجود مسافة (space) في المُحدد <code>warning.important.</code>، وهذا يعني تحديد العنصر الذي يمتلك الصنفين معًا، أما في حال وجود مسافة بينهما فذلك يعني تحديد العنصر الابن الذي له الصنف <code>important.</code> داخل عنصر اب له الصنف <code>warning.</code>.
</p>

<h3>
	محددات المُعرِّفات (ID Selectors)
</h3>

<p>
	تُستخدم محددات المُعرفات لتحديد العناصر التي لها مُعرِّف (ID) مُعين، ويجب أن يكون المُعرِّف فريدًا (بمعني أنه يظهر مرة واحدة في الصفحة).
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_116" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    </span><span class="com">#exampleId {</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">
    </span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&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">"exampleId"</span><span class="tag">&gt;</span><span class="pln">
    </span><span class="tag">&lt;p&gt;</span><span class="pln">Example</span><span class="tag">&lt;/p&gt;</span><span class="pln">
</span><span class="tag">&lt;/div&gt;</span></pre>

<h3>
	محددات العناصر الزائفة
</h3>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				العنصر
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				<code>after::</code>
			</td>
			<td style="text-align:right">
				إضافة محتوى بعد محتوى العنصر الأصلي.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>before::</code>
			</td>
			<td style="text-align:right">
				إضافة محتوى قبل محتوى العنصر الأصلي.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>first-letter::</code>
			</td>
			<td style="text-align:right">
				تحدد الحرف الأول من كل عنصر.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>first-line::</code>
			</td>
			<td style="text-align:right">
				تحدد السطر الأول من كل عنصر.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>selection::</code>
			</td>
			<td style="text-align:right">
				تُحدد الجزء الذي حدده المستخدم من العنصر عن طريق مؤشر الفأرة.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>backdrop::</code>
			</td>
			<td style="text-align:right">
				تُستخدم لإنشاء خلفية تُخفي الوثيقة الأساسية للعنصر.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>placeholder::</code>
			</td>
			<td style="text-align:right">
				تُمكن من تنسيق النص المالئ (placeholder text) لعناصر الإدخال.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>marker::</code>
			</td>
			<td style="text-align:right">
				تُستخدم لإضافة تنسيق القائمة (list-style) للعنصر.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>spelling-error::</code>
			</td>
			<td style="text-align:right">
				تُستخدم للإشارة لنص به خطأ إملائي.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				<code>grammer-error::</code>
			</td>
			<td style="text-align:right">
				تستخدم للإشارة لنص به خطأ نحوي.
			</td>
		</tr>
	</tbody>
</table>

<p>
	تُضاف العناصر الزائفة إلى محددات CSS وتُمكن من تغيير أنماط أجزاء معينة من العنصر.
</p>

<p>
	سِمة content <code>هي سِمة مطلوبة لإنشاء العناصر الزائفة، ويمكن أن تأخذ قيمة فارغة (content: ‎""</code>‎`)
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_118" style=""><span class="pln">div</span><span class="pun">::</span><span class="pln">after </span><span class="pun">{</span><span class="pln">
    content</span><span class="pun">:</span><span class="pln"> </span><span class="str">'after'</span><span class="pun">;</span><span class="pln">
    color</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"> </span><span class="lit">1px</span><span class="pln"> solid red</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

div </span><span class="pun">{</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> black</span><span class="pun">;</span><span class="pln">
    border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> solid black</span><span class="pun">;</span><span class="pln">
    padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

div</span><span class="pun">::</span><span class="pln">before </span><span class="pun">{</span><span class="pln">
    content</span><span class="pun">:</span><span class="pln"> </span><span class="str">'before'</span><span class="pun">;</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> green</span><span class="pun">;</span><span class="pln">
    border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1px</span><span class="pln"> solid green</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="52845" href="https://academy.hsoub.com/uploads/monthly_2020_11/5Lu08.png.e40818938a10e5d71736deaa3afd01e7.png" rel="" data-fileext="png"><img alt="5Lu08.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52845" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/5Lu08.png.e40818938a10e5d71736deaa3afd01e7.png"></a>
</p>

<h4>
	استخدام العناصر الزائفة لتنسيق القوائم
</h4>

<p>
	غالبًا ما تُستخدم العناصر الزائفة لتغيير شكل إشارات القوائم (وبالأخص القوائم الغير مرتبة (unordered list, ul)).
</p>

<p>
	الخطوة الأولى هي إزالة النقاط التي تسبق النص في القائمة.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_120" style=""><span class="pln">ul </span><span class="pun">{</span><span class="pln">
    list</span><span class="pun">-</span><span class="pln">style</span><span class="pun">-</span><span class="pln">type</span><span class="pun">:</span><span class="pln"> none</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

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

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_122" style=""><span class="pln">li</span><span class="pun">::</span><span class="pln">before </span><span class="pun">{</span><span class="pln">
    content</span><span class="pun">:</span><span class="pln"> </span><span class="str">""</span><span class="pun">;</span><span class="pln">
    display</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">inline</span><span class="pun">-</span><span class="pln">block</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="pln"> </span><span class="lit">10px</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10px</span><span class="pun">;</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10px</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">red</span><span class="pun">,</span><span class="pln"> blue</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_124" style=""><span class="tag">&lt;ul&gt;</span><span class="pln">
    </span><span class="tag">&lt;li&gt;</span><span class="pln">Test I</span><span class="tag">&lt;/li&gt;</span><span class="pln">
    </span><span class="tag">&lt;li&gt;</span><span class="pln">Test II</span><span class="tag">&lt;/li&gt;</span><span class="pln">
</span><span class="tag">&lt;/ul&gt;</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52848" href="https://academy.hsoub.com/uploads/monthly_2020_11/y47uU.png.07134b99c00c50c1358861abf0f8b803.png" rel="" data-fileext="png"><img alt="y47uU.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52848" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/y47uU.png.07134b99c00c50c1358861abf0f8b803.png"></a>
</p>

<h3>
	حساب عُمق التحديد
</h3>

<p>
	لكل مُحدِّد من محددات CSS عُمق محدد، ويزيد عُمق التحديد بزيادة عدد المحدات في السلسلة. ويمكن تقسيم المحددات من حيث عُمق التحديد إلى ثلاث مجموعات كما هو موضح بالجدول التالي:
</p>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				المجموعة
			</th>
			<th style="text-align:right">
				تتكون من
			</th>
			<th style="text-align:right">
				مثال
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				A
			</td>
			<td style="text-align:right">
				محددات المُعرِّفات ID#
			</td>
			<td style="text-align:right">
				‎#foo
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				B
			</td>
			<td style="text-align:right">
				محددات الأصناف (class)، ومحددات السِمات، ومحددات الأصناف الزائفة (pseudo-classes)
			</td>
			<td style="text-align:right">
				‎.bar [title] [colspan=2] :hover :nth-child(2)‎
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				c
			</td>
			<td style="text-align:right">
				محددات الأنواع والعناصر الزائفة
			</td>
			<td style="text-align:right">
				div, li, ::before, ::first-letter
			</td>
		</tr>
	</tbody>
</table>

<p>
	مُحددات المجموعة A لها عُمق التحديد الأكبر، تليها المجموعة B، ثُم المجموعة c.
</p>

<p>
	المحدد العام (*) والمُجمِّعات (مثل &lt; و ~) ليس لها عُمق محدد.
</p>

<p>
	<strong>مثال: عُمق التحديد لبعض محددات CSS</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_126" style=""><span class="com">#foo #baz {} /* a=2, b=0, c=0 */</span><span class="pln">
</span><span class="com">#foo.bar {} /* a=1, b=1, c=0 */</span><span class="pln">
</span><span class="com">#foo {} /* a=1, b=0, c=0 */</span><span class="pln">
</span><span class="pun">.</span><span class="pln">bar</span><span class="pun">:</span><span class="pln">hover </span><span class="pun">{}</span><span class="pln"> </span><span class="com">/* a=0, b=2, c=0 */</span><span class="pln">
div</span><span class="pun">.</span><span class="pln">bar </span><span class="pun">{}</span><span class="pln"> </span><span class="com">/* a=0, b=1, c=1 */</span><span class="pln">
</span><span class="pun">:</span><span class="pln">hover </span><span class="pun">{}</span><span class="pln"> </span><span class="com">/* a=0, b=1, c=0 */</span><span class="pln">
</span><span class="pun">[</span><span class="pln">title</span><span class="pun">]</span><span class="pln"> </span><span class="pun">{}</span><span class="pln"> </span><span class="com">/* a=0, b=1, c=0 */</span><span class="pln">
</span><span class="pun">.</span><span class="pln">bar </span><span class="pun">{}</span><span class="pln"> </span><span class="com">/* a=0, b=1, c=0 */</span><span class="pln">
div ul </span><span class="pun">+</span><span class="pln"> li </span><span class="pun">{}</span><span class="pln"> </span><span class="com">/* a=0, b=0, c=3 */</span><span class="pln">
p</span><span class="pun">::</span><span class="pln">after </span><span class="pun">{}</span><span class="pln"> </span><span class="com">/* a=0, b=0, c=2 */</span><span class="pln">
</span><span class="pun">*::</span><span class="pln">before </span><span class="pun">{}</span><span class="pln"> </span><span class="com">/* a=0, b=0, c=1 */</span><span class="pln">
</span><span class="pun">::</span><span class="pln">before </span><span class="pun">{}</span><span class="pln"> </span><span class="com">/* a=0, b=0, c=1 */</span><span class="pln">
div </span><span class="pun">{}</span><span class="pln"> </span><span class="com">/* a=0, b=0, c=1 */</span><span class="pln">
</span><span class="pun">*</span><span class="pln"> </span><span class="pun">{}</span><span class="pln"> </span><span class="com">/* a=0, b=0, c=0 */</span></pre>

<p>
	<strong>مثال: كيف تتعامل المتصفحات مع عُمق التحديد</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_128" style=""><span class="com">#foo {</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> blue</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">bar </span><span class="pun">{</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> red</span><span class="pun">;</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> black</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	بما أن عُمق التحديد للمُحدِّد ID أكبر من عمق التحديد لمحدد الصنف تُطبق القاعدة <code>color: blue</code> من المُحدد <code>#foo،</code> والقاعدة<code>background: black</code> من المحدد <code>‎.bar</code>
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_130" style=""><span class="pun">.</span><span class="pln">bar </span><span class="pun">{</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> red</span><span class="pun">;</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> black</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="pun">.</span><span class="pln">baz </span><span class="pun">{</span><span class="pln">
    background</span><span class="pun">:</span><span class="pln"> white</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	المحددان في هذا المثال لهما نفس عُمق التحديد، وفي هذه الحالة يتستخدم المتصفح طبيعة CSS التتابعية، أي أنه يُطبق الأنماط المُعرَّفة داخل المحدد <code>‎.bar</code>، ثُم ينتقل لتطبيق الأنماط المُعرَّفة داخل المحدد <code>‎.baz</code>، وتكون النتيجة هي تطبيق القاعدتين <code>color:red</code> و <code>background: white</code>.
</p>

<p>
	<strong>كيفية التحكم في عُمق التحديد</strong>
</p>

<p>
	في المثال أعلاه، للتأكد من أن القاعدة <code>color:red</code> والمعرفة في المحدد <code>‎.bar</code> هي التي ستُطبق، يمكننا إضافة محددات أخرى لزيادة عُمق هذا المحدد، والمثال التالي يوضح ذلك:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_132" style=""><span class="pln">span</span><span class="pun">.</span><span class="pln">bar </span><span class="pun">{}</span><span class="pln"> </span><span class="com">/* a=0, b=1, c=1 */</span><span class="pln">
</span><span class="pun">.</span><span class="pln">baz </span><span class="pun">{}</span><span class="pln"> </span><span class="com">/* a=0, b=1, c=0 */</span></pre>

<p>
	المحدد <code>span.bar</code> يتكون من مُحددين ويكون عمق التحديد له هو 2، أما المحدد <code>‎.baz</code> فعمق التحديد له 1، لذلك يأخذ العنصر قيمة الخاصية color المعرفة داخل المحدد <code>span.bar</code>.
</p>

<p>
	ويُمكن أيضًا تكرار المحدد <code>‎.bar</code> للحصول على نفس النتيجة.
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_134" style=""><span class="pun">.</span><span class="pln">bar </span><span class="pun">.</span><span class="pln">bar </span><span class="pun">{}</span><span class="pln"> </span><span class="com">/* a=0, b=2, c=0 */</span><span class="pln">
</span><span class="pun">.</span><span class="pln">baz </span><span class="pun">{}</span><span class="pln"> </span><span class="com">/* a=0, b=1, c=0 */</span></pre>

<p>
	<strong>مُعرِّف <code>important!</code> والأنماط السطرية (inline styles)</strong>
</p>

<p>
	للمُعرِّف important! والأنماط السطرية (التي تُعرف باستعمال سِمة <code>style</code> لعنصر HTML) عُمق تحديد أكبر من كل محددات CSS.
</p>

<p>
	<strong>ملاحظة</strong>: يُفضل زيادة عمق التحديد بإضافة محددات إضافية بدلًا عن استخدام <code>important!</code> ولا نستعملها إلا للضرورة.
</p>

<p>
	يُمكنك حساب عمق التحديد باستخدام <a href="http://specificity.keegan.st/" rel="external nofollow">أداة قياس عُمق التحديد</a>.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_136" style=""><span class="com">#myDiv {</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">important</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">#outerdiv #myDiv {</span><span class="pln">
    font</span><span class="pun">-</span><span class="pln">weight</span><span class="pun">:</span><span class="pln"> normal</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	يكون ثُخن الخط النهائي في هذا المثال هو <code>bold</code>، وذلك بسبب استخدام المُعرف <code>important!</code> مما يمنع تطبيق القاعدة <code>font-weight: normal</code> على الرغم من أن المُحدد المستعمل لتعريفها له عُمق تحديد أكبر من عُمق تحديد الُمحدد <code>myDiv#</code>.
</p>

<h3>
	توريث التنسيق (Cascading)
</h3>

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

<p>
	<strong>من الخصائص التي تُوَّرث تلقائيًا</strong>: الخاصية <code>font</code>، <code>وcolor</code>، و<code>text-align</code>، و<code>line-height</code>.
</p>

<p>
	<strong>مثال</strong>
</p>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_138" style=""><span class="pln">  </span><span class="com">#myContainer {</span><span class="pln">
      color</span><span class="pun">:</span><span class="pln"> red</span><span class="pun">;</span><span class="pln">
      padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50px</span><span class="pln">
  </span><span class="pun">}</span></pre>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_140" style=""><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">"myContainer"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;h3&gt;</span><span class="pln">Some header</span><span class="tag">&lt;/h3&gt;</span><span class="pln">
      </span><span class="tag">&lt;p&gt;</span><span class="pln">Some paragraph</span><span class="tag">&lt;/p&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	في هذا المثال، يرث العنصران <code>h3</code> و <code>p</code> اللون الأحمر تلقائيًا من العنصر الأب لهما، أما بالنسبة للخاصية <code>padding</code> فهي لا تُوَرِّث قيمتها تلقائيًا.
</p>

<h4>
	الوراثة الإجبارية
</h4>

<p>
	بعض الخصائص مثل <code>padding</code>، و <code>margin</code> لا تُوَرِّث قيمتها للعناصر الابناء تلقائيًا، ولكن يمكن اجبارها على ذلك باستخدام الكلمة المحجوزة <code>inherit</code>.
</p>

<p>
	<strong>مثال</strong>
</p>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_142" style=""><span class="pln">  </span><span class="com">#myContainer {</span><span class="pln">
      color</span><span class="pun">:</span><span class="pln"> red</span><span class="pun">;</span><span class="pln">
      padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">5px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="com">#myContainer p {</span><span class="pln">
      padding</span><span class="pun">:</span><span class="pln"> inherit</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_144" style=""><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">"myContainer"</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;h3&gt;</span><span class="pln">Some header</span><span class="tag">&lt;/h3&gt;</span><span class="pln">
      </span><span class="tag">&lt;p&gt;</span><span class="pln">Some paragraph</span><span class="tag">&lt;/p&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	في هذا المثال يرث العنصران h3 و p كِلا القاعدتين <code>color: red</code> و <code>padding: 5px</code> من العنصر الأب.
</p>

<h4>
	كيفية معالجة تضارب قواعد CSS
</h4>

<p>
	يستخدم توريث التنسيق مع عُمق التحديد لتحديد القيمة النهائية التي تأخذها خاصية CSS، ويحددان الآلية التي تُستخدم لمعالجة التضارب في قواعد CSS.
</p>

<p>
	<strong>تحميل ملفات CSS في المتصفح</strong>
</p>

<p>
	يقرأ المتصفح ملفات CSS من مصادر مختلفة ويقوم بتحميلها حسب الترتيب التالي:
</p>

<ol>
	<li>
		الأنماط الإفتراضية للمتصفح
	</li>
	<li>
		الأنماط التي يُعرفها المستخدم على المتصفح.
	</li>
	<li>
		ملفات CSS والأنماط المُعرفة داخل العنصر <code>&lt;style&gt;</code>.
	</li>
	<li>
		الأنماط السطرية (inline styles).
	</li>
</ol>

<p>
	عندما تُستخدم نفس القاعدة بقيمتين مختلفين في نفس العنصر تُطبَّق القاعدة ذات عُمق التحديد الأكبر، وفي حال تساوت أعماق التحديد، تُطبَّق القاعدة الأخيرة في الملف.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_146" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
</span><span class="pun">.</span><span class="pln">mystyle </span><span class="pun">{</span><span class="pln"> color</span><span class="pun">:</span><span class="pln"> blue</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="com">/* specificity: 0,  1, 0 */</span><span class="pln">
div </span><span class="pun">{</span><span class="pln"> color</span><span class="pun">:</span><span class="pln"> red</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="com">/* specificity: 0, 0, 1 */</span><span class="pln">
</span><span class="tag">&lt;/style&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">"mystyle"</span><span class="tag">&gt;</span><span class="pln">Hello World</span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	بما أنَّ عمق التحديد لمحدات الأصناف (class) أكبر من عمق تحديد مححدات العناصر، يكون لون الخط الناتج أزرق.
</p>

<p>
	<strong>مثال</strong>
</p>

<ul>
	<li>
		ملف CSS خارجي
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_148" style=""><span class="pln">  </span><span class="pun">.</span><span class="kwd">class</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      background</span><span class="pun">:</span><span class="pln"> </span><span class="com">#fff;</span><span class="pln">
  </span><span class="pun">}</span></pre>

<ul>
	<li>
		ملف CSS داخلي (مُحدد بالعنصر <code>&lt;style&gt;</code>)
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_150" style=""><span class="pln">  </span><span class="tag">&lt;style&gt;</span><span class="pln">
      </span><span class="pun">.</span><span class="kwd">class</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
          background</span><span class="pun">:</span><span class="pln"> </span><span class="com">#000;</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">
  </span><span class="tag">&lt;/style&gt;</span></pre>

<p>
	بما أن عُمق التحديد متساوي، يُطبَّق المتصفح الأنماط الموجودة في آخر ملف حُمِّل إليه، أي أنه سيُطبِّق القاعدة <code>background: #000</code>.
</p>

<p>
	<strong>استخدام قواعد توريث التنسيق مع قواعد عمق التحديد</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_152" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
    body </span><span class="pun">&gt;</span><span class="pln"> </span><span class="pun">.</span><span class="pln">mystyle </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"> blue</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="com">/* specificity: 0, 0, 1, 1 */</span><span class="pln">
    </span><span class="pun">.</span><span class="pln">otherstyle </span><span class="pun">&gt;</span><span class="pln"> div </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"> red</span><span class="pun">;</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="com">/* specificity: 0, 0, 1, 1 */</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span><span class="pln">

</span><span class="tag">&lt;body</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"otherstyle"</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">"mystyle"</span><span class="tag">&gt;</span><span class="pln">Hello World</span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="tag">&lt;/body&gt;</span></pre>

<p>
	نُلاحظ تساوي عمق التحديد لكل من المحددين ولذلك يتَّبع المتصفح قواعد توريث التنسيق أي انه سيُطَبِّق الأنماط حسب ترتيب ظهورها في الملف، أي أنه سيُطبَّق في هذه الحالة اللون الأزرق للخاصية ومن ثم ينتقل للقاعدة الثانية والتي تُغيير لون الخلفية للون الأحمر، أي ان اللون النهائي للخلفية سكون أحمر.
</p>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_154" style=""><span class="tag">&lt;style&gt;</span><span class="pln">
div </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">7px</span><span class="pun">;</span><span class="pln">
    border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">3px</span><span class="pln"> dotted pink</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"> yellow</span><span class="pun">;</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> purple</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">mystyle </span><span class="pun">&gt;</span><span class="pln"> div</span><span class="pun">.</span><span class="pln">myotherstyle </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">11px</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"> green</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="com">#elmnt1 {</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">24px</span><span class="pun">;</span><span class="pln">
    border</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> red</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">.</span><span class="pln">mystyle </span><span class="pun">.</span><span class="pln">myotherstyle </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">16px</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"> black</span><span class="pun">;</span><span class="pln">
    color</span><span class="pun">:</span><span class="pln"> red</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span><span class="pln">

</span><span class="tag">&lt;body</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"mystyle"</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">"elmnt1"</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"myotherstyle"</span><span class="tag">&gt;</span><span class="pln">
        Hello, world!
    </span><span class="tag">&lt;/div&gt;</span><span class="pln">
</span><span class="tag">&lt;/body&gt;</span></pre>

<ul>
	<li>
		<p>
			حجم الخط: بما أن المحدد <code>‎#elemnt1</code> له أعلى عمق للعنصر <code>div</code>، يكون حجم الخط النهائي هو 24 بكسل.
		</p>
	</li>
	<li>
		<p>
			الإطار: بما أن المحدد <code>‎#elemnt1</code> له أعلى عمق للعنصر <code>div</code>، تُطبَّق القاعدة <code>border: 3px dotted red</code>.
		</p>
	</li>
	<li>
		<p>
			لون الخلفية: حُدد لون الخلفية في ثلاث محددات هي <code>div</code>، و<code>body.mystle &gt; div.myotherstyle</code>، و<code>‎.mystyle</code>، وبما أن عمق التحديد للمحدد الثاني هو الأكبر، يصبح لون خلفية العنصر أخضر.
		</p>
	</li>
	<li>
		<p>
			لون المحتوى (color): حُدد لون المحتوى في ثلاث محددات هي <code>div</code>، و<code>body.mystle &gt; div.myotherstyle</code>، و<code>.mystyle</code>، وبما أن عمق التحديد للمحدد الأخير هو الأكبر، يصبح لون محتوى العنصر أحمر.
		</p>
	</li>
</ul>

<h2>
	الوحدات
</h2>

<table>
	<thead>
		<tr>
			<th style="text-align:right">
				الوحدة
			</th>
			<th style="text-align:right">
				الوصف
			</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td style="text-align:right">
				%
			</td>
			<td style="text-align:right">
				تحدد الطول كنسبة مئوية من طول العنصر الأب أو العنصر الحالي.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				em
			</td>
			<td style="text-align:right">
				تحدد الطول كنسبة من حجم خط العنصر الأب (font-size) (مثلًا 2em تعني ضعف حجم الخط).
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				rem
			</td>
			<td style="text-align:right">
				تحدد الطول كنسبة من حجم خط العنصر الجذري الذي هو العنصر html.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				vw
			</td>
			<td style="text-align:right">
				تحدد الطول كنسبة من عرض الشاشة.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				vh
			</td>
			<td style="text-align:right">
				تحدد الطول كنسبة من ارتفاع الشاشة.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				vmin
			</td>
			<td style="text-align:right">
				تقيس الأطوال نسبةً ل 1% من البُعد الأصغر لشاشة العرض
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				vmax
			</td>
			<td style="text-align:right">
				تقيس الأطوال نسبةً ل 1% من البُعد الأكبر لشاشة العرض
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				cm
			</td>
			<td style="text-align:right">
				تحدد الطول بالسنتمترات.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				mm
			</td>
			<td style="text-align:right">
				تحدد الطول بالمليمترات.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				in
			</td>
			<td style="text-align:right">
				تحدد الطول بالبوصة (1in‏ =‏96px =‏2.54cm)
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				px
			</td>
			<td style="text-align:right">
				تحدد الطول بالبكسلات.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				pt
			</td>
			<td style="text-align:right">
				تحدد الطول بالنقاط (1pt = ‏1/72in)
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				pc
			</td>
			<td style="text-align:right">
				1pc = 12pt
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				s
			</td>
			<td style="text-align:right">
				تحدد الزمن بالثواني.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				ms
			</td>
			<td style="text-align:right">
				تحدد الزمن بالملي ثانية.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				ex
			</td>
			<td style="text-align:right">
				تحدد الأطوال نسبًة لإرتفاع الخط.
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				ch
			</td>
			<td style="text-align:right">
				تُحدد الأطوال نسبةً لعرض المحرف (0).
			</td>
		</tr>
		<tr>
			<td style="text-align:right">
				fr
			</td>
			<td style="text-align:right">
				وحدة كسرية (تستخدم مع التخطيط الشبكي).
			</td>
		</tr>
	</tbody>
</table>

<h3>
	إنشاء عناصر قابلة للتوسع باستخدام rems و ems
</h3>

<p>
	يُمكن استخدام <code>rem</code> والتي تُحدد الأطوال استنادًا إلى حجم الخط، مع وحدة <code>em</code> لإنشاء عناصر ذات حجم ديناميكي بتغيير حجم الخط.
</p>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_156" style=""><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">"button"</span><span class="pln"> </span><span class="atn">value</span><span class="pun">=</span><span class="atv">"Button"</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">"range"</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">value</span><span class="pun">=</span><span class="atv">"text"</span><span class="tag">&gt;</span></pre>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_158" style=""><span class="pln">  html </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">16px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  input</span><span class="pun">[</span><span class="pln">type</span><span class="pun">=</span><span class="str">"button"</span><span class="pun">]</span><span class="pln"> </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">1rem</span><span class="pun">;</span><span class="pln">
      padding </span><span class="lit">0.5em</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">

  input</span><span class="pun">[</span><span class="pln">type</span><span class="pun">=</span><span class="str">"range"</span><span class="pun">]</span><span class="pln"> </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">1rem</span><span class="pun">;</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">10em</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">

  input</span><span class="pun">[</span><span class="pln">type</span><span class="pun">=</span><span class="str">"text"</span><span class="pun">]</span><span class="pln"> </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">1rem</span><span class="pun">;</span><span class="pln">
      padding</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0.5em</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="52846" href="https://academy.hsoub.com/uploads/monthly_2020_11/Klztk.gif.b554207af56d35df0f56ac5c8003b3ac.gif" rel="" data-fileext="gif"><img alt="Klztk.gif" class="ipsImage ipsImage_thumbnailed" data-fileid="52846" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/Klztk.gif.b554207af56d35df0f56ac5c8003b3ac.gif"></a>
</p>

<h3>
	ضبط حجم الخط باستخدام rem
</h3>

<p>
	<strong>الفرق بين em و rem</strong>
</p>

<ul>
	<li>
		em: تقيس الأطوال كنسبة من حجم خط العنصر الأب.
	</li>
	<li>
		rem: تقيس الأطوال كنسبة من حجم خط عنصر
	</li>
</ul>

<p>
	بإفتراض أنَّ القيمة الإبتدائية لحجم الخط هي 16 بكسل، يُمكن التعبير عن أحجام الخطوط باستخدام rem كالتالي:
</p>

<pre class="ipsCode">10px = 0.625rem
12px = 0.75rem
14px = 0.875rem
16px = 1rem
18px = 1.125rem
20px = 1.25rem
24px = 1.5rem
30px = 1.875rem
32px = 2rem
</pre>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_161" style=""><span class="pln">html </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">16px</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

h1 </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">2rem</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* 32px */</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

p </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">1rem</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* 16px */</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

li </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.5rem</span><span class="pun">;</span><span class="pln"> </span><span class="com">/* 24px */</span><span class="pln">
</span><span class="pun">}</span></pre>

<h3>
	وحدات vmin و vmax
</h3>

<ul>
	<li>
		vmin: تقيس الأطوال نسبةً ل 1% من البُعد الأصغر لشاشة العرض، فإذا كان طول شاشة العرض أقل من عرضها ستقاس الأطوال نسبة إليه والعكس كذلك.
	</li>
	<li>
		vmax: تقيس الأطوال نسبةً ل 1% من البُعد الأكبر لشاشة العرض، فإذا كان طول شاشة العرض أكبر من عرضها ستقاس الأطوال نسبة إليه والعكس كذلك.
	</li>
</ul>

<p>
	وبمعنى آخر:
</p>

<ul>
	<li>
		1vmin تساوي القيمة الأصغر بين القيمتين 1vh و 1vw.
	</li>
	<li>
		1vmax تساوي القيمة الأكبر بين القيمتين 1vh و 1vw.
	</li>
</ul>

<p>
	<strong>ملاحظة</strong>: الوحدة <code>vmax</code> <a href="https://caniuse.com/#feat=viewport-units" rel="external nofollow">غير مدعومة</a> في جميع إصدارات IE و الإصدارات السابقة للإصدار 6.1 من متصفح سفاري.
</p>

<h3>
	الوحدات vh و vw
</h3>

<ul>
	<li>
		vh: ترمز لإرتفاع شاشة العرض، وتقيس الأطول نسبةً لارتفاع شاشة العرض.
	</li>
	<li>
		vw: ترمز لعرض شاشة العرض، وتقيس الأطول نسبةً لعرض شاشة العرض.
	</li>
</ul>

<p>
	<strong>مثال</strong>
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_163" style=""><span class="pln">div </span><span class="pun">{</span><span class="pln">
    width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">20vw</span><span class="pun">;</span><span class="pln">
    height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">20vh</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span></pre>

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

<p>
	<strong>المعادلة العامة</strong>
</p>

<pre class="ipsCode">(parent container width) * (percentage(%)) = output
</pre>

<p>
	<strong>مثال</strong>
</p>

<p>
	إذا كان عرض العنصر الأب 100 بكسل، وأضفنا القاعدة width: 50% للعنصر الابن، يكون عرض العنصر الابن نصف عرض الأب، أي 50 بكسل.
</p>

<ul>
	<li>
		ملف HTML
	</li>
</ul>

<pre class="ipsCode prettyprint lang-html prettyprinted" id="ips_uid_8167_166" style=""><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">"parent"</span><span class="tag">&gt;</span><span class="pln">
      PARENT
      </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"child"</span><span class="tag">&gt;</span><span class="pln">
          CHILD
      </span><span class="tag">&lt;/div&gt;</span><span class="pln">
  </span><span class="tag">&lt;/div&gt;</span></pre>

<ul>
	<li>
		ملف CSS
	</li>
</ul>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_8167_168" style=""><span class="pln">  </span><span class="pun">*{</span><span class="pln">
      color</span><span class="pun">:</span><span class="pln"> </span><span class="com">#CCC;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">parent</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"> blue</span><span class="pun">;</span><span class="pln">
      width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100px</span><span class="pun">;</span><span class="pln">
  </span><span class="pun">}</span><span class="pln">
  </span><span class="pun">.</span><span class="pln">child</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"> green</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">
  </span><span class="pun">}</span></pre>

<p>
	النتيجة
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="52847" href="https://academy.hsoub.com/uploads/monthly_2020_11/t6pPl.png.503c5b6427114d5984fb2505a7176061.png" rel="" data-fileext="png"><img alt="t6pPl.png" class="ipsImage ipsImage_thumbnailed" data-fileid="52847" data-unique="data-unique" src="https://academy.hsoub.com/uploads/monthly_2020_11/t6pPl.png.503c5b6427114d5984fb2505a7176061.png"></a>
</p>

<p>
	ترجمة -وبتصرف- للفصول:
</p>

<ul>
	<li>
		Getting Started with CSS
	</li>
	<li>
		Structure and Formatting of CSS
	</li>
	<li>
		Comments
	</li>
	<li>
		Selectors
	</li>
	<li>
		Length Units
	</li>
	<li>
		Inheritance
	</li>
</ul>

<p>
	من كتاب <a href="https://books.goalkicker.com/CSSBook/" rel="external nofollow">CSS Notes For Professionals</a>
</p>
]]></description><guid isPermaLink="false">1049</guid><pubDate>Sun, 01 Nov 2020 13:00:00 +0000</pubDate></item></channel></rss>
