HTML: عناصر HTML

افهم الفرق بين عناصر مستوى الكتلة (block-level) والعناصر السطرية (inline)، وتقن بالطريقة الصحيحة لتداخل الوسوم.

1. ما هي عناصر HTML

في HTML، العنصر (element) يشير إلى الهيكل الكامل من وسم البداية إلى وسم النهاية، بما في ذلك الوسوم نفسها والمحتوى المغلف. يحلل المتصفح كل عنصر كعقدة في شجرة DOM، ليشكل الهيكل الهرمي للصفحة.

يتكون عنصر HTML الكامل من ثلاثة أجزاء:

▶ مثال

HTML
<p>هذا عنصر فقرة</p>
<!-- وسم بداية + محتوى + وسم نهاية = عنصر كامل -->

<a href="https://example.com">انقر هنا</a>
<!-- يمكن أن يحتوي العنصر على سمات (href)، تُكتب في وسم البداية -->
▶ جرّب الكود

ومع ذلك، ليست كل العناصر تحتوي على محتوى. بعض العناصر ليس لها محتوى ولا تحتاج إلى وسم نهاية؛ تُسمى العناصر الفارغة (void elements).

HTML
<br>        <!-- عنصر فاصل سطر: لا محتوى، لا وسم نهاية -->
### ▶ مثال
<hr>        <!-- خط أفقي: عنصر فارغ أيضًا -->
<img src="/assets/images/tutorials/html-example-photo.webp" alt="صورة نموذجية">  <!-- عنصر صورة: سمات فقط، لا محتوى -->
<input type="text" name="username">  <!-- عنصر إدخال -->

الفرق الرئيسي: العناصر العادية لها وسم بداية ومحتوى ووسم نهاية؛ العناصر الفارغة لها وسم بداية فقط (عادةً ما تحمل سمات)، ولا محتوى ولا وسم نهاية.

📌 العناصر وعُقد DOM: في هيكل DOM، كل عنصر يقابل عقدة. <html> هي العقدة الجذر، و <body> و <head> هما عقدتا ابن. علاقات التداخل بين العناصر تحدد علاقات الأبوة والبنوة والأخوة بين العقد. يمكنك مراجعة فصل أساسيات HTML لمراجعة مفهوم DOM.


2. عناصر مستوى الكتلة مقابل العناصر السطرية

تنقسم عناصر HTML إلى فئتين بناءً على كيفية ترتيبها في الصفحة: عناصر مستوى الكتلة (block-level elements) و العناصر السطرية (inline elements). فهم الفرق بينهما هو الخطوة الأولى لإتقان تخطيط الصفحة.

(1) عناصر مستوى الكتلة

تتميز عناصر مستوى الكتلة بأنها تشغل العرض الكامل للعنصر الأب. بغض النظر عن ضيق محتواها، فإنها دائمًا تشغل عرض الصف بالكامل، والعناصر التي قبلها وبعدها ستظهر في أسطر منفصلة.

عناصر مستوى الكتلة الشائعة موضحة في الجدول أدناه: الوسمالوصفالوسمالوصفالوسمالوصف<h1>~<h6>العناوين 1-6<dl>قائمة وصف<article>مقال<p>فقرة<dt>مصطلح الوصف<aside>شريط جانبي<fieldset>مجموعة حقول<dd>تفاصيل الوصف<footer>تذييل<hr>خط أفقي<header>رأس<table>جدول<ol>قائمة مرتبة<nav>تنقل<div>حاوية كتلة<ul>قائمة غير مرتبة<main>المحتوى الرئيسي<form>نموذج<li>عنصر قائمة<section>قسم

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

(2) العناصر السطرية

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

العناصر السطرية الشائعة موضحة في الجدول أدناه:

▶ مثال

الوسمالوصفالوسمالوصف<a>ارتباط تشعبي<ins>نص مدخل<b>عريض<del>نص محذوف<strong>نص مهم<button>زر<em>تأكيد (مائل)<input>إدخال نموذج<i>مائل<img>صورة<small>نص صغير<span>حاوية سطرية<sub>حرف منخفض<sup>حرف مرتفع

HTML
<p>هذا النص يحتوي على <strong>أجزاء عريضة</strong> و <em>أجزاء مائلة</em>، والتي تظهر <span style="color: red">على نفس السطر</span>.</p>
▶ جرّب الكود

(3) الفروق الأساسية بينهما

HTML
<!-- مقارنة مستوى الكتلة -->
<div style="border: 1px solid #e74c3c; padding: 4px;">الكتلة 1</div>
<div style="border: 1px solid #e74c3c; padding: 4px;">الكتلة 2</div>
<!-- كل div تشغل صفها الخاص، متراصة عموديًا -->

<!-- مقارنة العناصر السطرية -->
<span style="border: 1px solid #3498db; padding: 4px;">سطرية 1</span>
<span style="border: 1px solid #3498db; padding: 4px;">سطرية 2</span>
<!-- العنصران السطريان على نفس السطر، مرتبان أفقيًا -->
📌 قواعد أساسية:

  • عناصر مستوى الكتلة يمكن أن تحتوي على عناصر سطرية وعناصر كتلة أخرى.
  • العناصر السطرية يمكنها فقط احتواء عناصر سطرية (أو نص)؛ ولا يمكنها مباشرةً احتواء عناصر من مستوى الكتلة.
  • استثناء: في HTML5، يمكن لوسم <a> أن يغلف عناصر من مستوى الكتلة، مثل تحويل بطاقة كاملة إلى رابط قابل للنقر.

3. تداخل العناصر والتسلسل الهرمي

يمكن لعناصر HTML أن تغلف بعضها البعض مثل دمى الماتريوشكا. هذه العلاقة تُسمى التداخل (nesting). يحدد هيكل التداخل العلاقات الهرمية للعناصر في شجرة DOM.

▶ مثال

(1) علاقات عُقد شجرة DOM

عندما تتداخل العناصر داخل بعضها البعض، تتشكل ثلاثة أنواع من العلاقات بينها:

▶ مثال

هيكل التداخل التالي يوضح بوضوح العلاقات الهرمية بين العناصر:

HTML
<body>                        <!-- العقدة الأب -->
<h1>عنوان الصفحة</h1>         <!-- عقدة ابن + الأخ رقم 1 -->
<p>                          <!-- عقدة ابن + الأخ رقم 2 -->
هذه الفقرة تحتوي على <strong>نص مؤكد</strong>  <!-- عقدة حفيد (ابن p) -->
بداخلها.
</p>
</body>
▶ جرّب الكود

هيكل شجرة DOM المقابل هو كما يلي:

PLAIN
body
├── h1 ("عنوان الصفحة")
└── p
├── text: "هذه الفقرة تحتوي على "
├── strong
├── text: "نص مؤكد"
└── text: " بداخلها."

(2) التداخل الصحيح مقابل التداخل غير الصحيح

يجب أن يتبع التداخل مبدأ "آخر من يدخل، أول من يخرج" (LIFO) — العنصر الأعمق الذي فُتح أولاً يجب أن يُغلق آخرًا. إذا أغلقت الوسوم بشكل متقاطع، ينتج عن ذلك تداخل غير صحيح:

HTML
<!-- تداخل صحيح: أولاً يُفتح، آخرًا يُغلق -->
<div>
<p><strong>نص مهم</strong> يليه نص عادي.</p>
### ▶ مثال
</div>

<!-- تداخل غير صحيح: وسوم متقاطعة -->
<div>
<p><strong>نص مهم</p></strong>
</div>
<!-- سيحاول المتصفح تصحيح هذا الخطأ، لكنه قد يسبب مشاكل تخطيط غير متوقعة -->
⚠️ احتياطات التداخل:

  • العناصر السطرية (مثل <span> و <strong>) لا يمكنها تداخل عناصر من مستوى الكتلة (مثل <div> و <p>).
  • وسم <p> لا يمكنه تداخل عناصر كتلة أخرى بداخله، مثل <div> أو <p> آخر.
  • التداخل العميق، رغم صحته نحويًا، يقلل من قابلية القراءة والصيانة. يُوصى بالحفاظ على التداخل ضمن 3~4 مستويات.
  • استخدم ميزة "التفقد" في المتصفح (F12) لاستكشاف هيكل شجرة DOM بصريًا — إنها طريقة تعلم ممتازة.

❓ أسئلة شائعة

س ما الفرق بين عناصر مستوى الكتلة والعناصر السطرية؟ متى أستخدم كل منهما؟
ج الفرق الرئيسي هو "هل تبدأ سطرًا جديدًا". عناصر مستوى الكتلة تشغل صفًا كاملًا — مثل الفقرة — وتُستخدم لهيكلة الصفحة (عناوين، أقسام، حاويات). العناصر السطرية لا تكسر التدفق — مثل كلمة — وتُستخدم لتنسيق النص داخل المحتوى (غامق، روابط، تأكيد). في الممارسة العملية، 90% من التخطيط يستخدم عناصر مستوى الكتلة (div، section، article)؛ العناصر السطرية (strong، em، a) فقط لتنسيق النص.
س لماذا لا يمكن أن تحتوي العناصر السطرية على عناصر مستوى الكتلة؟
ج هذا متطلب دلالي في HTML. عناصر مستوى الكتلة تمثل "قسمًا مستقلًا من المحتوى"، بينما العناصر السطرية تمثل "جزءًا من تدفق النص". وضع كتلة داخل سطري مثل وضع فقرة داخل كلمة — لا معنى له دلاليًا. قد يتحمل المتصفح ذلك، لكنه يخلق هيكل DOM فوضوي ويؤثر على أنماط CSS وعمليات JavaScript. الاستثناء الوحيد في HTML5 هو وسم <a>، الذي يمكنه تغليف عناصر مستوى الكتلة لجعل بطاقة كاملة قابلة للنقر.
س <strong> و <b> كلاهما غامق، <em> و <i> كلاهما مائل — ما الفرق؟
ج الفرق هو الدلالة. <strong> يعني "هذا النص مهم" و <em> يعني "هذا النص يحتاج إلى تأكيد" — ي传达ان المعنى. <b> فقط "يجعل النص غامقًا" و <i> فقط "يجعل النص مائلًا" — يؤثران فقط على المظهر. محركات البحث وقارئات الشاشة تتعرف على دلالة <strong> و <em> لكنها تتجاهل <b> و <i>. القاعدة: استخدم <strong>/<em> لتأكيد المعنى؛ استخدم <b>/<i> أو CSS للتنسيق البصري فقط.

📖 ملخص

📝 تمارين

  1. تجربة الكتلة مقابل السطري: أنشئ صفحة باستخدام اثنين <div> (مستوى كتلة) واثنين <span> (سطري) بنفس المحتوى. أضف نمط حدود style="border:1px solid red" ولاحظ كيف يترتبان بشكل مختلف في المتصفح.
  2. تمرين شجرة DOM: اكتب هيكل شجرة DOM للكود التالي (ارسم مخطط الشجرة يدويًا): <div><h2>Title</h2><p>Text<strong>Emphasis</strong>End</p></div>
Web-Tutorial.com

فريق Web-Tutorial التقني

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

100%