เทคโนโลยี Frosted Glass ที่ขยายจากเกมสู่เว็บ
(tyleo.com)โปรสต์กลาสจากเกมสู่เว็บ
-
แนะนำ
- ระหว่างทำงานเป็นนักพัฒนา UI ของ Forza Horizon 3 และ Forza Motorsport 7 ผู้เขียนได้สัมผัสกับองค์ประกอบการออกแบบแบบ frosted acrylic ที่สวยงาม
- ผู้เขียนต้องการสร้างเอฟเฟ็กต์ที่คล้ายกันด้วย HTML และแบ่งปันความพยายามนั้นในหน้านี้
-
บทบาทของ
backdrop-filter- หัวใจของเอฟเฟ็กต์ frosted glass คือการทำให้ฉากหลังเบลอด้วย Gaussian blur
- ใน CSS สามารถใช้
backdrop-filterและฟังก์ชันblurเพื่อใช้ Gaussian blur ได้ - Internet Explorer ไม่รองรับฟีเจอร์นี้
-
เพิ่มมิติความลึก
- ผู้เขียนสร้างกระจกพื้นฐานด้วย
backdrop-filter: blur(10px)แต่เพื่อให้ได้เอฟเฟ็กต์ที่ลึกขึ้น จึงใช้box-shadow: insetเพื่อเพิ่มความลึกที่ขอบ
- ผู้เขียนสร้างกระจกพื้นฐานด้วย
-
เงาจริง
- เพื่อกำจัดความรู้สึกเหมือนวัตถุ 3D ถูกขังอยู่ในพื้นที่ 2D จึงเพิ่ม
box-shadowสีเข้มเพื่อทำให้กระจกดูเหมือนลอยขึ้นจากพื้นหลังจริง ๆ
- เพื่อกำจัดความรู้สึกเหมือนวัตถุ 3D ถูกขังอยู่ในพื้นที่ 2D จึงเพิ่ม
-
ปฏิสัมพันธ์กับแสง
- เพื่อปรับปรุงการปฏิสัมพันธ์ระหว่างกระจกกับแสง จึงนำ subsurface scattering แบบง่ายมาใช้
- ใช้
box-shadow: insetเพื่อจำลองเอฟเฟ็กต์ที่แสงกระจายออกเล็กน้อยจากขอบกระจก
-
แสงที่น่าสนใจยิ่งขึ้น
- เพื่อเน้นคุณสมบัติการสะท้อนของกระจก จึงใช้ลำแสงเป็นภาพพื้นหลัง
- ใช้
::beforeเพื่อใส่ภาพพื้นหลังลงในองค์ประกอบกระจก
-
แสงแบบไดนามิก
- ใช้ CSS และ JavaScript เพื่อสร้างเอฟเฟ็กต์การสะท้อนแบบไดนามิกที่ทำงานได้บนทุกแพลตฟอร์ม
- ใช้ JavaScript ปรับ
background-positionแบบไดนามิกเพื่อจำลองเอฟเฟ็กต์ของbackground-attachment: fixed
-
ปิดท้าย
- เพื่อทำเอฟเฟ็กต์กระจกให้สมบูรณ์ ผู้เขียนได้เพิ่มมุมโค้ง สี และข้อความ
- ใช้
border-radiusเพื่อทำให้มุมโค้ง และใช้overflow: hiddenเพื่อไม่ให้องค์ประกอบลูกล้นออกนอกพื้นผิวกระจก
-
สรุป
- ขอบคุณที่ติดตามกระบวนการสร้างเอฟเฟ็กต์ frosted glass
- หากต้องการวิธีคัดลอก asset และโค้ดทั้งหมดได้อย่างรวดเร็ว ให้ดูส่วน "Final Recipe Lookahead" ในช่วงต้นของเอกสาร
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ผู้ใช้คนหนึ่งบอกว่าชอบด้านความสวยงาม แต่รู้สึกว่าการให้ไคลเอนต์คำนวณฟิลเตอร์เบลอราคาแพงซ้ำๆ เป็นเรื่องสิ้นเปลือง และแนวโน้มทั่วไปของการพัฒนาเว็บดูเหมือนจะเพิ่มภาระมากเกินไป
ผู้ใช้อีกรายอธิบายว่าเคยดึงเท็กซ์เจอร์ "ลำแสง" จาก Windows 7 ออกมาเพื่อพยายามทำเอฟเฟ็กต์คล้ายกันบน Android และเพิ่มความอิ่มสีของฉากหลังที่เบลอขึ้นเล็กน้อย
ผู้ใช้อีกคนมองว่าเดโมแบบโต้ตอบทำได้ยอดเยี่ยม แต่ไม่ชอบการใช้ frosted glass ในงานออกแบบส่วนติดต่อผู้ใช้ และรู้สึกว่าการเพิ่มมันเข้ามาใน Mac OS เป็นการถอยหลัง
ผู้ใช้คนหนึ่งอธิบายว่าในปี 2008 เขาเคยทำเอฟเฟ็กต์คล้ายกันผ่านการทดลอง CSS โดยใช้ภาพพื้นหลังที่เบลอล่วงหน้าและตรึงตำแหน่งไว้
ผู้ใช้อีกรายบอกว่ามีเอฟเฟ็กต์ซ้อนกันอยู่ 10 อย่าง และยกเว้นองค์ประกอบด้านความงามที่จำเป็นที่สุดแล้ว เขาคิดว่าราว 7 อย่างนั้นมากเกินไป
ผู้ใช้คนหนึ่งอธิบายว่าชอบการเพิ่มเท็กซ์เจอร์นอยส์เข้าไปเพื่อให้ได้ผลลัพธ์ที่หยาบขึ้น
ผู้ใช้อีกรายบอกว่าความสำเร็จเชิงเทคนิคนั้นน่าทึ่ง แต่ UX แย่
ผู้ใช้คนหนึ่งกล่าวว่าเดโม CSS ดั้งเดิมตัวหนึ่งตั้งใจทำมาเพื่อเอฟเฟ็กต์ frosted glass อยู่แล้ว และเขาคิดว่าน่าสนใจ
ผู้ใช้อีกรายบอกว่ารู้สึกประทับใจกับความสร้างสรรค์และพลังของ CSS อยู่เสมอ แต่ก็รู้สึกว่าตัวเองคงไม่มีวันเข้าใจความลึกบางส่วนของ HTML/CSS ได้จริงๆ
สุดท้าย มีผู้ใช้บอกว่าตัวอย่างแบบโต้ตอบนั้นดี แต่คงดีกว่านี้หากมีฟังก์ชันเปรียบเทียบหรือสลับกลับไปดูเวอร์ชันก่อนหน้าได้