CSS prefers-reduced-transparency

เพิ่มประสิทธิภาพและปรับให้เหมาะกับผู้ใช้ที่ต้องการ UI แบบทึบ

Adam Argyle
Adam Argyle

ตั้งแต่ Chrome 118 เป็นต้นไป ฟีเจอร์คิวรีสื่อใหม่ prefers-reduced-transparency จาก CSS Media Queries 5 พร้อมให้ใช้งานแล้ว อินเทอร์เฟซแบบไม่ทึบอาจทำให้เกิดอาการปวดหัวหรือทำให้ผู้ใช้ที่มีปัญหาด้านการมองเห็นประเภทต่างๆ ดูข้อมูลได้ยาก ด้วยเหตุนี้ Windows, macOS และ iOS จึงมีค่ากำหนดของระบบที่สามารถลดหรือนำความโปร่งใสออกจาก UI ได้

การรองรับเบราว์เซอร์

  • Chrome: 118
  • Edge: 118
  • Firefox: อยู่หลังธง
  • Safari: ไม่รองรับ

แหล่งที่มา

เมื่อใช้ Media Query ใหม่นี้ในเบราว์เซอร์ CSS จะปรับอินเทอร์เฟซให้เหมาะกับผู้ใช้ที่ระบุความต้องการลดระดับความโปร่งใสได้ ดังนี้

.example {
  --opacity: .5;

  background: hsl(200 100% 50% / var(--opacity));

  @media (prefers-reduced-transparency: reduce) {
    --opacity: .95;
  }
}

ในตัวอย่างโค้ดก่อนหน้านี้ ตัวแปร CSS จะเก็บค่าระดับทึบแสงที่ 50% ซึ่งจะใช้กับ HSL เพื่อสร้างพื้นหลังสีน้ำเงินแบบโปร่งแสง ข้อความค้นหาสื่อที่ฝังจะตรวจสอบค่ากําหนดของผู้ใช้เพื่อลดความโปร่งใส และเมื่อเป็นจริง ระบบจะปรับตัวแปรความทึบเป็น 95% ซึ่งเป็นค่าความทึบเกือบทึบ

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

กรณีการใช้งานเพื่อลดความโปร่งใส

ส่วนถัดไปจะแสดงช่วงเวลาและโอกาสในการลดความโปร่งใสอย่างมีความหมาย

คำบรรยายแบบโปร่งแสงบางส่วนในรูปภาพ

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

โมดัล การแจ้งเตือน และป๊อปอัปที่โปร่งใส

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

.card {
  background: hsl(none none 100% / 20%);

  @media (prefers-reduced-transparency: reduce) {
    background: hsl(none none 0% / 80%);
  }
}

กระจกน้ำแข็งเกาะแบบปรับอัตโนมัติ

รูปแบบการวางซ้อนรูปภาพอีกรูปแบบหนึ่งที่ได้รับความนิยมคือกระจกฝ้า ในตัวอย่างต่อไปนี้ รูปภาพด้านหลังคำบรรยายคือภาพสะท้อนของรูปภาพผลิตภัณฑ์ วิธีนี้มีข้อดี 2 ข้อคือ รูปภาพจะไม่ถูกครอบตัด และค่ากำหนดความสว่างหรือความมืดจะปรากฏในผลลัพธ์สุดท้ายมากขึ้น

.adaptive-glass {
  --glass-lightness: 100%;
  --glass-alpha: 50%;

  background: hsl(0 0% var(--glass-lightness) / var(--glass-alpha));
  backdrop-filter: blur(40px);

  @media (prefers-color-scheme: dark) {
    --glass-lightness: 0%;
  }

  @media (prefers-reduced-transparency: reduce) {
    --glass-alpha: 85%;
  }
}

ส่วนหัวของ Hero

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

ปัญหานี้แก้ไขได้ด้วย Media Query ของ CSS 2 รายการ ได้แก่ prefers-reduced-motion และ prefers-reduced-transparency ในคําค้นหาสื่อแบบลดการเคลื่อนไหว คุณจะสามารถใช้ภาพเคลื่อนไหวแบบอินฟินิตี้ได้ก็ต่อเมื่อผู้ใช้มี "no-preference" สําหรับภาพเคลื่อนไหวแบบลดการเคลื่อนไหว ซึ่งจะส่งสัญญาณไปยังโค้ดว่าผู้ใช้รายนี้สามารถใช้ภาพเคลื่อนไหวได้

นอกจากนี้ คุณยังลดระดับความทึบได้ด้วยคําค้นหาสื่อแบบลดระดับความโปร่งใสเพื่อให้สีวางซ้อนเกือบ 100% ตอนนี้คุณอ่านข้อความได้ง่ายขึ้นแล้วโดยไม่ต้องเสียสมาธิกับการเคลื่อนไหวหรือคอนทราสต์ที่มีปัญหา

เมื่อนำองค์ประกอบทั้งหมดมารวมกัน คุณจะสามารถใช้งาน UI ของครีเอทีฟโฆษณาได้ พร้อมทั้งช่วยให้กลุ่มเป้าหมายอ่านและรับข้อความได้

.Hero img {
  @media (prefers-reduced-motion: no-preference) {
    animation: zoom 30s ease infinite;
  }
}

.Hero .overlay {
  background: hsl(none none 0% / 95%);

  @media (prefers-reduced-transparency: no-preference) {
    background: linear-gradient(
      to top right in oklab,
      oklch(40% 0.3 340 / 70%),
      oklch(40% 0.4 200 / 70%)
    );
  }
}

มุมมองแบบเพิ่มและแบบลบเกี่ยวกับค่ากําหนดของผู้ใช้

ตัวอย่างก่อนหน้านี้ไม่ได้ตรวจสอบค่ากําหนดของผู้ใช้เหล่านี้เพื่อหาค่ากําหนดแบบจํากัด แต่ตรวจสอบว่าไม่มีค่ากําหนด

@media (prefers-reduced-transparency: no-preference) {
  …
}

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

แนวทางนี้ช่วยให้คุณนึกถึงประสบการณ์พื้นฐานที่มีประสิทธิภาพและมั่นคงในตัวของมันเอง จากนั้นให้เพิ่มประสบการณ์การใช้งานหากผู้ใช้อนุญาต

เครื่องมือสำหรับนักพัฒนาเว็บ

Chrome DevTools สามารถจำลองค่ากำหนดนี้เพื่อลดระดับความโปร่งใส (และอื่นๆ) ในแท็บการแสดงผล ในวิดีโอต่อไปนี้ ให้ดูวิธีสลับใช้ prefers-color-scheme และ prefers-reduced-transparency ในการค้นหาสื่อเพื่อแสดงการ์ดกระจกฝ้าในแบบต่างๆ ซึ่งได้แก่ แบบสว่าง แบบมืด แบบโปร่งใส และแบบลดระดับการโปร่งใส

https://codepen.io/web-dot-dev/pen/dyaojxr