Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π²Ρ ΡΠ΅ΡΡΠΈΡΡΠ΅ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ html2canvas .
Π‘ΡΠ°ΡΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ, ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ
ΡΠΎΠΎΠ±ΡΠ°Π»ΠΎΡΡ, Π±ΡΠ΄ΡΡ Π·Π°ΠΊΡΡΡΡ.
ΠΡΠ»ΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ <img src="... .svg">
svg ΠΏΡΠΎΡΡΠΎ Π²Π·ΠΎΡΠ²Π΅ΡΡΡ. ΠΠΎΡ
ΠΎΠΆΠ΅, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ Β«Π°Π΄Π°ΠΏΡΠΈΠ²Π½ΡΠΌΠΈΒ» ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ svg (ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ
Π² ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ΅ Π½Π΅ Π·Π°Π΄Π°Π½Π° Π²ΡΡΠΎΡΠ° ΠΈΠ»ΠΈ ΡΠΈΡΠΈΠ½Π°). ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ contentBox ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ, Π½ΠΎ ΠΏΡΠΈ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° Ρ
ΠΎΠ»ΡΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π²ΡΡΠΎΡΡ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠ°.
ΠΠΎΡ ΡΠΊΡΠΈΠΏΠΊΠ°: http://jsfiddle.net/1b4mLnfj/2/
Π― ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΠ» ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠΉ, Π½Π°Π΄Π΅ΡΡΡ, ΠΏΡΠΎΡΡΠ½ΡΠ΅Ρ ΡΡΠΎ: http://jsfiddle.net/1b4mLnfj/2/
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, Ρ ΡΠ°Π·Π±Π΅ΡΡΡΡ
Π― Π΄ΠΎΠ»Π³ΠΎ ΠΊΠΎΠ²ΡΡΡΠ»ΡΡ Π² ΡΡΠΎΠΌ, ΠΈ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ Π³ΡΠ°Π½ΠΈΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, Π½ΠΎ ΡΠ°ΠΌΠΎ Π²Π΅ΠΊΡΠΎΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠ°. ΠΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ Ρ Π³ΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ ΠΈ curvedBounds Π²ΡΠ΅ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, Π³Π΄Π΅ Π²Π½ΠΎΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ... ΠΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π»ΡΡ Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΡΠ°Π½ΡΡΠ΅?
ΠΠΎΡΠ»Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ Π²ΡΡΡΠ½ΠΈΠ»ΠΎΡΡ, ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ svg, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π»ΡΡΡΡΡ "Π°Π΄Π°ΠΏΡΠΈΠ²Π½ΡΠΌΠΈ" - Π΅ΡΠ»ΠΈ Π²Ρ ΠΎΡΠΊΡΠΎΠ΅ΡΠ΅ svg Π² Illustrator ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ Π±Π΅Π· ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ»Π°ΠΆΠΊΠ° "ΠΎΡΠ·ΡΠ²ΡΠΈΠ²ΡΠΉ", ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ... Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ, Π΅ΡΠ»ΠΈ svg Π½Π΅ ΠΈΠΌΠ΅ΡΡ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π² Π½Π΅ΠΌ Π²ΡΡΠΎΡΡ ΠΈ ΡΠΈΡΠΈΠ½Ρ (ΡΠΎ, ΡΡΠΎ Illustrator Π½Π°Π·Π²Π°Π» Β«ΠΎΡΠ·ΡΠ²ΡΠΈΠ²ΡΠΌΒ»), ΡΠΎΠ³Π΄Π° ΠΎΠ½ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠ°.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π°ΠΌΠ΅Π½Π° <img>
ΠΈΡΡΠΈΠ½Π½ΡΠΌ <svg>
Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΈΠΏΠ° svg-inject
(https://github.com/iconfu/svg-inject) - Π·Π΄Π΅ΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ Π²ΡΡΠΎΡΡ ΠΈ ΡΠΈΡΠΈΠ½Ρ ΠΊ <img>
, ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ ΠΏΡΠΈΠ½ΡΡΡ <svg>
ΠΏΡΠΈ Π²Π²Π΅Π΄Π΅Π½ΠΈΠΈ, ΠΈ ΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° Ρ
ΠΎΠ»ΡΡΠ΅.
Π£ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
, base64 src ΠΈΠ»ΠΈ Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ svg Ρ ΡΠΎΠΉ ΠΆΠ΅ ΡΡΡΡΠΊΡΡΡΠΎΠΉ ΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌ ΡΡΠΈΠ»Π΅ΠΌ ΠΊΠ»Π°ΡΡΠ°), Π½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΠΌΡ-ΡΠΎ Π΄ΡΡΠ³ΠΎΠΌΡ, Π±ΠΎΡΡΡΠ΅ΠΌΡΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. Π― ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π°Π΄ ΡΡΠΈΠΌ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
Π΄Π½Π΅ΠΉ, ΠΈ ΡΡΠΎ Π»ΡΡΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ. Π― Π½Π΅ ΠΌΠΎΠ³Ρ Π½Π°ΠΉΡΠΈ Π½ΠΈΡΠ΅Π³ΠΎ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° html2canvas
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ svg Π½Π° Ρ
ΠΎΠ»ΡΡΠ΅, Π΅ΡΠ»ΠΈ svg Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π²ΡΡΠΎΡΡ / ΡΠΈΡΠΈΠ½Ρ.
ΠΡΠ°ΠΊ, Ρ Π±ΡΠΎΡΠΈΠ» Π½Π° ΡΡΠΎ ΠΏΠΎΠ»ΠΎΡΠ΅Π½ΡΠ΅, Π½ΠΎ Ρ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΡΡ Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΌ Ρ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ svg Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ / ΡΠΈΡΡΠ΅ΡΡΡ Π½Π° Ρ
ΠΎΠ»ΡΡΠ΅. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π² renderNodeContent
Π΅ΡΠ»ΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΡΡΠ½ΠΈΡΡ, ΠΊΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ svg, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅ΠΌ, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π²ΡΡΠΎΡΠ° / ΡΠΈΡΠΈΠ½Π° (ΠΎΡΠ·ΡΠ²ΡΠΈΠ²ΡΠΉ), ΡΠΎΠ³Π΄Π° ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΡ svg Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ( width = viewport.width, height = (image.height * viewport.width) / image.width)), ΡΠΎ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°Π±ΠΎΡΠ°ΡΡ. Π― ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, ΠΊΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΎΡΡΡΡΡΡΠ²ΡΡΡ Π»ΠΈ Π² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ svg ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΡΡΠΎΡΡ ΠΈ ΡΠΈΡΠΈΠ½Ρ.
ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π·Π΄Π΅ΡΡ?
ΠΠ΅ ΠΎΡ ΠΌΠ΅Π½Ρ, Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π» ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Π½ΠΎ, Π½Π°Π΄Π΅ΡΡΡ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π²ΡΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ.
ΠΡΠΈΠ²Π΅Ρ, Ρ ΠΌΠ΅Π½Ρ Π±ΡΠ»Π° ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°.
ΠΠΎΠΉ ΡΠ΅Π³ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠΈΠ»Ρ style='transition: transform 0.6s;'
. ΠΠ΅Π· ΡΡΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, Ρ ΡΠ°Π·Π±Π΅ΡΡΡΡ