การสร้างไอคอน Fav แบบปรับอัตโนมัติ

ภาพรวมพื้นฐานของวิธีสร้างไอคอน Fav แบบปรับอัตโนมัติ

ในโพสต์นี้ ผมอยากแชร์วิธีคิดวิธีสร้างไอคอน Fav แบบปรับอัตโนมัติด้วย SVG ทดลองใช้การสาธิต

แท็บเบราว์เซอร์ที่แสดงซึ่งปรับให้เข้ากับการเปลี่ยนแปลงธีมสว่างและธีมมืดของระบบ MacOS ลองใช้เดโม

หากชอบวิดีโอ นี่คือโพสต์นี้เวอร์ชัน YouTube

ภาพรวม

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

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

ตัวอย่างไอคอน Fav แบบสว่างและมืดที่มีขนาดใหญ่และแยกความแตกต่างได้ง่าย

แท็บสีอ่อนและสีเข้มในแต่ละเบราว์เซอร์จะแสดงภาพรวมของไอคอนแบบปรับอัตโนมัติจากบนลงล่าง เช่น Safari, Firefox, Chrome
แท็บสว่างและมืดในแต่ละเบราว์เซอร์จะแสดงภาพรวมของไอคอนแบบปรับอัตโนมัติจากบนลงล่าง: Safari, Firefox, Chrome

Markup

มาร์กอัป SVG คือ XML ที่ใช้นามสกุลไฟล์ .svg ซึ่งทำให้รองรับประเภทโค้ดแบบไดนามิกได้มากขึ้น

เริ่มต้นด้วยการสร้าง favicon.svg

สร้างไฟล์ใหม่ชื่อ favicon.svg และเพิ่มข้อมูลต่อไปนี้

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400">

</svg>

นี่คือไฟล์ SVG ของฉัน ฉันปรับขนาด viewBox ที่เกี่ยวข้องกับอาร์ตเวิร์กของฉันแล้ว

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 447 428">

</svg>

การเพิ่มรูปร่างและเส้นทาง

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

อาร์ตเวิร์กสำหรับการแข่งขัน GUI นี้ มาจากนักออกแบบที่จัดทำใน Adobe Illustrator ผมได้เพิ่มประสิทธิภาพอย่างมาก ผมทำผ่าน SVGOMG แล้วตัดต่อด้วยมือเปล่า

นี่คือตัวอย่างกลุ่มเส้นทางอาร์ตเวิร์ก skull ของฉันหลังจากทำความสะอาด

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 447 428">
  <g id="skull">
    <path id="skull-outline" class="favicon-stroke" stroke-linejoin="round" d="M19.62 188.39A166.62 166.62 0 0 1 186.24 21.77c115.25 0 166.61 74.59 166.61 166.62 0 1.83-.08 3.64-.13 5.46h.13s.68 175.09.68 178.65c0 30.11-16.26 41.67-36.32 41.67-12.7 0-35.22-3.93-36.22-32.69h-.2c-1 28.76-16.81 32.69-36.22 32.69-18 0-32.87-6.78-35.77-32.53-2.9 25.75-17.8 32.53-35.8 32.53-20.06 0-36.32-11.56-36.32-41.67 0-2.48.36-24.88.36-24.88A166.68 166.68 0 0 1 19.62 188.39Z" />
    <path id="eyes-and-nose" d="M180.77 205.76c0 23.64 12.84 42.81 28.68 42.81s28.68-19.17 28.68-42.81-12.84-42.82-28.68-42.82-28.68 19.17-28.68 42.82M275 205.76c0 23.64 12.84 42.81 28.68 42.81s28.68-19.17 28.68-42.81-12.84-42.82-28.68-42.82S275 182.11 275 205.76M264.51 276.85s-29.26 43.53-20.12 49.23c7.07 4.41 20.49-16.71 20.49-16.71s12.82 22.58 16.76 20c16.24-10.71-17.13-52.5-17.13-52.5"/>
    <path id="jawline" class="favicon-stroke" fill="none" stroke-linecap="round" d="M114.92 284.33c22.54-1 22 7 22 62.48" />
  </g>
</svg>

สังเกตตัวเลือกรหัสที่มนุษย์อ่านได้ เช่น #eyes-and-nose และคลาส เช่น .favicon-stroke ส่วนฉันมาจากการแก้ไขเองเพื่อเตรียมพร้อมสำหรับ CSS คุณไม่จำเป็นต้องเพิ่มคลาสและรหัสเพื่อให้ SVG เป็นไอคอน Fav แบบปรับอัตโนมัติ

ในแท็ก <head> ของ HTML หลังไอคอน Fav .ico ให้เพิ่มค่าต่อไปนี้

<link rel="icon" href="/favicon.ico" sizes="any">
<link rel="icon" href="/favicon.svg" type="image/svg+xml">

เนื่องจากไอคอนใหม่อาจดูเหมือนกับเวอร์ชัน .ico โปรดตรวจสอบว่ามีการใช้งานอยู่ เปิดแผงเครือข่ายของเครื่องมือสำหรับนักพัฒนาเว็บ กรองตามรูปภาพ และค้นหาไอคอน Fav

ภาพหน้าจอของแผงเครือข่ายจากเครื่องมือสำหรับนักพัฒนาเว็บที่มีตัวกรองที่ค้นหาไอคอน Fav และทรัพยากร favicon.svg ที่ไฮไลต์

รูปแบบ

คุณเพิ่มแท็ก <style> ไปยังมาร์กอัปเพื่อใช้กับขอบเขตเอกสารนั้นได้เช่นเดียวกับ HTML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 447 428">
  <style>
    
  </style>
  …
</svg>

เวอร์ชันธีมสว่างจะเป็นสีเริ่มต้นของ SVG ไอคอน Fav สไตล์ที่ผมเขียนไว้ให้ซึ่งส่วนใหญ่เป็นเส้นโครงร่างและสีเติม

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 447 428">
  <style>
    .favicon-stroke {
      stroke-width: 8px;
      stroke: #8929ff;
    }
    #skull-outline { fill: white }
    #eyes-and-nose, #hat-outline { fill: #8929ff }
    #hat-fill, #hat-bill { fill: #e662e6 }
  </style>
  …
</svg>

ตัวอย่างตัวอย่างไอคอน Fav ของธีมสว่าง

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

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 447 428">
  <style>
    …
    @media (prefers-color-scheme: dark) {
      /* dark theme styles */
    }
  </style>
  …
</svg>

ภาพหน้าจอของเครื่องมือสำหรับนักพัฒนาเว็บที่แสดงคำค้นหาสื่อในธีมมืดแทนที่สีเติมของดวงตาและจมูกของ SVG

ผลลัพธ์ของฉันเป็นแบบนี้

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 447 428">
  <style>
    …
    @media (prefers-color-scheme: dark) {
      .favicon-stroke { stroke: #343a40 }
      #skull-outline { fill: #adb5bd }
      #hat-outline { fill: #343a40 }
      #eyes-and-nose { fill: #343a40 }
    }
  </style>
  …
</svg>

ตัวอย่างตัวอย่างไอคอน Fav ในธีมมืด

ฉันเลือกเปลี่ยนเส้นขอบสีม่วงสดใสเป็นสีเทาเข้มแบบเก๋ๆ (#343a40) เปลี่ยนสีกระดูกหัวกะโหลกจากขาวเป็นเทาอ่อน (#adb5bd) และเหลือหมวกเฉพาะจุดสีชมพู

ตัวอย่างไอคอน Fav ทั้งแบบสว่างและมืดแสดงคู่กัน

บทสรุป

ตอนนี้คุณก็รู้แล้วว่าตัวเองทำยังไง คุณจะทำอะไรบ้าง‽ 🙂

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

รีมิกซ์ของชุมชน

  • ฉันได้เรียนรู้เทคนิคนี้จาก @tomayac ในบล็อกของเขา