HTML Academy · درس

details وsummary لأداة الكشف

إنشاء مكونات التوسيع والطي الأصلية دون JavaScript

الدرس 3 من 413 خطوة

details وsummary لأداة الكشف درس مجاني في HTML Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في HTML Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة HTML Academy 4 دروس في المجموع.

ما هما details وsummary؟

ينشئ العنصران <details> و<summary> أداة إظهار وإخفاء أصلية — أي مكوّنًا للتوسيع والطي — من دون أي JavaScript:

<details>
  <summary>What is HTML?</summary>
  <p>HTML (HyperText Markup Language) is the standard markup language
     used to create web pages.</p>
</details>

كيف يعملان

سلوك التفاعل:

  • لا يظهر افتراضيًا سوى <summary>
  • يؤدي النقر على summary إلى تبديل ظهور المحتوى المتبقي
  • يظهر مثلث إظهار وإخفاء في summary افتراضيًا
  • لا حاجة إلى JavaScript

سمة open

توسّع سمة open عنصر details مسبقًا:

<details open>
  <summary>Installation instructions</summary>
  <ol>
    <li>Download the installer</li>
    <li>Run the installer</li>
    <li>Restart your computer</li>
  </ol>
</details>
<!-- open is a boolean attribute: presence = expanded -->
<!-- Remove it to start collapsed -->

إنشاء قسم الأسئلة الشائعة

تُعد أقسام الأسئلة الشائعة حالة استخدام مثالية:

<h2>Frequently Asked Questions</h2>

<details>
  <summary>Is HTML5 a programming language?</summary>
  <p>No. HTML5 is a markup language that defines the structure and meaning
     of web content. Programming languages like JavaScript add logic and behavior.</p>
</details>

<details>
  <summary>Do I need to close void elements?</summary>
  <p>In HTML5, void elements like &lt;img&gt; and &lt;br&gt; do not require
     a closing slash. Both &lt;br&gt; and &lt;br /&gt; are valid.</p>
</details>

تنسيق details وsummary

خصّص المظهر:

details {
  border: 1px solid #e2e8f0;
  border-radius: 0.5rem;
  padding: 0.75rem 1rem;
  margin-bottom: 0.5rem;
}

summary {
  font-weight: 600;
  cursor: pointer;
  list-style: none;   /* remove default triangle */
}

summary::before {
  content: '▶ ';      /* custom arrow */
}

details[open] > summary::before {
  content: '▼ ';      /* rotate when open */
}

إزالة المثلث الافتراضي

يُطبَّق مثلث الإظهار والإخفاء باستخدام list-style:

/* Remove the default arrow: */
summary {
  list-style: none;
}

/* Firefox: */
summary::-webkit-details-marker {
  display: none;
}

/* Then add a custom indicator: */
summary::after {
  content: '+';
  float: right;
}
details[open] summary::after {
  content: '−';
}

حدث toggle

استمع إلى الفتح والإغلاق باستخدام حدث toggle:

const details = document.querySelector('details');

details.addEventListener('toggle', () => {
  if (details.open) {
    console.log('Details opened');
    // Track analytics, load content, etc.
  } else {
    console.log('Details closed');
  }
});

إنشاء accordion باستخدام details

أنشئ accordion أساسيًا — بحيث تكون لوحة واحدة فقط مفتوحة في كل مرة:

/* Pure CSS accordion using details: */
/* Each item is a details element */
/* For exclusive open, use JavaScript: */

const allDetails = document.querySelectorAll('details');
allDetails.forEach(d => {
  d.addEventListener('toggle', () => {
    if (d.open) {
      allDetails.forEach(other => {
        if (other !== d) other.removeAttribute('open');
      });
    }
  });
});

إمكانية الوصول في details وsummary

ميزات إمكانية الوصول المضمّنة:

  • يتلقى summary تركيز لوحة المفاتيح ويمكن تفعيله باستخدام Enter أو Space
  • تعلن قارئات الشاشة نص summary وحالة التوسيع
  • يظل المحتوى المخفي موجودًا في DOM، لكن يُعلن عنه باعتباره مخفيًا حتى يتم توسيعه

سمة name لـ accordion الحصري

يضيف HTML 2025 سمة name إلى details لإنشاء accordion حصري أصلي:

<details name="faq">
  <summary>Question 1</summary>
  <p>Answer 1...</p>
</details>

<details name="faq">
  <summary>Question 2</summary>
  <p>Answer 2...</p>
</details>
<!-- details with the same name act as a group -->
<!-- Opening one closes the others automatically -->
<!-- Supported in Chrome 120+ and Firefox 130+ -->

تحميل المحتوى عند الطلب باستخدام toggle

حمّل المحتوى فقط عند فتح details:

<details id="advanced">
  <summary>Load advanced settings...</summary>
  <div id="advanced-content">Loading...</div>
</details>

<script>
const d = document.getElementById('advanced');
d.addEventListener('toggle', async () => {
  if (d.open) {
    const res = await fetch('/api/settings');
    const html = await res.text();
    document.getElementById('advanced-content').innerHTML = html;
    d.removeEventListener('toggle', arguments.callee);
  }
}, { once: true });
</script>

تحقق سريع

أي عنصر يوفر نص التفعيل الظاهر دائمًا في أداة إظهار وإخفاء details؟

مراجعة: التفاصيل والملخص

أساسيات أداة الإفصاح:

  • <details> + <summary> — التوسيع والطي الأصليان، من دون الحاجة إلى JavaScript
  • السمة open — التوسيع مسبقًا
  • حدث toggle — الاستجابة للفتح والإغلاق
  • التنسيق باستخدام CSS؛ وإزالة المثلث الافتراضي باستخدام list-style: none
  • السمة name — أكورديون حصري (Chrome 120 فأحدث)
البدء مجانًا

تعلم HTML مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
40
الدروس
159

الأسئلة الشائعة

هل درس «details وsummary لأداة الكشف» مجاني؟

نعم — نص درس «details وsummary لأداة الكشف» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة HTML Academy، انتقل إلى CoddyKit PRO. تتضمن دورة HTML Academy 4 دروس في المجموع.

ماذا ستتعلم في «details وsummary لأداة الكشف»؟

إنشاء مكونات التوسيع والطي الأصلية دون JavaScript تتمرن على HTML Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ HTML Academy؟

لا تُشترط خبرة سابقة. HTML Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «details وsummary لأداة الكشف»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس HTML Academy هذا؟

نعم. كل درس في HTML Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. aside للمحتوى التكميلي
  2. مراجعة figure وfigcaption
  3. details وsummary لأداة الكشف
  4. عنصرا progress وmeter
← العودة إلى HTML Academy