نمادها

بیشتر تصاویر بخشی از محتوای شما هستند، اما نمادها بخشی از رابط کاربری شما هستند. آنها باید به همان روشی که متن UI شما مقیاس و انطباق دارد، مقیاس و تطبیق دهند.

وقتی صحبت از تصاویر عکاسی می شود، انتخاب های زیادی برای فرمت تصویر وجود دارد: JPG، WebP، و AVIF. برای تصاویر غیرعکاسی، می توانید بین فرمت گرافیک شبکه قابل حمل (PNG) و فرمت گرافیک برداری مقیاس پذیر (SVG) انتخاب کنید.

هر دو PNG و SVG در برخورد با نواحی با رنگ صاف خوب هستند و هر دو به تصاویر شما اجازه می دهند پس زمینه شفاف داشته باشند. اگر از PNG استفاده می‌کنید، احتمالاً باید چندین نسخه از تصویر خود را در اندازه‌های مختلف بسازید و از ویژگی srcset در عنصر img خود استفاده کنید تا تصویر واکنش‌گرا باشد . اگر از SVG استفاده می کنید، به طور پیش فرض پاسخگو است.

PNG (و JPG، WebP و AVIF) تصاویر بیت مپ هستند. تصاویر بیت مپ اطلاعات را به صورت پیکسل ذخیره می کنند. در یک SVG، اطلاعات به عنوان دستورالعمل های ترسیمی ذخیره می شود. هنگامی که مرورگر فایل SVG را می خواند، دستورالعمل ها به پیکسل تبدیل می شوند. بهتر از همه، این دستورالعمل ها نسبی هستند. صرف نظر از ابعادی که برای توصیف خطوط و اشکال استفاده می‌کنید، همه چیز دقیقاً با وضوح مناسب ارائه می‌شود. به جای ایجاد چندین SVG با اندازه های مختلف، می توانید یک 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 مانند آن را جاسازی کنید، این یک درخواست کمتر است که مرورگر باید انجام دهد. برای دانلود تصویر منتظر نمی ماند زیرا با 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 وجود دارد چه مزایایی دارد؟

استفاده کمتر از CPU
Styleable از CSS
تنبل به طور پیش فرض بارگیری شد.
بدون نیاز به دانلود
تم روشن یا تیره بدون دارایی جدید.