ما هي سمات HTML
السمة تضيف معلومة إلى العنصر. توضع داخل وسم الفتح وتُكتب كاسم ثم علامة يساوي ثم قيمة بين علامتي تنصيص: name="value". يمكن أن يحمل العنصر أي عدد من السمات مفصولة بمسافات.
href تخبر الرابط إلى أين يذهب، وsrc وalt تصفان الصورة، وtype وplaceholder وrequired تضبط حقل الإدخال. لكل عنصر مجموعته الخاصة من السمات، وبعضها (السمات العامة أدناه) يعمل على كل العناصر.
قواعد الصيغة
<input type="text" name="city" value="Paris" disabled>
- اسم، ثم علامة يساوي، ثم قيمة بين علامتي تنصيص. علامات التنصيص المزدوجة هي العرف، والمفردة تعمل أيضًا (
title='Say "hi"'هي طريقة وضع علامة تنصيص مزدوجة داخل القيمة). - الأسماء لا تتأثر بحالة الأحرف.
CLASSوclassالسمة نفسها. أما القيم فتتأثر:class="Box"وclass="box"فئتان مختلفتان. - علامات التنصيص اختيارية عند غياب المسافات، لكن ضعها على أي حال.
class=big boxيعطي العنصر الفئةbigوسمة ثانية بلا معنى اسمهاbox. - الترتيب لا يهم.
<img alt="" src="a.png">هو نفسه<img src="a.png" alt="">. - كل اسم مرة واحدة في العنصر. إذا تكررت سمة مرتين، يحتفظ المتصفح بالأولى ويتجاهل الثانية بصمت.
السمات المنطقية (Boolean)
بعض السمات إما مفعّلة أو معطّلة. في هذه السمات الوجود يعني true، والقيمة يتم تجاهلها. disabled وchecked وrequired وreadonly وhidden وmultiple وautofocus وopen كلها تعمل بهذه الطريقة.
الزر الثالث معطّل رغم أن القيمة تقول false، لأن المتصفح يتحقق فقط من وجود السمة. لإيقاف سمة منطقية احذفها. وفي JavaScript يفعل button.disabled = false ذلك بالضبط.
السمة class
class تعطي العنصر اسمًا أو أكثر يستخدمه CSS وJavaScript لإيجاده. يمكن لعدة عناصر أن تشترك في فئة واحدة، ويمكن للعنصر الواحد أن يحمل عدة فئات مفصولة بمسافات:
كل فئة إضافية تضيف قواعدها فوق ما سبق. في CSS تُحدَّد الفئة بنقطة (.card)، وفي JavaScript يغيّرها element.classList.add('featured') وclassList.remove. الفئات هي الطريقة المعتادة للتنسيق: معظم CSS الذي تكتبه سيستهدف فئات.
السمة id
id تعطي العنصر اسمًا يجب أن يكون فريدًا في الصفحة. استخدمها عندما تحتاج عنصرًا واحدًا بالضبط: هدف رابط، أو <label for>، أو document.getElementById.
النقر على التسمية ينقل التركيز إلى حقل الإدخال، لأن for="email" تشير إلى id="email". والرابط ينتقل إلى #pricing لأن الجزء بعد # في href يطابق قيمة id.
class | id | |
|---|---|---|
| كم عنصرًا يمكن أن يشترك فيها | أي عدد | عنصر واحد (فريد) |
| عدد القيم في العنصر | عدة قيم مفصولة بمسافات | قيمة واحدة |
| محدد CSS | .name | #name |
| الاستخدام المعتاد | تنسيق مجموعات من العناصر | أهداف الروابط، التسميات، عنصر محدد في JavaScript |
لا يمكن أن يحتوي id على مسافات. ابدأه بحرف ليسهل استخدامه في CSS: #2col ليس محدد CSS صالحًا من دون تهريب.
السمات العامة
هذه السمات تعمل على أي عنصر:
| السمة | وظيفتها |
|---|---|
id | اسم فريد للعنصر |
class | قائمة أسماء فئات مفصولة بمسافات |
style | CSS مضمّن، مثل style="color: red" |
title | نص تلميح يظهر عند مرور المؤشر |
lang | لغة المحتوى، مثل lang="fr" |
dir | اتجاه النص: ltr أو rtl أو auto |
hidden | تخفي العنصر (منطقية) |
tabindex | تجعل العنصر قابلًا للتركيز بمفتاح Tab، أو تحدد ترتيبه |
contenteditable | تتيح للمستخدم تحرير نص العنصر |
data-* | بياناتك الخاصة، تُقرأ بـ JavaScript |
لـ سمة lang صفحة خاصة لأنها تؤثر في قارئات الشاشة والترجمة والبحث.
سمات data-*
عندما تحتاج إلى تخزين قيمة خاصة بك على عنصر، ابدأ اسم السمة بـ data-. أي اسم يصلح بعد البادئة، وتقرأ JavaScript القيم عبر element.dataset، مع تحويل الشرطات إلى أسلوب camelCase:
data-product-id تصبح dataset.productId. القيم تعود دائمًا كنصوص، لذلك حوّلها بـ Number() قبل إجراء عمليات حسابية. ويمكن لـ CSS أيضًا أن يحددها: [data-price="4.50"].
أخطاء شائعة
- كتابة
classمرتين.<div class="a" class="b">يحتفظ بـaفقط. ضع الاثنتين في سمة واحدة:class="a b". - تكرار id. عنصران بنفس id يعطّلان روابط
#linksوالتسميات وgetElementByIdالتي تُرجع الأول فقط. استخدم class لأي شيء متكرر. disabled="false"أوchecked="false". السمة ما زالت موجودة، إذن ما زالت مفعّلة. احذفها بدلًا من ذلك.- قيم بلا علامات تنصيص تحتوي على مسافات.
alt=My photoيضبطaltعلىMy. ضع كل قيمة بين علامتي تنصيص. - اختراع سمات بلا
data-.<div price="4">يجعل HTML غير صالح وقد يتعارض مع سمة قياسية مستقبلية. استخدمdata-price.
الأسئلة الشائعة
ما هي سمة HTML؟
السمة معلومة إضافية تُكتب داخل وسم الفتح بالشكل name="value". تضبط العنصر: href تحدد إلى أين يذهب الرابط، وsrc وalt تصفان الصورة، وclass وid تتيحان لـ CSS وJavaScript إيجاد العنصر.
ما الفرق بين class وid في HTML؟
يجب أن يكون id فريدًا في الصفحة، فهو يحدد عنصرًا واحدًا لروابط #fragment و<label for> وgetElementById. أما class فيمكن أن تشترك فيه عناصر كثيرة، ويمكن أن يحمل العنصر الواحد عدة فئات مفصولة بمسافات. استخدم الفئات للتنسيق.
كيف أضيف أكثر من class إلى عنصر HTML؟
ضعها في سمة class واحدة مفصولة بمسافات: <div class="card featured dark">. كتابة class مرتين لا تعمل: يحتفظ المتصفح بالأولى فقط.
هل تحتاج سمات HTML إلى علامات تنصيص؟
علامات التنصيص اختيارية إذا لم تحتوِ القيمة على مسافات أو رموز خاصة، لكن وضعها دائمًا هو العادة الآمنة. class=big box يعطي العنصر الفئة big مع سمة منفصلة اسمها box.
لماذا يبقى الزر معطلًا مع disabled="false"؟
disabled سمة منطقية: وجودها يعني true مهما كانت القيمة. لتفعيل العنصر احذف السمة، أو اكتب button.disabled = false في JavaScript، وهذا يحذفها.
هل يمكنني اختراع سمات HTML خاصة بي؟
استخدم البادئة data-: السمتان data-price="12" وdata-user-id="7" صالحتان على أي عنصر ويمكن قراءتهما في JavaScript عبر element.dataset. الأسماء المخترعة بلا البادئة تجعل HTML غير صالح.