ไอคอน

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

สำหรับภาพกราฟิก มีตัวเลือกมากมายสำหรับรูปแบบรูปภาพ ได้แก่ JPG, WebP และ AVIF สำหรับภาพที่ไม่ใช่ภาพถ่าย คุณจะสามารถเลือกได้ระหว่างรูปแบบ Portable Network Graphics (PNG) และรูปแบบ Scalable Vector Graphics (SVG)

ทั้ง PNG และ SVG สามารถรับมือกับพื้นที่ที่มีสีราบเรียบได้ และทั้งสองแบบนี้ก็ทำให้รูปภาพมีพื้นหลังโปร่งใสได้ หากใช้ PNG คุณอาจต้องสร้างรูปภาพหลายๆ เวอร์ชันเป็นขนาดต่างๆ และใช้แอตทริบิวต์ srcset ในองค์ประกอบ img เพื่อทำให้รูปภาพปรับเปลี่ยนตามอุปกรณ์ หากคุณใช้ SVG ระบบจะตอบสนองโดยค่าเริ่มต้น

PNG (และ JPG, WebP และ AVIF) เป็นรูปภาพบิตแมป รูปภาพบิตแมปจัดเก็บข้อมูลเป็นพิกเซล ใน SVG ข้อมูลจะจัดเก็บเป็นคำแนะนำในการวาด เมื่อเบราว์เซอร์อ่านไฟล์ SVG ระบบจะแปลงวิธีการเป็นพิกเซล ที่ดีที่สุดก็คือ วิธีการเหล่านี้เป็นวิธีการที่เกี่ยวข้อง ไม่ว่าจะใช้มิติใดในการอธิบายเส้นและรูปร่าง ทุกอย่างจะแสดงที่ความคมชัดที่เหมาะสม คุณสามารถสร้าง SVG 1 รายการที่จะทำงานได้ในทุกขนาดแทนการสร้าง SVG หลายๆ ขนาด โดยไม่จำเป็นต้องใช้แอตทริบิวต์ srcset

<img src="image.svg" alt="A description of the image." width="25" height="25">
<img src="image.svg" alt="A description of the image." width="250" height="250">

XML จะใช้เพื่อเขียนวิธีการในไฟล์ SVG นี่คือภาษามาร์กอัป เช่น HTML

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="-21 -21 42 42" width="100" height="100">
  <title>Smiling face</title>
  <circle r="20" fill="yellow" stroke="black"/>
  <ellipse rx="2.5" ry="4" cx="-6" cy="-7" fill="black"/>
  <ellipse rx="2.5" ry="4" cx="6" cy="-7" fill="black"/>
  <path stroke="black" d="M -12,5 A 13.5,13.5,0 0,0 12,5 A 13,13,0 0,1 -12,5"/>
</svg>

หน้ายิ้ม

คุณยังสามารถใส่ SVG ไว้ใน HTML ได้ด้วย

<figure>
  <svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="-21 -21 42 42" width="100" height="100">
    <title>Smiling face</title>
    <circle r="20" fill="yellow" stroke="black"/>
    <ellipse rx="2.5" ry="4" cx="-6" cy="-7" fill="black"/>
    <ellipse rx="2.5" ry="4" cx="6" cy="-7" fill="black"/>
    <path stroke="black" d="M -12,5 A 13.5,13.5,0 0,0 12,5 A 13,13,0 0,1 -12,5"/>
  </svg>
  <figcaption>
  A description of the image.
  </figcaption>
</figure>

หากคุณฝัง SVG ในลักษณะนั้น เบราว์เซอร์จำเป็นต้องสร้างคำขอน้อยลงอีก 1 คำขอ โดยไม่ต้องรอให้รูปภาพดาวน์โหลดเพราะรูปภาพมาพร้อมกับ HTML ...ใน HTML นอกจากนี้ คุณยังจะได้ทราบเร็วๆ นี้ การฝัง SVG แบบนี้จะช่วยให้คุณควบคุมการจัดรูปแบบไฟล์ได้มากขึ้นเช่นกัน

ไอคอนและข้อความ

ภาพไอคอนมักประกอบด้วยรูปทรงง่ายๆ บนพื้นหลังโปร่งใส SVG เหมาะสำหรับไอคอน

หากคุณมีปุ่มหรือลิงก์ที่มีข้อความและไอคอนอยู่ด้านใน ไอคอนนั้นมีไว้สำหรับการนำเสนอ นี่คือข้อความที่สำคัญ เมื่อใช้องค์ประกอบ img แอตทริบิวต์ alt ที่ว่างเปล่าจะบ่งบอกว่ารูปภาพมีไว้สำหรับการนำเสนอ

<button>
<img src="hamburger.svg" alt="" width="16" height="16">
Menu
</button>

เนื่องจาก CSS มีไว้สำหรับการนำเสนอ คุณสามารถใส่ไอคอนใน CSS เป็นภาพพื้นหลังได้

<button class="menu">
Menu
</button>
.menu {
  background-image: url(hamburger.svg);
  background-position: 0.5em;
  background-repeat: no-repeat;
  background-size: 1em;
  padding-inline-start: 2em;
}

หากใส่ SVG ไว้ใน HTML ให้ใช้แอตทริบิวต์ aria-hidden เพื่อซ่อนจากเทคโนโลยีความช่วยเหลือพิเศษ

<button class="menu">
  <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 80" width="16" height="16">
    <rect width="100" height="20" />
    <rect y="30" width="100" height="20"/>
    <rect y="60" width="100" height="20"/>
  </svg>
  Menu
</button>

ไอคอนสแตนด์อโลน

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

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

หากคุณใช้องค์ประกอบ img ไอคอนจะได้รับชื่อที่เข้าถึงได้จากแอตทริบิวต์ alt

<button>
<img src="hamburger.svg" alt="Menu" width="16" height="16">
</button>

อีกตัวเลือกหนึ่งคือใส่ชื่อการช่วยเหลือพิเศษลงในลิงก์หรือปุ่ม และประกาศว่ารูปภาพมีไว้สำหรับการนำเสนอ ใช้แอตทริบิวต์ aria-label เพื่อระบุชื่อที่เข้าถึงได้

<button aria-label="Menu">
<img src="hamburger.svg" alt="" width="16" height="16">
</button>

หากใส่ SVG ใน HTML ให้ใช้แอตทริบิวต์ aria-label บนลิงก์หรือปุ่มเพื่อตั้งชื่อที่เข้าถึงได้ง่ายและใช้แอตทริบิวต์ aria-hidden บนไอคอน

<button aria-label="Menu">
  <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 80" width="16" height="16">
    <rect width="100" height="20" />
    <rect y="30" width="100" height="20"/>
    <rect y="60" width="100" height="20"/>
  </svg>
</button>

ไอคอนการจัดรูปแบบ

หากคุณฝังไอคอน SVG ใน HTML โดยตรง คุณสามารถจัดรูปแบบส่วนต่างๆ ของไอคอนได้เช่นเดียวกับองค์ประกอบอื่นๆ ในหน้าเว็บ แต่จะทำไม่ได้หากใช้องค์ประกอบ img เพื่อแสดงไอคอน

ในตัวอย่างต่อไปนี้ องค์ประกอบ rect ภายใน SVG มีค่า fill เป็น blue เพื่อให้ตรงกับรูปแบบสำหรับข้อความของปุ่ม

button {
 color: blue;
}
button rect {
  fill: blue;
}

คุณใช้รูปแบบ hover และ focus ได้ด้วย

button:hover,
button:focus {
  color: red;
}
button:hover rect,
button:focus rect {
  fill: red;
}

แหล่งข้อมูล

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

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

ทดสอบความรู้ของคุณเกี่ยวกับไอคอน

โดย SVG จัดการความหนาแน่นของพิกเซลได้ทุกไฟล์ด้วยไฟล์เดียวหรือ <svg> โค้ดบล็อก

จริง
เท็จ

โค้ด SVG ที่อยู่ใน HTML โดยตรงมีข้อดีอย่างไร

โดยไม่ต้องดาวน์โหลด
ธีมสว่างหรือมืดโดยไม่มีชิ้นงานใหม่
โหลดแบบ Lazy Loading แล้วโดยค่าเริ่มต้น
การใช้งาน CPU น้อยลง
จัดรูปแบบได้จาก CSS