นักพัฒนาสร้าง HTML Quine ที่แสดงซอร์สโค้ดของตัวเองโดยใช้เทคนิค CSS

ทีมชุมชน BigGo
นักพัฒนาสร้าง HTML Quine ที่แสดงซอร์สโค้ดของตัวเองโดยใช้เทคนิค CSS

วิศวกรวิจัยที่ Conjecture ได้สร้าง HTML quine ที่น่าประทับใจ - เว็บเพจที่แสดงซอร์สโค้ดของตัวเองเป็นผลลัพธ์ เว็บไซต์ส่วนตัวของ Pranav สาธิตแนวคิดการเขียนโปรแกรมที่น่าสนใจนี้โดยใช้เทคนิคการจัดรูปแบบ CSS อย่างชาญฉลาดที่ทำให้โครงสร้าง HTML พื้นฐานมองเห็นได้สำหรับผู้เยี่ยมชม

แนวคิดของ quine มาจากวิทยาการคอมพิวเตอร์ ซึ่งเป็นโปรแกรมที่สร้างซอร์สโค้ดของตัวเองเป็นผลลัพธ์ แม้ว่า quine มักจะเชื่อมโยงกับภาษาการเขียนโปรแกรม แต่การนำไปใช้นี้นำแนวคิดมาสู่การพัฒนาเว็บในรูปแบบที่สง่างาม

ตัวอย่าง HTML Quine ที่เกี่ยวข้อง:

  • Brutalist HTML quine จากปี 2019 (ถูกพูดถึงใน Hacker News สองครั้ง)
  • GitHub contribution chart quine โดยผู้ใช้ ' mame '
  • การทดลอง CSS-to-Markdown renderer
  • การสาธิตการเขียนโปรแกรมแบบอ้างอิงตัวเองหลากหลายรูปแบบ

เทคนิคการแสดงผล CSS ทำให้โครงสร้าง HTML มองเห็นได้

เวทมนตร์เบื้องหลัง quine นี้อยู่ที่การจัดรูปแบบ CSS ที่บังคับให้องค์ประกอบ HTML แสดงเป็นข้อความที่มองเห็นได้แทนที่จะเป็นมาร์กอัปที่เรนเดอร์แล้ว เทคนิคนี้ใช้คุณสมบัติ display:block และ pseudo-elements ของ CSS เพื่อแสดงแท็ก HTML เปิดและปิดรอบๆ เนื้อหา สิ่งนี้สร้างภาพลวงตาว่าคุณกำลังดูซอร์สโค้ด HTML ดิบ ในขณะที่จริงๆ แล้วคุณกำลังดูเว็บเพจที่มีการจัดรูปแบบ

สมาชิกชุมชนได้สังเกตพฤติกรรมที่น่าสนใจของเบราว์เซอร์กับแนวทางนี้ ฟังก์ชันการค้นหาทำงานแตกต่างกันกับเนื้อหาที่มีการจัดรูปแบบ - ในขณะที่คุณสามารถค้นหาข้อความภายในองค์ประกอบ head และ title ที่แสดงผลได้ แต่ข้อความภายในบล็อก style ยังคงค้นหาไม่ได้ผ่านฟังก์ชันค้นหาของเบราว์เซอร์ แม้ว่าจะแสดงผลทางภาพแล้วก็ตาม

องค์ประกอบทางเทคนิคหลัก:

  • ใช้กฎ CSS * {display:block;} เพื่อทำให้องค์ประกอบทั้งหมดเป็นระดับบล็อก
  • ใช้ pseudo-elements ของ CSS (::before และ ::after) เพื่อแสดงแท็ก HTML
  • ทำงานได้กับเบราว์เซอร์สมัยใหม่ แต่ไม่รองรับเบราว์เซอร์แบบข้อความอย่าง Lynx
  • ฟังก์ชันค้นหาของเบราว์เซอร์ไม่สามารถค้นหาข้อความภายในองค์ประกอบ <style> ได้แม้ว่าจะแสดงผลแล้วก็ตาม

ความเข้ากันได้ของเบราว์เซอร์และข้อจำกัดทางเทคนิค

quine ทำงานได้กับเบราว์เซอร์สมัยใหม่ส่วนใหญ่ แม้ว่าเบราว์เซอร์แบบข้อความอย่าง Lynx จะไม่เรนเดอร์การจัดรูปแบบ CSS ที่สร้างเอฟเฟกต์ quine ในกรณีเหล่านี้ ผู้เยี่ยมชมจะเห็นเพียงเนื้อหาธรรมดาโดยไม่มีการแสดงมาร์กอัป HTML ที่ทำให้มันพิเศษ

document.body.innerText มีเนื้อหาของสไตล์ชีตอยู่ด้วย ดังนั้นเบราว์เซอร์จึงพิจารณาว่าเป็นข้อความที่มองเห็นได้ในแง่หนึ่ง

การนำไปใช้นี้เข้าร่วมกับ HTML quine สร้างสรรค์อื่นๆ ที่ปรากฏขึ้นในช่วงหลายปีที่ผ่านมา รวมถึงเวอร์ชัน HTML แบบ brutalist และแม้กระทั่ง quine ที่ฝังอยู่ในแผนภูมิการมีส่วนร่วมของ GitHub แนวทางนี้แสดงให้เห็นว่า CSS สามารถจัดการการนำเสนอเนื้อหาในรูปแบบที่ไม่คาดคิดได้อย่างไร

เว็บเพจทำหน้าที่เป็นทั้งพอร์ตโฟลิโอส่วนตัวและการสาธิตทางเทคนิค แสดงให้เห็นว่าการเขียนโค้ดเชิงสร้างสรรค์สามารถทำให้เทคโนโลยีเว็บธรรมดาทำสิ่งที่ไม่ธรรมดาได้ มันได้รับแรงบันดาลใจจากแนวคิดจาก Gödel, Escher, Bach ของ Douglas Hofstadter เชื่อมโยงแนวคิดการอ้างอิงตนเองทางคณิตศาสตร์กับการพัฒนาเว็บในทางปฏิบัติ

อ้างอิง: Hi, I'm Pranav