Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«HTML5 ΠΈ CSS3. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сайтов для Π»ΡŽΠ±Ρ‹Ρ… Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² ΠΈ устройств. 2-Π΅ ΠΈΠ·Π΄.Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 40

Автор Ѐрэйн .

Анимация SVG-Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JavaScript

Когда SVG-Π³Ρ€Π°Ρ„ΠΈΠΊΠ° вставлСна Π² страницу посрСдством Ρ‚Π΅Π³Π° object ΠΈΠ»ΠΈ нСпосрСдствСнно Π² ΠΊΠΎΠ΄ самой страницы, появляСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с SVG-Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ»ΠΈ опосрСдованно с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JavaScript.

Под ΠΎΠΏΠΎΡΡ€Π΅Π΄ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒΡŽ подразумСваСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ срСдствами JavaScript ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ класс самого SVG-элСмСнта ΠΈΠ»ΠΈ элСмСнта, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π° SVG-Π³Ρ€Π°Ρ„ΠΈΠΊΠ°, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ запуск CSS-Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

svg {

    /* Π½Π΅Ρ‚ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ */

}

.added-with-js svg {

    /* Π΅ΡΡ‚ΡŒ анимация */

}

Но Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ эффСкт Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΊ SVG-Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JavaScript нСпосрСдствСнным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

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

Для придания эффСктов Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ SVG-Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ посрСдством JavaScript Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΡ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ GreenSock (http://greensock.com), Velocity.js (http://julian.com/research/velocity/) ΠΈΠ»ΠΈ Snap.svg (http://snapsvg.io/). Π”Π°Π»Π΅Π΅ ΠΌΡ‹ рассмотрим ΠΎΡ‡Π΅Π½ΡŒ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования GreenSock.

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ SVG-Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GreenSock. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ интСрфСйс с ΠΊΡ€ΡƒΠ³Π»ΠΎΠΉ шкалой, ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π°Π΅ΠΌΠΎΠΉ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎ Ρ‰Π΅Π»Ρ‡ΠΊΡƒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅ ΠΎΡ‚ Π½ΡƒΠ»Π΅Π²ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π΄ΠΎ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΠΎΠΉ Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Нам Π½ΡƒΠΆΠ½ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π½ΡƒΡ‚ΡŒ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΊΡ€ΡƒΠ³Π»ΠΎΠΉ шкалС ΠΊΠ°ΠΊ ΠΏΠΎ Π΄Π»ΠΈΠ½Π΅, Ρ‚Π°ΠΊ ΠΈ ΠΏΠΎ Ρ†Π²Π΅Ρ‚Ρƒ, Π½ΠΎ ΠΈ вывСсти число ΠΎΡ‚ нуля Π΄ΠΎ Π²Π²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ значСния. ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Ρ„Π°ΠΉΠ»Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° example_07-08.

Если Π±ΡƒΠ΄Π΅Ρ‚ Π²Π²Π΅Π΄Π΅Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 75 ΠΈ Π½Π°ΠΆΠ°Ρ‚Π° ΠΊΠ½ΠΎΠΏΠΊΠ° запуска Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ, круглая шкала Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π° ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π°.

ВмСсто дСмонстрации распСчатки всСго Ρ„Π°ΠΉΠ»Π° JavaScript, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ имССтся ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡ‚ΠΈΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅, для краткости ΠΌΡ‹ рассмотрим Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ряд ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ².

Основной замысСл состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠΊΡ€ΡƒΠΆΠ½ΠΎΡΡ‚ΡŒ создана Π² Π²ΠΈΠ΄Π΅ SVG-Ρ‚Π΅Π³Π° <path>, Π° Π½Π΅ элСмСнта <circle>. Π’ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡƒΡ‚ΡŒ, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π½ΡƒΡ‚ΡŒ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ ΠΎΠ½ прорисовываСтся с использованиСм Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ stroke-dashoffset. ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ этой Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ прСдставлСно Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ JavaScript для измСрСния Π΄Π»ΠΈΠ½Ρ‹ ΠΏΡƒΡ‚ΠΈ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ stroke-dasharray для указания Π΄Π»ΠΈΠ½Ρ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΠΎΠΉ Π½Π° экран части окруТности ΠΈ Π΄Π»ΠΈΠ½Ρ‹ пустого ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠ°. Π—Π°Ρ‚Π΅ΠΌ stroke-dashoffset ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для измСнСния мСста старта этого dasharray. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ фактичСски Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΎΠ±Π²ΠΎΠ΄ ΠΏΠΎ ΠΊΠΎΠ½Ρ‚ΡƒΡ€Ρƒ Π²Π½Π΅ ΠΏΡƒΡ‚ΠΈ ΠΈ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΎΠ±Π²ΠΎΠ΄. Π­Ρ‚ΠΎ создаСт иллюзию, Ρ‡Ρ‚ΠΎ ΠΏΡƒΡ‚ΡŒ прорисовываСтся.

Если Π±Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ dasharray Π±Ρ‹Π»ΠΎ извСстным статичным Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΆΠ΅ эффСкта ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CSS-Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ количСства ΠΏΡ€ΠΎΠ± ΠΈ ошибок (Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ CSS-анимация Π±ΡƒΠ΄Π΅Ρ‚ рассмотрСна Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅).

Но Π²Π΄ΠΎΠ±Π°Π²ΠΎΠΊ ΠΊ динамичСскому Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ с прорисовкой Π»ΠΈΠ½ΠΈΠΈ Π½Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ постСпСнноС ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ яркости Ρ†Π²Π΅Ρ‚Π° ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ значСния ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ подсчСт Π΄ΠΎ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ значСния, выполняСмый Π² тСкстовом ΡƒΠ·Π»Π΅. Π­Ρ‚Π° анимация сродни ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΌΡƒ ΠΏΠΎΡ…Π»ΠΎΠΏΡ‹Π²Π°Π½ΠΈΡŽ ΠΏΠΎ Π³ΠΎΠ»ΠΎΠ²Π΅, поглаТиванию ΠΆΠΈΠ²ΠΎΡ‚Π° ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌΡƒ отсчСту ΠΎΡ‚ 10 000. БрСдство GreenSock сущСствСнно ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡Ρƒ β€” Π² Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ части ΠΎΠ½ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡ…Π»ΠΎΠΏΡ‹Π²Π°Ρ‚ΡŒ вас ΠΏΠΎ Π³ΠΎΠ»ΠΎΠ²Π΅ ΠΈΠ»ΠΈ ΠΏΠΎΠ³Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎ ΠΆΠΈΠ²ΠΎΡ‚Ρƒ, хотя ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈ нСобходимости Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ отсчСт ΠΎΡ‚ 10 000. Π’ΠΎΡ‚ строки ΠΊΠΎΠ΄Π° JavaScript, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ GreenSock Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ всС Ρ‚Ρ€ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ:

// анимация прорисовки Π»ΠΈΠ½ΠΈΠΈ ΠΈ измСнСния Ρ†Π²Π΅Ρ‚Π°

TweenLite.to(circlePath, 1.5, {'stroke-dashoffset': "-"+amount,

stroke: strokeEndColour});

// установка счСтчика Π² Π½ΡƒΠ»ΡŒ ΠΈ Π΅Π³ΠΎ анимация Π΄ΠΎ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ значСния

var counter = { var: 0 };

TweenLite.to(counter, 1.5, {

    var: inputValue,

    onUpdate: function () {

        text.textContent = Math.ceil(counter.var) + "%";

    },

    ease:Circ.easeOut

});

По сути, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ TweenLite.to() ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ: Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π½ΡƒΡ‚ΡŒ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ, врСмя, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ эта анимация Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒΡΡ, Π° Π·Π°Ρ‚Π΅ΠΌ значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ (ΠΈ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² Π½ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ).

Π‘Π°ΠΉΡ‚ GreenSock содСрТит ΠΎΡ‚Π»ΠΈΡ‡Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ„ΠΎΡ€ΡƒΠΌΡ‹, ΠΈ Ссли Π²Π°ΠΌ понадобится ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π»Ρ‹ΠΉ ряд Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΉ, Π²Ρ‹ΠΊΡ€ΠΎΠΈΡ‚Π΅ Π΄Π΅Π½Π΅ΠΊ Π² своСм Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ расписании ΠΈ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с GreenSock.

совСт

Если Π²Π°ΠΌ Π΅Ρ‰Π΅ Π½Π΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Ρ‚ΡŒΡΡ с SVG-Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ прорисовки Π»ΠΈΠ½ΠΈΠΉ, ΠΎΠ½Π° Π±Ρ‹Π»Π° ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π° Π² доступной Ρ„ΠΎΡ€ΠΌΠ΅ ΠΆΡƒΡ€Π½Π°Π»ΠΎΠΌ Polygon, ΠΊΠΎΠ³Π΄Π° Vox Media Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π»Π° нСсколько прорисовок Π»ΠΈΠ½ΠΈΠΉ Π² ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… консолях Xbox One ΠΈ Playstation 4. Π˜ΡΡ…ΠΎΠ΄Π½ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ адрСсу http://product.voxmedia.com/2013/11/25/54 26880/polygon-feature-design-svg-animations-for-fun-and-profit.

Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½ΠΎΠ΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΎΡΠ½ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ объяснСниС этой Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Π”ΠΆΠ΅ΠΉΠΊΠΎΠΌ ΠΡ€Ρ‡ΠΈΠ±Π°Π»ΡŒΠ΄ΠΎΠΌ (Jake Archibald) ΠΏΠΎ адрСсу http://jakearchibald.com/2013/animated-line-drawing-svg/.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ SVG

Как добросовСстныС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ наимСньший Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΉ объСм своих рСсурсов. ΠŸΡ€ΠΎΡ‰Π΅ всСго это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с SVG-Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ, воспользовавшись срСдствами Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ, способными ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π΅ΠΊΠ²ΠΈΠ·ΠΈΡ‚Ρ‹ SVG-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². ΠšΡ€ΠΎΠΌΠ΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠΉ экономии, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнтов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнтов Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΈ описаний), ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ†Π΅Π»ΡƒΡŽ ΠΊΡƒΡ‡Ρƒ ΠΌΠΈΠΊΡ€ΠΎΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² суммС Π΄Π΅Π»Π°ΡŽΡ‚ SVG-Π°ΠΊΡ‚ΠΈΠ²Ρ‹ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π΅Π΅.

Π’ настоящСС врСмя для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ срСдство SVGO (https://github.com/svg/svgo). Если Π²Π°ΠΌ Π΅Ρ‰Π΅ Π½Π΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ SVGO, Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π½Π°Ρ‡Π°Ρ‚ΡŒ с SVGOMG (https://jakearchibald.github.io/svgomg/). Π­Ρ‚ΠΎ вСрсия SVGO, основанная Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, получая Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡƒΡŽ Ρ€Π΅Π°ΠΊΡ†ΠΈΡŽ Π² Π²ΠΈΠ΄Π΅ сохранСнного Ρ„Π°ΠΉΠ»Π°.

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ SVG-Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ для получСния Π·Π²Π΅Π·Π΄Ρ‹, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π² Π½Π°Ρ‡Π°Π»Π΅ Π³Π»Π°Π²Ρ‹? Π’ исходном Π²ΠΈΠ΄Π΅ этот простой SVG-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 489 Π±Π°ΠΉΡ‚. ΠŸΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΠ² Π΅Π³ΠΎ Ρ‡Π΅Ρ€Π΅Π· SVGO, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄ΠΎ 218 Π±Π°ΠΉΡ‚, оставив Π½Π° мСстС viewBox. Π’Π΅ΠΌ самым Π±ΡƒΠ΄Π΅Ρ‚ сэкономлСно 55,42 % объСма. Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ мноТСство SVG-ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, такая экономия ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π»ΠΈΡ‚ΡŒΡΡ Π² вСсьма солидный Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Π°Ρ SVG-Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

<svg width="198" height="188" viewBox="00198188" xmlns="http://

www.w3.org/2000/svg"><path stroke="#979797" stroke-width="3"

fill="#F8E81C" d="M99154l-58.7830.90211.227-65.45L3.89473.097l65.717-9.55L994l29.3959.5565.7169.548-47.55346.35311.22665.454z"/></svg>

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΡƒΠΉΠΌΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° освоСниС SVGO, слСдуСт ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ благодаря популярности SVGO этим срСдством ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ SVG-срСдства. НапримСр, Ρ€Π°Π½Π΅Π΅ упомянутоС срСдство Iconizr (http://iconizr.com/) ΠΏΠ΅Ρ€Π΅Π΄ созданиСм Π²Π°ΡˆΠΈΡ… рСсурсов ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ прогоняСт SVG-Ρ„Π°ΠΉΠ»Ρ‹ Ρ‡Π΅Ρ€Π΅Π· SVGO, избавляя вас ΠΎΡ‚ Π½Π΅Π½ΡƒΠΆΠ½ΠΎΠΉ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ.

ИспользованиС SVG Π² качСствС Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²

Π’ Π³Π»Π°Π²Π΅ 6 Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»ΠΈΡΡŒ эффСкты, создаваСмыС Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°ΠΌΠΈ CSS. Но Π² настоящСС врСмя Π² Internet Explorer 10 ΠΈΠ»ΠΈ 11 ΠΎΠ½ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ. Если Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π»ΠΈΡΡŒ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² этих Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ… эффСктами Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ², Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ досады, Π½Π΅ испытаСтС. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SVG ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ ΠΈ Π² Internet Explorer 10 ΠΈ 11, Π½ΠΎ, ΠΊΠ°ΠΊ всСгда, всС Π½Π΅ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ просто, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ сСбС ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ. НапримСр, Π² Ρ„Π°ΠΉΠ»Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° example_07-05 имССтся страница, Π² Ρ‚Π΅Π»Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ содСрТится ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ°:

<img class="HRH" src=" [email protected]"/>

Π­Ρ‚ΠΎ фотография ΠΊΠΎΡ€ΠΎΠ»Π΅Π²Ρ‹ Π’Π΅Π»ΠΈΠΊΠΎΠ±Ρ€ΠΈΡ‚Π°Π½ΠΈΠΈ. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΒ­ΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄.

Π’ этом ΠΆΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° содСрТится SVG-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ с Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠΌ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π² элСмСнтах defs. Π Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° SVG ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

<svg xmlns="http://www.w3.org/2000/svg" version="1.1">

    <defs>

        <filter id="myfilter" x="0" y="0">

            <feColorMatrix in="SourceGraphic" type="hueRotate"

            values="90" result="A"/>

            <feGaussianBlur in="A" stdDeviation="6"/>

        </filter>

    </defs>

</svg>

Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° сначала задаСтся Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ½Π° Π½Π° 90Β° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ feColorMatrix, Π° Π·Π°Ρ‚Π΅ΠΌ этот эффСкт Ρ‡Π΅Ρ€Π΅Π· Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ result пСрСдаСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρƒ (feGaussianBlur) со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ размытия, Ρ€Π°Π²Π½Ρ‹ΠΌ 6. Π‘Ρ€Π°Π·Ρƒ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π·Π°Π΄Π°Π» слишком ТСсткиС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π² ΡƒΡ‰Π΅Ρ€Π± эстСтичСскому Π²ΠΎΡΠΏΡ€ΠΈΡΡ‚ΠΈΡŽ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρƒ нас Π½Π΅ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… сомнСний Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ эффСкт Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚!

Π’Π΅ΠΏΠ΅Ρ€ΡŒ вмСсто добавлСния этой SVG-Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΊ HTML ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π΅ Ρ‚Π°ΠΌ, Π³Π΄Π΅ ΠΎΠ½Π° находится, ΠΈ ΡΠΎΡΠ»Π°Ρ‚ΡŒΡΡ Π½Π° Π½Π΅Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΡ‚ ΠΆΠ΅ синтаксис CSS-Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅:

.HRH {

    filter: url('filter.svg#myfilter');

}

Π’ самых популярных Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ… (Chrome, Safari, Firefox) Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ эффСкт.

К соТалСнию, этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Internet Explorer 10 ΠΈΠ»ΠΈ 11. Но Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ способ достиТСния нашСй Ρ†Π΅Π»ΠΈ, Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉΡΡ Π² использовании собствСнного Ρ‚Π΅Π³Π° image SVG-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ изобраТСния Π² этот Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚. Π’ Ρ„Π°ΠΉΠ»Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° example_07-06 содСрТится ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ°: