ธีม

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

ปรับแต่งอินเทอร์เฟซเบราว์เซอร์

บางเบราว์เซอร์อนุญาตให้คุณแนะนำสีธีมตามจานสีของเว็บไซต์ของคุณ อินเทอร์เฟซของเบราว์เซอร์จะปรับตามสีที่แนะนำ เพิ่มสีในองค์ประกอบ meta ที่ชื่อ theme-color ใน head ของหน้าเว็บ

<meta name="theme-color" content="#00D494">
เคลียร์ซ้าย ดอท com Resilient Web Design ดอท com. The Session.org
สามารถดูเว็บไซต์ได้สามเว็บไซต์ในเบราว์เซอร์ Safari แต่ละแบบจะมีสีธีมของตนเองซึ่งจะขยายเข้าไปในอินเทอร์เฟซของเบราว์เซอร์

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

คุณยังระบุสีธีมในไฟล์ไฟล์ Manifest ของเว็บแอปได้ด้วย ไฟล์นี้เป็นไฟล์ JSON ที่มีข้อมูลเมตาเกี่ยวกับเว็บไซต์ของคุณ

ลิงก์ไปยังไฟล์ Manifest จาก head ของเอกสาร ใช้องค์ประกอบ link ที่มีค่า rel เป็น manifest

<link rel="manifest" href="/manifest.json">

ในไฟล์ Manifest ให้ระบุข้อมูลเมตาโดยใช้คู่คีย์/ค่า

{
  "short_name": "Clearleft",
  "name": "Clearleft design agency",
  "start_url": "/",
  "background_color": "#00D494",
  "theme_color": "#00D494",
  "display": "standalone"
}

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

ให้บริการโหมดมืด

ระบบปฏิบัติการจำนวนมากให้ผู้ใช้ระบุค่ากำหนดสำหรับชุดสีสว่างหรือสีเข้ม ซึ่งเป็นความคิดที่ดีในการเพิ่มประสิทธิภาพเว็บไซต์ ให้เหมาะกับค่ากำหนดธีมของผู้ใช้ คุณสามารถเข้าถึงค่ากำหนดนี้ได้ในฟีเจอร์สื่อที่ชื่อว่า prefers-color-scheme

@media (prefers-color-scheme: dark) {
  // Styles for a dark theme.
}

ระบุสีธีมด้วยฟีเจอร์สื่อ prefers-color-scheme ภายในองค์ประกอบ meta

<meta name="theme-color" content="#ffffff" media="(prefers-color-scheme: light)">
<meta name="theme-color" content="#000000" media="(prefers-color-scheme: dark)">

คุณยังใช้ฟีเจอร์สื่อ prefers-color-scheme ภายใน SVG ได้ด้วย หากใช้ไฟล์ SVG สำหรับไอคอน Fav คุณจะปรับเปลี่ยนเป็นโหมดมืดได้ Thomas Steiner เขียนเกี่ยวกับ prefers-color-scheme ในไอคอน Fav ของ SVG สำหรับไอคอนโหมดมืด

การกำหนดธีมโดยใช้พร็อพเพอร์ตี้ที่กำหนดเอง

หากคุณใช้ค่าสีเดียวกันในหลายตำแหน่งทั่วทั้ง CSS การใช้ตัวเลือกทั้งหมดซ้ำภายในคำค้นหาสื่อ prefers-color-scheme อาจค่อนข้างน่าเบื่อ

body {
  background-color: white;
  color: black;
}
input {
  background-color: white;
  color: black;
  border-color: black;
}
button {
  background-color: black;
  color: white;
}
@media (prefers-color-scheme: dark) {
  body {
    background-color: black;
    color: white;
  }
  input {
    background-color: black;
    color: white;
    border-color: white;
  }
  button {
    background-color: white;
    color: black;
  }
}

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

หากคุณอัปเดตค่าของพร็อพเพอร์ตี้ที่กำหนดเองภายในคำสืบค้นสื่อ prefers-color-scheme คุณจะไม่ต้องเขียนตัวเลือกทั้งหมด 2 ครั้ง

html {
  --page-color: white;
  --ink-color: black;
}
@media (prefers-color-scheme: dark) {
  html {
    --page-color: black;
    --ink-color: white;
  }
}
body {
  background-color: var(--page-color);
  color: var(--ink-color);
}
input {
  background-color: var(--page-color);
  color: var(--ink-color);
  border-color: var(--ink-color);
}
button {
  background-color: var(--ink-color);
  color: var(--page-color);
}

ดูการสร้างรูปแบบสีสำหรับตัวอย่างธีมขั้นสูงโดยใช้คุณสมบัติที่กำหนดเอง

รูปภาพ

หากใช้ SVG ใน HTML คุณสามารถใช้คุณสมบัติที่กำหนดเองในนั้นได้ด้วย

svg {
  stroke: var(--ink-color);
  fill: var(--page-color);
}

ตอนนี้ไอคอนจะเปลี่ยนสีไปพร้อมกับองค์ประกอบอื่นๆ บนหน้าเว็บ

หากต้องการลดความสว่างของรูปภาพเมื่อแสดงในโหมดมืด คุณสามารถใช้ฟิลเตอร์ใน CSS

@media (prefers-color-scheme: dark) {
  img {
    filter: brightness(.8) contrast(1.2);
  }
}
วันที่ ถ่ายภาพ 3 ภาพที่มีความสว่างปกติ ภาพถ่าย 3 ภาพที่มีความสว่างน้อยกว่าเล็กน้อย
เอฟเฟกต์นี้จะไม่ค่อยชัดเจน แต่คุณสามารถลดความสว่างของรูปภาพในโหมดมืดได้

สำหรับบางภาพ คุณอาจต้องเปลี่ยนไปใช้ภาพทั้งหมดในโหมดมืด ตัวอย่างเช่น คุณอาจต้องการแสดงแผนที่ที่ใช้รูปแบบสีที่เข้มขึ้น ใช้องค์ประกอบ <picture> ที่มีเอลิเมนต์ <source> กับคำค้นหาสื่อ prefers-color-scheme

<picture>
  <source srcset="darkimage.png" media="(prefers-color-scheme: dark)">
  <img src="lightimage.png" alt="A description of the image.">
</picture>
แผนที่ของ Broolyn 2 แผนที่ โดยอันหนึ่งใช้สีอ่อนและอีกแผนที่ใช้สีเข้ม
มีแผนที่เดียวกัน 2 เวอร์ชัน โดยเวอร์ชันหนึ่งเป็นโหมดสว่างและอีกเวอร์ชันสำหรับโหมดมืด

ฟอร์ม

เบราว์เซอร์จะมีชุดสีเริ่มต้นสำหรับช่องแบบฟอร์ม แจ้งให้เบราว์เซอร์ทราบว่าเว็บไซต์มีทั้งโหมดมืดและโหมดสว่าง เพื่อให้เบราว์เซอร์สามารถให้การจัดรูปแบบเริ่มต้นที่เหมาะสมสำหรับแบบฟอร์มได้

เพิ่มสิ่งนี้ลงใน CSS ของคุณ:

html {
  color-scheme: light;
}
@media (prefers-color-scheme: dark) {
  html {
    color-scheme: dark;
  }
}

หรือจะใช้ HTML ก็ได้ เพิ่มรายการนี้ลงใน head ของเอกสารของคุณ:

<meta name="supported-color-schemes" content="light dark">

ใช้พร็อพเพอร์ตี้ accent-color ใน CSS เพื่อจัดรูปแบบช่องทำเครื่องหมาย ปุ่มตัวเลือก และช่องฟอร์มอื่นๆ

html {
  accent-color: red;
}

เป็นเรื่องปกติที่ธีมมืดจะมีสีของแบรนด์ที่จางลง คุณอัปเดตค่า accent-color สำหรับโหมดมืดได้

html {
  accent-color: red;
}
@media (prefers-color-scheme: dark) {
  html {
    accent-color: pink;
  }
}

คุณควรใช้คุณสมบัติที่กำหนดเองสำหรับการระบุสีทั้งหมดเพื่อให้การประกาศสีทั้งหมดรวมอยู่ในที่เดียว

html {
  color-scheme: light;
  --page-color: white;
  --ink-color: black;
  --highlight-color: red;
}
@media (prefers-color-scheme: dark) {
  html {
    color-scheme: dark;
    --page-color: black;
    --ink-color: white;
    --highlight-color: pink;
  }
}
html {
  accent-color: var(--highlight-color);
}
body {
  background-color: var(--page-color);
  color: var(--ink-color);
}

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

ตรวจสอบความเข้าใจ

ทดสอบความรู้เกี่ยวกับการกำหนดธีม

หากต้องการระบุสีธีมที่ส่งผลต่อเบราว์เซอร์นอกหน้าเว็บ ให้ใช้ปุ่มต่อไปนี้

CSS
ข้อมูลธีม CSS อาจทำให้มีสีปกติเล็กน้อย ซึ่งเป็นประสบการณ์ของผู้ใช้ที่ไม่พึงประสงค์
JavaScript
เมื่อคุณใช้เพื่ออัปเดต "สีของธีม" เท่านั้น แท็ก <meta>
ไฟล์ Manifest ของเว็บแอป
คุณระบุ manifest.json ได้และมีช่องสำหรับระบุสีธีมสำหรับปรับแต่งลักษณะการเปิดแอปจากหน้าจอหลักของอุปกรณ์เคลื่อนที่
'สีของธีม' แท็ก <meta>
เบราว์เซอร์สังเกตเห็นสีธีมนี้ในแท็ก <head> โดยเร็วที่สุด เพื่อหลีกเลี่ยงการกะพริบของสีที่ไม่พึงประสงค์

หากต้องการเข้าถึงค่ากำหนดของระบบของผู้ใช้เกี่ยวกับธีมสว่างหรือมืด ให้ใช้

คิวรี่สื่อ (prefers-color-scheme)
ส่งค่าที่ต้องการตรวจสอบ เช่น สว่างหรือมืด เพียงเท่านี้ก็พร้อมใช้งานแล้ว
JavaScript
ซึ่งจะใช้ไวยากรณ์คิวรี่สื่อ CSS เพื่อขอสถานะปัจจุบันของค่ากำหนด

ดังนั้น คุณจึงรองรับธีมมืด แต่อินพุตทั้งหมดในแบบฟอร์มจะยังคงมีธีมสว่างอยู่ คุณทำอะไรได้บ้าง

เพิ่ม html { color-scheme: light dark; } ลงใน CSS
สัญญาณจาก CSS นี้จะบอกว่าอินพุตแบบฟอร์มควรตรงกับรูปแบบสีของระบบ
เพิ่ม <meta name="supported-color-schemes" content="light dark"> ลงในแท็ก HTML <head>
สัญญาณจาก HTML นี้บอกว่าอินพุตของฟอร์มควรตรงกับรูปแบบสีของระบบ
เขียน CSS จำนวนมากเพื่อเปลี่ยนค่าเริ่มต้นทั้งหมดของอินพุต
วิธีนี้ได้ผลเช่นกัน แต่มีความยากกว่าเล็กน้อย