السمة hidden
بدّل مستوى ظهور العنصر باستخدام السمة المنطقية hidden
السمة hidden درس مجاني في HTML Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في HTML Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة HTML Academy 4 دروس في المجموع.
ما هي hidden؟
تجعل السمة hidden العنصر غير مرئي وتزيله من شجرة إمكانية الوصول:
<p hidden>This paragraph is hidden.</p>
<!-- Equivalent to: display: none in CSS -->
<!-- The element is in the DOM but not rendered -->
<!-- Screen readers do not announce hidden elements -->hidden سمة منطقية
تكون السمات المنطقية موجودة (صحيحة) أو غير موجودة (خاطئة) — ولا تحتاج إلى قيمة:
<!-- All of these are equivalent: -->
<div hidden>Content</div>
<div hidden="">Content</div>
<div hidden="hidden">Content</div>
<!-- Remove with JavaScript: -->
element.removeAttribute('hidden');
<!-- Or set: -->
element.setAttribute('hidden', '');hidden مقابل display:none مقابل visibility:hidden
ثلاث طرق لإخفاء العناصر:
/* hidden attribute = display:none */
/* Element is removed from flow, invisible to AT */
/* visibility: hidden */
/* Element occupies space but is invisible */
/* Still read by some screen readers */
/* opacity: 0 */
/* Element occupies space, invisible, still interactive */
/* Still read by screen readers */
/* Hidden attribute is the simplest for fully hiding content */تبديل الظهور باستخدام JavaScript
تحكّم في الظهور بإضافة السمة hidden أو إزالتها:
const modal = document.getElementById('modal');
// Show:
modal.removeAttribute('hidden');
// or:
modal.hidden = false;
// Hide:
modal.setAttribute('hidden', '');
// or:
modal.hidden = true;
// Toggle:
modal.toggleAttribute('hidden');يمكن لـ CSS تجاوز hidden
يمكن لـ CSS، من خلال display، تجاوز السمة hidden — لذا توخَّ الحذر:
/* This makes hidden elements visible again: */
[hidden] {
display: block !important;
}
/* Do not do this unless you have a very specific reason */
/* The hidden attribute should be trusted as the source of truth for visibility */hidden مقابل aria-hidden
نوعان مختلفان من الإخفاء:
hidden— إخفاء مرئي وإزالة من شجرة إمكانية الوصولaria-hidden="true"— إخفاء من شجرة إمكانية الوصول فقط، مع استمرار العرض بصريًا
<!-- hidden: nothing sees it -->
<div hidden>Completely hidden</div>
<!-- aria-hidden: visual users see it, screen readers skip it -->
<span aria-hidden="true">★★★★☆</span>
<span class="sr-only">4 out of 5 stars</span>نمط الإظهار والإخفاء
تبديل تقليدي للإظهار والإخفاء باستخدام hidden:
<button
aria-expanded="false"
aria-controls="menu"
id="menu-btn"
>Menu</button>
<ul id="menu" hidden>
<li><a href="/">Home</a></li>
<li><a href="/about">About</a></li>
</ul>
<script>
document.getElementById('menu-btn').addEventListener('click', function() {
const menu = document.getElementById('menu');
const expanded = this.getAttribute('aria-expanded') === 'true';
menu.hidden = expanded;
this.setAttribute('aria-expanded', !expanded);
});
</script>قيمة until-found (جديدة)
قدّم HTML 5.1+ القيمة hidden="until-found" للمحتوى القابل للبحث والمطوي:
<details>
<summary>Read More</summary>
<div hidden="until-found" id="more-content">
<p>This content is collapsed but findable by Ctrl+F.</p>
</div>
</details>
<!-- hidden="until-found" hides visually but allows browser Ctrl+F to find and reveal it -->
<!-- Only supported in Chromium-based browsers currently -->سلوك قارئات الشاشة
تخفي السمة hidden المحتوى بالكامل عن التقنيات المساعدة:
- تتجاوز قارئات الشاشة العناصر المخفية
- لا ينتقل تركيز Tab إلى العناصر المخفية
- هذا هو السلوك الصحيح للنوافذ المنبثقة والقوائم الخارجة عن اللوحة واللوحات الشرطية التي ينبغي عدم اجتيازها عند إخفائها
حالات الاستخدام الشائعة
متى تستخدم السمة hidden:
- النوافذ المنبثقة قبل فتحها
- محتوى لوحات علامات التبويب (إظهار لوحة علامة التبويب النشطة وإخفاء اللوحات الأخرى)
- المعالجات القائمة على الخطوات (إظهار الخطوة الحالية)
- الإفصاح التدريجي (إظهار مزيد من المعلومات عند النقر)
- حالات التحميل (استبدال مؤشر التحميل بالمحتوى)
الاحتفاظ بحالة الإخفاء
استخدم localStorage لتذكّر حالة الظهور بين عمليات تحميل الصفحة:
const panel = document.getElementById('info-panel');
const key = 'info-panel-visible';
// Restore state:
if (localStorage.getItem(key) === 'false') {
panel.hidden = true;
}
// On toggle:
document.getElementById('toggle-btn').addEventListener('click', () => {
panel.hidden = !panel.hidden;
localStorage.setItem(key, !panel.hidden);
});تحقق سريع
ما الفرق بين السمة hidden والسمة aria-hidden؟
مراجعة: السمة hidden
أساسيات السمة hidden:
hidden— مكافئة لـdisplay: none- سمة منطقية: وجودها يعني الإخفاء، وغيابها يعني الظهور
- تُزال من شجرة إمكانية الوصول (بخلاف
visibility: hidden) - يمكن تبديلها باستخدام
element.hidden = true/false - تخفي
aria-hidden="true"العنصر عن التقنيات المساعدة فقط، مع إبقاء العرض البصري
الأسئلة الشائعة
هل درس «السمة hidden» مجاني؟
نعم — نص درس «السمة hidden» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة HTML Academy، انتقل إلى CoddyKit PRO. تتضمن دورة HTML Academy 4 دروس في المجموع.
ماذا ستتعلم في «السمة hidden»؟
بدّل مستوى ظهور العنصر باستخدام السمة المنطقية hidden تتمرن على HTML Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ HTML Academy؟
لا تُشترط خبرة سابقة. HTML Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «السمة hidden»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس HTML Academy هذا؟
نعم. كل درس في HTML Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.