details และ summary: วิดเจ็ตแสดงรายละเอียด
สร้างองค์ประกอบขยายและยุบแบบเนทีฟโดยไม่ใช้ JavaScript
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 <img> and <br> do not require
a closing slash. Both <br> and <br /> 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- aside: เนื้อหาเสริม
- figure และ figcaption ทบทวนอีกครั้ง
- details และ summary: วิดเจ็ตแสดงรายละเอียด
- องค์ประกอบ progress และ meter