🎨 Руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… ΠΏΠΎ созданию ΠΈ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ SVG

ВСкторная Π³Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΄ΠΈΠ·Π°ΠΉΠ½ сайта ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ простого Π·Π½Π°Ρ‡ΠΊΠ° ΠΌΡ‹ расскаТСм ΠΎ процСссС создания ΠΈ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² популярном Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ SVG.

ИспользованиС SVG для стилизации Π²Π΅Π±-сайтов ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Ρ†Π΅Π»Ρ‹ΠΉ ΠΌΠΈΡ€ Π½ΠΎΠ²Ρ‹Ρ… возмоТностСй. Π­Ρ‚ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΄ΠΈΠ·Π°ΠΉΠ½ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Одно ΠΈΠ· самых Π±ΠΎΠ»ΡŒΡˆΠΈΡ… прСимущСств SVG – Π΅Π³ΠΎ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ элСмСнты изобраТСния ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ CSS. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΡ†Π²Π΅Ρ‚Π½Ρ‹Π΅ Π·Π½Π°Ρ‡ΠΊΠΈ ΠΈ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JavaScript ΠΈΠ»ΠΈ всС Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ CSS. SVG – Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. Он ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ качСства, Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ оптимизированная ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΌΠ°Π»ΠΎ вСсит. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ нСбольшой ΠΈΠΊΠΎΠ½ΠΊΠΈ ΠΌΡ‹ рассмотрим, ΠΊΠ°ΠΊ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ‚Π°ΠΊΠΈΠΌΠΈ изобраТСниями.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ SVG

Π‘Π°ΠΌΡ‹ΠΉ простой способ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ SVG – Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄:

<svg width="100" height="100">
  <circle cx="50" cy="50" r="40" fill="black" />
</svg>
Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ слоТныС Ρ„ΠΎΡ€ΠΌΡ‹, Π»ΡƒΡ‡ΡˆΠ΅ всСго Π²Π·ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ, Π° Π·Π°Ρ‚Π΅ΠΌ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ изобраТСния Π² Ρ„Π°ΠΉΠ»Ρ‹ SVG. Для этих Ρ†Π΅Π»Π΅ΠΉ, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Adobe Illustrator ΠΈΠ»ΠΈ Sketch. МоТно Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ InkScape ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½-инструмСнты vectr.com ΠΈΠ»ΠΈ editor.method.ac.

ΠœΡ‹ возьмСм Illustrator. Как Π² любом ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ клиСнтских Π»ΠΎΠ³ΠΎΡ‚ΠΈΠΏΠΎΠ² ΠΈΠ»ΠΈ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΉ прСдставлСны здСсь Π² Π²ΠΈΠ΄Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ² AI, поэтому ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΈ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² SVG.

Для Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Π²Π΅Π±-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚:

Π Π°Π·ΠΌΠ΅Ρ€ холста – 400Ρ…400 пиксСлСй. Π Π°Π·ΠΌΠ΅Ρ€ Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это Π²Π΅ΠΊΡ‚ΠΎΡ€, Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅. Π‘ΡƒΠ΄Π΅Ρ‚ Π»Π΅Π³Ρ‡Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΡˆΡ‚Ρ€ΠΈΡ…Π° ΠΈ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ, ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ. Π”Π°Π»Π΅Π΅ создадим Π·Π½Π°Ρ‡ΠΎΠΊ:

Π’Π°ΠΆΠ½ΠΎΠ΅ практичСскоС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ: Ρ‡Π΅ΠΌ мСньшС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Ρ‚Π΅ΠΌ Π»ΡƒΡ‡ΡˆΠ΅! Π’Π°ΠΊ ваш ΠΊΠΎΠ΄ SVG Π±ΡƒΠ΄Π΅Ρ‚ Ρ‡ΠΈΡ‰Π΅ ΠΈ Π»Π΅Π³Ρ‡Π΅. Π’Ρ‹ сдСлаСтС мСньшС ошибок, Ссли Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ слишком слоТныС Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠ»ΠΈ рисованныС ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ.

ΠŸΡ€ΠΈ построСнии изобраТСния ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΡ‚Ρ€ΠΈΡ…ΠΈ, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ†Π²Π΅Ρ‚Π° ΠΈ Π΄Π°ΠΆΠ΅ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Ρ‹. ВсС это Π±ΡƒΠ΄Π΅Ρ‚ экспортировано Π² SVG. Если Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ элСмСнты Π·Π½Π°Ρ‡ΠΊΠ°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ слои ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹:

ПослС экспорта ΠΈΠΌΠ΅Π½Π° Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Ρ‹ Π² ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹: это Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для Π±ΠΎΠ»Π΅Π΅ слоТных ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΉ. Π›ΡƒΡ‡ΡˆΠ΅ всСго ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π½Π° классы для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… элСмСнтов. Π’Ρ‹ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ смоТСтС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ для основного элСмСнта <svg>, Π½ΠΎ ΠΈΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅Π³Ρ‡Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ, Ссли ΠΏΡƒΡ‚ΠΈ ΠΈ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠΌΠ΅ΡŽΡ‚ классы.

Экспорт ΠΈ оптимизация SVG-Ρ„Π°ΠΉΠ»ΠΎΠ²

Когда Π·Π½Π°Ρ‡ΠΎΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π³ΠΎΡ‚ΠΎΠ², Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² SVG. Для этого ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π²: Π€Π°ΠΉΠ» -> Экспорт -> Π­ΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ.

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ холст SVG Π±Ρ‹Π» Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΆΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Ρ‡Ρ‚ΠΎ ΠΈ монтаТная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, ΠΈΠ»ΠΈ Ссли Π²Ρ‹ экспортируСтС нСсколько Π·Π½Π°Ρ‡ΠΊΠΎΠ² ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, установитС Ρ„Π»Π°ΠΆΠΎΠΊ Β«Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ½Ρ‚Π°ΠΆΠ½Ρ‹Π΅ области». Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Illustrator ΠΎΠ±Ρ€Π΅ΠΆΠ΅Ρ‚ холст Π΄ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° содСрТимого. Π›ΡƒΡ‡ΡˆΠ΅ всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π°Ρ€Ρ‚Π±ΠΎΡ€Π΄Π°. Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅Π³Ρ‡Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ, Ссли ΠΎΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€, особСнно Ссли Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠΊΠΎΠ½ΠΊΡƒ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ снова с Ρ‚Π΅ΠΌ ΠΆΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΌΠΎΠ½Ρ‚Π°ΠΆΠ½ΠΎΠΉ области.

Π—Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄ Π²Π°ΠΌΠΈ появится ΠΎΠΊΠ½ΠΎ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ для ΠΊΠΎΠ΄Π° SVG:

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌΡΡ спискС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ способ создания CSS. Если Ρƒ вас всСго нСсколько элСмСнтов, Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Β«Inline styleΒ». Для Π±ΠΎΠ»Π΅Π΅ слоТных ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΉ Π΅ΡΡ‚ΡŒ Β«Internal CSSΒ». Если Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° слоСв ΠΈ Π³Ρ€ΡƒΠΏΠΏ Π² качСствС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ΡΡ мСню Β«Object IDsΒ» Π½Π° Β«MinimalΒ». Π­Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ для ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° SVG ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ Π² production. Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π½Π°Π΄ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ чистый ΠΊΠΎΠ΄, снимитС этот Ρ„Π»Π°ΠΆΠΎΠΊ.

ПослС Π²Ρ‹Π±ΠΎΡ€Π° ΠΎΠΏΡ†ΠΈΠΉ экспортированный ΠΊΠΎΠ΄ Π·Π½Π°Ρ‡ΠΊΠ° выглядит ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

<svg id="my-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 290 290">
  <title>svg-icon</title>
  <circle id="circle" cx="145" cy="145" r="124.67" style="fill: none;stroke: #cfd8dc;stroke-miterlimit: 10;stroke-width: 20px"/>
  <polyline id="checkmark" points="88.75 148.26 124.09 183.6 201.37 106.32" style="fill: none;stroke: #21b587;stroke-linecap: round;stroke-linejoin: round;stroke-width: 25px"/>
</svg>

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… элСмСнтов Π½Π° классы ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ для Π»ΡƒΡ‡ΡˆΠ΅ΠΉ доступности:

<svg id="my-icon" aria-labelledby="svg-my-icon-title" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 290 290">
<title id="svg-my-icon-title">Checkmark Icon</title>
<circle class="circle" cx="145" cy="145" r="124.67" style="fill:none;stroke:#cfd8dc;stroke-miterlimit:10;stroke-width:20px"/>
<polyline class="checkmark" points="88.75 148.26 124.09 183.6 201.37 106.32" style="fill:none;stroke:#21b587;stroke-linecap:round;stroke-linejoin:round;stroke-width:25px"/>
</svg>

Π€Π°ΠΉΠ»Ρ‹ SVG Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ мСста, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страницы. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΅Ρ‰Π΅ большС ΠΈΡ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ инструмСнт – SVGOMG.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π² Π½Π΅Π³ΠΎ Ρ„Π°ΠΉΠ» SVG ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ мноТСство Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΡ†ΠΈΠΉ Π΅Π³ΠΎ Ρ‚ΠΎΠ½ΠΊΠΎΠΉ настройки. Π‘ΡƒΠ΄ΡŒΡ‚Π΅ остороТны: Ссли Π²Ρ‹ Π·Π°ΠΉΠ΄Π΅Ρ‚Π΅ слишком Π΄Π°Π»Π΅ΠΊΠΎ Π² настройкС изобраТСния, Π½Π°Ρ€ΡƒΡˆΠΈΡ‚Π΅ Π΄ΠΈΠ·Π°ΠΉΠ½. Если Ρƒ вас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ стили ΠΈΠ»ΠΈ анимация, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ потСряСтС послС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ классы ΠΈ элСмСнты.

Анимация ΠΈ манипуляции с CSS

ПослС добавлСния ΠΊΠΎΠ΄Π° SVG Π½Π° страницу, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΡ‚ΠΈΠ»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ элСмСнт HTML. НапримСр Ρ‚Π°ΠΊ:

#my-icon .circle {

  stroke: #21b587;

}

Π’Ρ‹ Π±Π΅Π· Ρ‚Ρ€ΡƒΠ΄Π° Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ мноТСство Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ JavaScript (Svg.js, SnapSVG) для создания слоТных Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΉ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ интСрСсного эффСкта ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ свойства opacity, scale, translate ΠΈ colors.

Π”Π°Π»Π΅Π΅ создадим ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ для ΠΊΡ€ΡƒΠ³Π°:

 #my-icon .circle {
           	animation: circle-animation 0.5s ease-out forwards;
           	opacity: 0;
           	transform: scale(0.9);
           	transform-origin: center;
}
 
@keyframes circle-animation {
           	100% {
                           	opacity: 1;
                           	transform: scale(1);
           	}
}

Π­Ρ‚ΠΎ простая ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Π°Ρ анимация Π² сочСтании с Π½Π΅ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒΡŽ. Если Ρƒ вас Π΅ΡΡ‚ΡŒ нСсколько Π·Π½Π°Ρ‡ΠΊΠΎΠ² с ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌ ΠΊΡ€ΡƒΠ³ΠΎΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎ сэкономит ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ усилий. ИмСнно поэтому использованиС классов для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ².

Π’Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим Π½Π° Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ Π·Π½Π°Ρ‡ΠΊΠ° Π³Π°Π»ΠΎΡ‡ΠΊΠΈ:

#my-icon .checkmark {

            stroke-dasharray: 400;

            stroke-dashoffset: 400;

            stroke: #cfd8dc;

            transform-origin: center;

}

@keyframes checkmark-animation {

            40% {

                            transform: scale(1);

            }

            55% {

                            stroke: #cfd8dc;

                            transform: scale(1.2);

            }

            70% {

                            transform: scale(1);

            }

            100% {

                            stroke-dashoffset: 0;

                            transform: scale(1);

                            stroke: #21b587;

            }

}
   animation: checkmark-animation 1s ease-out forwards;

Π”Π°Π»ΡŒΡˆΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ слоТнСС. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ stroke-dasharray ΠΈ stroke-offset, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ эффСкт отрисовки Π·Π½Π°Ρ‡ΠΊΠ°. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ описан Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ руководствС. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ примСняСм ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ мСняСм Ρ†Π²Π΅Ρ‚ ΠΎΠ±Π²ΠΎΠ΄ΠΊΠΈ: ΠΊΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠΎΠ΄ ΠΎΡ‡Π΅Π½ΡŒ простой, Π½ΠΎ ΠΎΠ½ Π΄Π°Π΅Ρ‚ довольно интСрСсный эффСкт:

            .icon-box {

                            padding: 100px;

                            position: relative;

                            width:200px;

            }

            .icon-box:before {

                            content: 'Hover to see animation.';

                            bottom: 5px;

                            display: block;

                            left: 0;

                            position: absolute;

                            text-align: center;

                            width: 100%;

            }

            .icon-box:hover .circle {

                            animation: circle-animation 0.5s ease-out forwards;

            }

            .icon-box:hover .checkmark {

                            animation: checkmark-animation 1s ease-out forwards;

                            animation-delay: 0.25s;

            }     

            #my-icon .circle {

                            opacity: 0;

                            transform: scale(0.9);

                            transform-origin: center;

            }

            #my-icon .checkmark {

                            stroke-dasharray: 400;

                            stroke-dashoffset: 400;

                            transform-origin: center;

                            stroke: #cfd8dc;

            }

            @keyframes circle-animation {

                            100% {

                                           opacity: 1;

                                           transform: scale(1);

                            }

            }

            @keyframes checkmark-animation {

                            40% {

                                           transform: scale(1);

                            }

                            55% {

                                           stroke: #cfd8dc;

                                           transform: scale(1.2);

                            }

                            70% {

                                           transform: scale(1);

                            }

                            100% {

                                           stroke-dashoffset: 0;

                                           transform: scale(1);

                                           stroke: #21b587;

                            }

            }
                        border: 1px solid #eee;
<div class="icon-box">                                   	
<svg id="my-icon" aria-labelledby="svg-my-icon-title" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 290 290">
<title id="svg-my-icon-title">My Icon</title>
<circle class="circle" cx="145" cy="145" r="124.67" style="fill:none;stroke:#cfd8dc;stroke-miterlimit:10;stroke-width:20px"/>
<polyline class="checkmark" points="88.75 148.26 124.09 183.6 201.37 106.32" style="fill:none;stroke:#21b587;stroke-linecap:round;stroke-linejoin:round;stroke-width:25px"/>
</svg>
</div>

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π½Π°ΡˆΠΈΡ… экспСримСнтов ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ здСсь.

***

ΠœΡ‹ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΈ ΠΎΡ‡Π΅Π½ΡŒ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π» SVG для Π²Π΅Π±-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Π•ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… способов использования популярного Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΉ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ. Π’Π°ΠΊΠΆΠ΅ сущСствуСт нСплохая спСцификация этого, ΠΏΠΎ сути, языка Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ XML ΠΈ нСсколько справочников SVG-элСмСнтов ΠΈ SVG-интСрфСйсов, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ читатСлям Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ.

Π£Π΄Π°Ρ‡ΠΈ Π²Π°ΠΌ Π² ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΈ Π² создании красивых сайтов!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ

Π›Π£Π§Π¨Π˜Π• БВАВЬИ ПО Π’Π•ΠœΠ•

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста
24 сСнтября 2017

6 сСрвисов для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π»ΠΎΠΊ-схСмами

Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΈ быстрСС Π΅Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ€Π°...