การทําให้เนื้อหาที่ยุบเข้าถึงได้ด้วย hide=until-found

Joey Arhar
Joey Arhar

การยุบส่วนเนื้อหา ซึ่งบางครั้งเรียกว่าแอคคอร์เดียน เป็นรูปแบบ UI ที่พบได้ทั่วไป อย่างไรก็ตาม เนื้อหาที่ซ่อนอยู่ในส่วนที่ยุบจะค้นหาโดยใช้การค้นหาในหน้าไม่ได้ นอกจากนี้ คุณยังลิงก์ไปยังข้อความที่ตัดตอนมาภายในภูมิภาคที่ยุบไม่ได้

แอตทริบิวต์ HTML hidden=until-found และเหตุการณ์ beforematch ช่วยแก้ปัญหาเหล่านี้ได้ การเพิ่ม hidden=until-found ลงในคอนเทนเนอร์สําหรับเนื้อหาที่ซ่อนอยู่จะช่วยให้เบราว์เซอร์ค้นหาข้อความในส่วนที่ซ่อนอยู่ได้ และแสดงส่วนนั้นหากพบรายการที่ตรงกัน

ฟีเจอร์เหล่านี้พร้อมใช้งานใน Chrome 102 แล้ว เรามาลองดูวิธีการทำงานของฟีเจอร์กัน

วิธีการใช้งาน

หากเว็บไซต์มีส่วนที่ยุบได้ซึ่งคุณต้องการทําให้ค้นหาได้ ให้แทนที่สไตล์ที่ทำให้ส่วนนั้นซ่อนอยู่ด้วยแอตทริบิวต์ hidden=until-found หากหน้าเว็บมีสถานะอื่นที่ต้องซิงค์กับการแสดงหรือซ่อนส่วน ให้เพิ่ม beforematch event listener ที่จะเริ่มทํางานกับองค์ประกอบ hidden=until-found ก่อนที่เบราว์เซอร์จะแสดงองค์ประกอบ

คำเตือน

เนื้อหา hidden=until-found ควรแสดงได้โดยไม่ต้องใช้ฟีเจอร์ค้นหาในหน้า เพื่อให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่สอดคล้องกัน ผู้ใช้บางรายอาจไม่ได้ใช้ฟีเจอร์ค้นหาในหน้า และเบราว์เซอร์ที่ไม่รองรับ hidden=until-found จะได้รับประสบการณ์การใช้งานเนื้อหาที่ซ่อนอยู่แบบเดิมโดยไม่มีฟีเจอร์ค้นหาในหน้า

หากต้องการตรวจสอบว่าเนื้อหาที่ซ่อนอยู่สามารถค้นหาได้ในเบราว์เซอร์ที่ไม่รองรับ hidden=until-found คุณสามารถขยายเนื้อหาที่ซ่อนอยู่ในเบราว์เซอร์เหล่านั้นได้ทุกเมื่อ การตรวจหาฟีเจอร์ทำได้โดยตรวจสอบว่ามีตัวแฮนเดิลเหตุการณ์ beforematch หรือไม่

if (!(onbeforematch' in document.body)) {
  // expand all hidden content
}

hidden=until-found ใช้พร็อพเพอร์ตี้ content-visibility:hidden ของ CSS แทนพร็อพเพอร์ตี้ display:none ที่แอตทริบิวต์ที่ซ่อนปกติใช้ ซึ่งจำเป็นต้องใช้เพื่อค้นหาเนื้อหาขณะที่ปิดอยู่ แต่ก็มีผลกระทบข้างเคียงดังนี้

  • API เลย์เอาต์บางรายการ เช่น getBoundingClientRect จะรายงานว่าเนื้อหาที่ซ่อนอยู่ภายในองค์ประกอบ hidden=until-found ใช้พื้นที่และมีตำแหน่งในหน้า
  • ระบบจะไม่แสดงผลโหนดย่อยขององค์ประกอบ hidden=until-found แต่องค์ประกอบ hidden=until-found เองจะยังคงมีกล่อง ซึ่งหมายความว่าพร็อพเพอร์ตี้ CSS เช่น เส้นขอบและขนาดที่ชัดเจนจะยังคงส่งผลต่อการแสดงผล

ตัวอย่างของกรณีนี้คือ เดโมต่อไปนี้จะเพิ่มระยะขอบ เส้นขอบ และระยะห่างจากขอบในองค์ประกอบที่มีการใช้ hidden=until-found กล่องที่มีเส้นขอบสีเทาจะปรากฏขึ้นตรงตำแหน่งที่เนื้อหาที่ซ่อนอยู่จะปรากฏขึ้น จากนั้นระบบจะแสดงเนื้อหาที่ซ่อนอยู่เมื่อมีการเปิดเผย นี่คือช่องขององค์ประกอบที่ซ่อนอยู่

หากต้องการหลีกเลี่ยงปัญหานี้ ให้เพิ่มเส้นขอบลงในองค์ประกอบที่ฝังอยู่ภายในคอนเทนเนอร์ที่มี hidden=until-found