โปรดทำให้หัวตารางคงอยู่กับที่
- บนเว็บเรามักจะพบกับชุดข้อมูลขนาดใหญ่หรือเลย์เอาต์แบบตารางอยู่บ่อยครั้ง
- ปัญหาเกิดขึ้นเมื่อเริ่มเลื่อนดูตารางที่มีหลายร้อยแถว
- เมื่อหัวตารางหายไป ผู้ใช้จะจดจำได้ยากว่าแต่ละคอลัมน์เกี่ยวข้องกับอะไร
หัวตารางแบบคงที่
- หัวตารางแบบคงที่อาจดูเหมือนเวทมนตร์ แต่จริง ๆ แล้วทำได้ง่ายมาก
- เพียงเพิ่มคุณสมบัติ CSS แค่สองรายการให้กับ
thead:
position: sticky;
top: 0;
sticky รองรับอย่างเสถียรในหลายเบราว์เซอร์ โดยมีอัตราการรองรับทั่วโลกราว 96%
- ยังช่วยปรับปรุงประสบการณ์ผู้ใช้ได้อีกด้วย
ความเห็นของ GN⁺
- เมื่อจัดการกับตารางขนาดใหญ่บนเว็บไซต์ การทำให้ผู้ใช้ยังมองเห็นหัวตารางได้ง่ายแม้จะเลื่อนลงไปแล้ว ช่วยยกระดับประสบการณ์ผู้ใช้ได้อย่างมาก
- การที่สามารถใช้
position: sticky; ของ CSS เพื่อตรึงหัวตารางได้อย่างง่ายดาย เป็นข้อมูลที่มีประโยชน์สำหรับนักพัฒนาเว็บ
- ฟีเจอร์นี้ได้รับการรองรับอย่างกว้างขวาง ทำให้นักพัฒนาเว็บมั่นใจได้ว่าสามารถนำไปใช้งานได้อย่างเสถียรในเบราว์เซอร์ต่าง ๆ
1 ความคิดเห็น
ความเห็นจาก Hacker News
position: sticky;ดูเหมือนน่าจะทำได้ง่าย แต่พอทำอะไรบางอย่างกับเนื้อหาตารางก็จะเกิดปัญหา ตัวอย่างเช่น ได้เพิ่มฟีเจอร์คืนค่าตำแหน่งสกรอลล์เมื่อผู้ใช้เลื่อนตาราง ออกจากหน้า แล้วกลับมาอีกครั้ง แต่ตำแหน่งที่คืนค่ามาจะเลื่อนลงไปหนึ่งแถวเสมอ เมื่อมองผ่านส่วนหัวตารางแบบโปร่งใสจะเห็นว่าแถวที่ต้องการอยู่บนสุด แต่เพราะส่วนหัวซ้อนทับอยู่ แถวถัดไปจึงกลายเป็นแถวแรกที่มองเห็นได้ หากปรับตำแหน่งสกรอลล์โดยคำนึงถึงความสูงของส่วนหัว ตอนแรกก็ดูเหมือนจะใช้ได้ แต่บางครั้งก็คลาดไปไม่กี่พิกเซล สาเหตุคือ ตารางมีขนาดใหญ่จึงมีการ lazy loading ตามอีเวนต์สกรอลล์ และใช้ automatic table layout ทำให้บางครั้งเซลล์หัวตารางแคบเกินไปจนคำตัดบรรทัดและความสูงรวมของส่วนหัวเพิ่มขึ้น วิธีแก้สุดท้ายคือสร้างResizeObserverบนองค์ประกอบส่วนหัวเพื่อปรับตำแหน่งสกรอลล์แบบไดนามิกเมื่อความสูงเปลี่ยน: เอกสาร ResizeObserver<th>ก็น่าจะมีโอกาสสูงที่นั่นคือพฤติกรรมที่พวกเขาต้องการposition: stickyกับองค์ประกอบ<thead>และ<tr>: ลิงก์อิสซูของ Chromiumtopโดยคำนึงถึงเส้นขอบด้วย (เช่น 0 แทน -1px) ก็จะป้องกันไม่ให้เนื้อหาตารางไหลขึ้นไปทับส่วนหัวได้ มีการเปรียบเทียบตัวอย่าง CodePen สองแบบ: CodePen เดิม และ CodePen ที่ปรับปรุงแล้ว