HTML Academy · บทเรียน

details และ summary: วิดเจ็ตแสดงรายละเอียด

สร้างองค์ประกอบขยายและยุบแบบเนทีฟโดยไม่ใช้ JavaScript

บทเรียน 3 จาก 413 ขั้นตอน

details และ summary: วิดเจ็ตแสดงรายละเอียด เป็นบทเรียน HTML Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 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 ทำให้ 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 -->

การสร้าง FAQ

ส่วนคำถามที่พบบ่อยเป็นกรณีใช้งานที่เหมาะสมอย่างยิ่ง:

<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 {
  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:

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');
  }
});

แอคคอร์เดียนด้วยรายละเอียด

สร้างแอคคอร์เดียนพื้นฐาน โดยเปิดแผงได้ครั้งละหนึ่งแผงเท่านั้น:

/* 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');
      });
    }
  });
});

การเข้าถึงสำหรับรายละเอียดและสรุป

คุณลักษณะการเข้าถึงที่มีมาให้ในตัว:

  • summary รับโฟกัสจากแป้นพิมพ์และเรียกใช้งานได้ด้วย Enter หรือ Space
  • โปรแกรมอ่านหน้าจอประกาศข้อความ summary และสถานะการขยาย
  • เนื้อหาที่ซ่อนอยู่ใน DOM แต่จะถูกประกาศว่าซ่อนอยู่จนกว่าจะขยาย

แอตทริบิวต์ name สำหรับแอคคอร์เดียนแบบเลือกได้รายการเดียว

HTML รุ่นปี 2025 เพิ่ม name ให้กับ details เพื่อสร้างแอคคอร์เดียนแบบเลือกได้เพียงรายการเดียวโดยไม่ต้องใช้สคริปต์เพิ่มเติม:

<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+ -->

การโหลดเนื้อหาเมื่อจำเป็นด้วยการสลับสถานะ

โหลดเนื้อหาเมื่อเปิด 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> + <summary> — ขยาย/ยุบเนื้อหาได้ในตัว โดยไม่ต้องใช้ JavaScript
  • แอตทริบิวต์ open — ขยายไว้ล่วงหน้า
  • เหตุการณ์สลับ — ตอบสนองเมื่อเปิด/ปิด
  • กำหนดรูปแบบด้วย CSS และนำสามเหลี่ยมเริ่มต้นออกด้วย list-style: none
  • แอตทริบิวต์ name — สร้างแอคคอร์เดียนที่เปิดได้ทีละรายการ (Chrome 120 ขึ้นไป)
เริ่มต้นได้ฟรี

เรียนรู้ HTML ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
40
บทเรียน
159

คำถามที่พบบ่อย

บทเรียน “details และ summary: วิดเจ็ตแสดงรายละเอียด” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “details และ summary: วิดเจ็ตแสดงรายละเอียด” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส HTML Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส HTML Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “details และ summary: วิดเจ็ตแสดงรายละเอียด”

สร้างองค์ประกอบขยายและยุบแบบเนทีฟโดยไม่ใช้ JavaScript คุณปฏิบัติ HTML Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน HTML Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน HTML Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “details และ summary: วิดเจ็ตแสดงรายละเอียด” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน HTML Academy นี้ได้ไหม

ได้ บทเรียน HTML Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. aside: เนื้อหาเสริม
  2. figure และ figcaption ทบทวนอีกครั้ง
  3. details และ summary: วิดเจ็ตแสดงรายละเอียด
  4. องค์ประกอบ progress และ meter
← กลับไปที่ HTML Academy