Π‘ΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π°ΡΡΠΈΠ±ΡΡ viewBox Π² SVG-ΡΠ°ΠΉΠ»Π΅ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠΌ, ΡΠ°ΡΡΠΎ ΡΡΠ°Π²ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π² ΡΡΠΏΠΈΠΊ. ΠΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎ ΡΡΠΎ ΠΏΡΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π»ΠΈΠ±ΠΎ Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π²ΠΎΠ²ΡΠ΅, Π»ΠΈΠ±ΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π²ΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΡΠ΅ΡΡΡ ΡΠ²ΠΎΠΈ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΈ. Π Π»ΠΎΠ³Π°Ρ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΡΡΡΠ°Π½Π½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π½Π΅Π΄ΠΎΠ²Π΅ΡΠΈΠ΅ ΠΈΠ»ΠΈ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΠΌΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΊΡΠΎΠ΅ΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΡΠΈΠ±ΠΊΠ°Ρ , Π½ΠΎ ΠΈ Π² ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π±ΡΠ°ΡΠ·Π΅ΡΡ ΡΡΠ°ΠΊΡΡΡΡ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ ΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ. ΠΠΎΠ³Π΄Π° CSP (Content Security Policy) ΠΈΠ»ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ CORS Π±Π»ΠΎΠΊΠΈΡΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ, Π°ΡΡΠΈΠ±ΡΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ. ΠΡ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ, ΠΏΠΎΡΠ΅ΠΌΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Β«Π½Π΅Π΄ΠΎΠ²Π΅ΡΠΈΠ΅Β» ΠΊ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΡ ΠΈ ΠΊΠ°ΠΊ Π²Π΅ΡΠ½ΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π³ΡΠ°ΡΠΈΠΊΠΈ.
Π§Π°ΡΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π·Π°Π±ΡΠ²Π°ΡΡ, ΡΡΠΎ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΠ²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΏΠ°ΡΡΠ΅Ρ Π½Π΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π΅Ρ SVG-ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π±ΡΠ°ΡΠ·Π΅Ρ ΡΡΠΈΡΠ°Π΅Ρ ΡΠ°ΠΉΠ» ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½Π½ΡΠΌ ΠΈΠ»ΠΈ Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ Π΄Π»Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π°. ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠ² Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ XML ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΎΡΠΈΠ±ΠΎΠΊ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΈΡΡΠ΅Π·Π½ΠΎΠ²Π΅Π½ΠΈΠ΅ΠΌ viewBox.
ΠΡΠΈΡΠΈΠ½Ρ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ viewBox Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ
ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ viewBox Β«ΠΏΡΠΎΠΏΠ°Π΄Π°Π΅ΡΒ», ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ ΠΌΠ΅ΠΆΠ΄Ρ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ ΡΠΈΡΠΈΠ½Ρ/Π²ΡΡΠΎΡΡ ΠΈ ΡΠ°ΠΌΠΈΠΌ ΠΎΠΊΠ½ΠΎΠΌ ΠΏΡΠΎΡΠΌΠΎΡΡΠ°. ΠΡΠ»ΠΈ Π² SVG ΠΆΠ΅ΡΡΠΊΠΎ Π·Π°Π΄Π°Π½Ρ ΡΠ°Π·ΠΌΠ΅ΡΡ Π² ΠΏΠΈΠΊΡΠ΅Π»ΡΡ
, Π° Π°ΡΡΠΈΠ±ΡΡ viewBox ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΡΡ ΠΎΡΠΈΠ±ΠΊΡ, Π±ΡΠ°ΡΠ·Π΅Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΡΠΎ Π·Π°ΡΠΈΡΠ½ΡΠΉ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ, ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Π½ΠΈΠ΅ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΠΏΠ΅ΡΠ΅ΡΠΈΡΠΎΠ²ΠΊΠΈ.
ΠΡΠΎΡΠΎΠΉ Π²Π°ΠΆΠ½ΡΠΉ Π°ΡΠΏΠ΅ΠΊΡ β ΡΡΠΎ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° ΡΠ°ΠΉΠ»Π°. ΠΡΠ»ΠΈ SVG Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΡΠ΅ΡΡΡΡ ΠΈ ΡΠ΅ΡΠ²Π΅Ρ ΠΎΡΠ΄Π°Π΅Ρ Π΅Π³ΠΎ Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ Content-Type, Π±ΡΠ°ΡΠ·Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΡΠΈΠ»ΠΈ ΠΈ Π°ΡΡΠΈΠ±ΡΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π ΡΠ°ΠΊΠΈΡ
ΡΠ»ΡΡΠ°ΡΡ
ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΡΡΠΈΡΠ°Π΅ΡΡΡ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌ, ΠΈ Π΄Π²ΠΈΠΆΠΎΠΊ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅Ρ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
Π‘ΡΠΎΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΡΡΠΈΡΡΠ²Π°ΡΡ, ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΡΠΈΡΠ°ΡΡ DOM-Π΄Π΅ΡΠ΅Π²ΠΎ ΠΎΡ Β«ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ Β» Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΏΡΠΈ Π³ΠΈΠ΄ΡΠ°ΡΠ°ΡΠΈΠΈ. ΠΡΠ»ΠΈ Π²Π°Ρ viewBox Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΈΠ»ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΡΠ΅Π΅Ρ ΠΎΠΏΠ°ΡΠ½ΡΠΌΠΈ, ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π°Π»Π΅Π½ ΠΈΠ· ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
Google Chrome ΠΈ Firefox ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ SVG Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ Π² Π°ΡΡΠΈΠ±ΡΡΠ°Ρ . Π ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ Π±ΡΠ°ΡΠ·Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΡΠ³Π°Π΄Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΈ, Π΄ΡΡΠ³ΠΎΠΉ ΠΏΡΠΎΡΡΠΎ ΡΠΊΡΠΎΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ. ΠΡΠΎ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΈΠ»Π»ΡΠ·ΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½ ΠΈΠ»ΠΈ Π΅ΠΌΡ Β«Π½Π΅ Π΄ΠΎΠ²Π΅ΡΡΡΡΒ».
- ΠΠ°, ΡΠ°ΡΡΠΎ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ
- ΠΠ΅Ρ, Π²ΡΠ΅Π³Π΄Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
- Π’ΠΎΠ»ΡΠΊΠΎ Π² IE/Edge
- ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π±ΡΠ»Π° Π² CSS
ΠΡΠΎΠ±Π»Π΅ΠΌΡ Π΄ΠΎΠ²Π΅ΡΠΈΡ ΠΊ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°ΠΌ: CORS ΠΈ CSP
ΠΠΎΠ³Π΄Π° ΡΠ΅ΡΡ Π·Π°Ρ
ΠΎΠ΄ΠΈΡ ΠΎ Β«Π½Π΅Π΄ΠΎΠ²Π΅ΡΠΈΠΈ ΠΊ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°ΠΌΒ», ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π·Π°Π³ΡΡΠ·ΠΊΠΈ SVG-ΡΠ°ΠΉΠ»Π° Ρ Π΄ΠΎΠΌΠ΅Π½Π°, ΠΎΡΠ»ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΎΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ. ΠΡΠ°ΡΠ·Π΅ΡΡ ΡΡΡΠΎΠ³ΠΎ ΡΠ»Π΅Π΄ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ CORS (Cross-Origin Resource Sharing). ΠΡΠ»ΠΈ ΡΠ΅ΡΠ²Π΅Ρ Π½Π΅ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Access-Control-Allow-Origin, ΡΠΊΡΠΈΠΏΡΡ ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ SVG ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Ρ.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΊΡΠΈΡΠΈΡΠ½ΠΎ ΡΡΠΎ Π΄Π»Ρ inline-SVG, Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΡ
ΡΠ΅ΡΠ΅Π· JavaScript ΠΈΠ»ΠΈ fetch-Π·Π°ΠΏΡΠΎΡΡ. ΠΡΠ»ΠΈ Π²Ρ ΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ Π²Π½Π΅Π΄ΡΠΈΡΡ SVG Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ, Π° ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ ΠΊΠ°ΠΊ cross-origin Π±Π΅Π· ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ
ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠΉ, Π°ΡΡΠΈΠ±ΡΡ viewBox ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°ΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π±ΡΠ°ΡΠ·Π΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ Π²Π½ΡΡΡΠ΅Π½Π½ΠΎΡΡΡΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΡΠ°Π΄ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ SVG ΠΈΠ· Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² Π±Π΅Π· ΡΠ°Π½ΠΈΡΠ°ΠΉΠ·ΠΈΠ½Π³Π° (ΠΎΡΠΈΡΡΠΊΠΈ) ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ ΠΏΡΡΡ Π΄Π»Ρ XSS-Π°ΡΠ°ΠΊ. ΠΡΠ°ΡΠ·Π΅ΡΡ ΠΌΠΎΠ³ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ ΡΠ°ΠΊΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΡΠ΅Π²Π΅Π½ΡΠΈΠ²Π½ΠΎ.
ΠΠΎΠ»ΠΈΡΠΈΠΊΠ° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° (CSP) ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΏΡΠ΅ΡΠ°ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ² Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π΄ΠΎΠΌΠ΅Π½ΠΎΠ². ΠΡΠ»ΠΈ Π²Π°Ρ SVG ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ΄Π³ΡΡΠ·ΠΈΡΡ ΡΡΠΈΡΡ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ external reference, ΠΈ ΡΡΠΎΡ ΡΠ΅ΡΡΡΡ Π½Π΅ Π²Π½Π΅ΡΠ΅Π½ Π² whitelist, Π²Π΅ΡΡ ΡΠ°ΠΉΠ» ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ viewBox ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ, Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΡ Π»ΠΎΠΏΡΠ²Π°Π΅ΡΡΡ.
ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠ΅ΡΠ²Π΅Ρ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΠΎΡΠ΄Π°Π²Π°Π» ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ CSP Π² ΠΌΠ΅ΡΠ°-ΡΠ΅Π³Π°Ρ ΠΈΠ»ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°Ρ HTTP, ΡΠ±Π΅Π΄ΠΈΠ²ΡΠΈΡΡ, ΡΡΠΎ ΠΎΠ½ΠΈ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠ΅ΡΡΡΡΡ Π΄Π»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π²Π΅ΠΊΡΠΎΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΈ.
ΠΡΠ΅Π³Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΎΡΠ²Π΅ΡΠ° ΡΠ΅ΡΠ²Π΅ΡΠ° Π΄Π»Ρ SVG-ΡΠ°ΠΉΠ»ΠΎΠ². ΠΡΡΡΡΡΡΠ²ΠΈΠ΅ Content-Type: image/svg+xml ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π±ΡΠ°ΡΠ·Π΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ°ΠΉΠ» ΠΊΠ°ΠΊ plain text, ΠΈΠ³Π½ΠΎΠ±ΠΈΡΡΡ Π²ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ SVG
Π§Π°ΡΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π° ΠΊΡΠΎΠ΅ΡΡΡ Π² Π±Π°Π½Π°Π»ΡΠ½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΊΠ΅. ΠΡΡΠΈΠ±ΡΡ viewBox ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»Π΅Π½ ΠΊ ΡΠ΅Π³ΠΈΡΡΡΡ: ΠΏΠΈΡΠ°ΡΡ Π½ΡΠΆΠ½ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΎΠΉ Β«bΒ» (camelCase). ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ViewBox ΠΈΠ»ΠΈ VIEWBOX ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π±ΡΠ°ΡΠ·Π΅Ρ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅Ρζ什, ΠΏΠΎΡΡΠΈΡΠ°Π² Π΅Π³ΠΎ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ.
Π Π°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ Π°ΡΡΠΈΠ±ΡΡΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ³ΡΠ°ΡΡ ΡΠΎΠ»Ρ. Π₯ΠΎΡΡ ΡΡΠ°Π½Π΄Π°ΡΡ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΠΏΡΡΡΡ
, ΠΏΡΠΎΠ±Π΅Π»Ρ ΡΠ²Π»ΡΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΌ. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΡΡΠΎΡΡΡ ΠΈΠ· ΡΠ΅ΡΡΡΠ΅Ρ
ΡΠΈΡΠ΅Π»: min-x min-y width height. ΠΡΠ»ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΈΡΠ»Π° Π±ΡΠ΄Π΅Ρ ΡΡΠΎΡΡΡ ΠΏΡΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ° ΠΈΠ»ΠΈ Π½Π΅Π²Π°Π»ΠΈΠ΄Π½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ», Π²Π΅ΡΡ Π°ΡΡΠΈΠ±ΡΡ ΡΡΠ°Π½Π΅Ρ Π½Π΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ.
Π ΡΠ°Π±Π»ΠΈΡΠ΅ Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΈΡ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π½Π° ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³:
| ΠΡΠΈΠ±ΠΊΠ° Π² ΠΊΠΎΠ΄Π΅ | Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ | Π‘ΡΠ°ΡΡΡ Π΄ΠΎΠ²Π΅ΡΠΈΡ |
|---|---|---|
ViewBox="0 0 100 100" |
ΠΡΡΠΈΠ±ΡΡ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ | ΠΠΈΠ·ΠΊΠΈΠΉ (ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ) |
viewBox="0,0,100,100" |
Π Π°Π±ΠΎΡΠ°Π΅Ρ, Π½ΠΎ Π½Π΅ Π²ΠΎ Π²ΡΠ΅Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ | Π‘ΡΠ΅Π΄Π½ΠΈΠΉ |
viewBox="0 0 100" |
ΠΠΎΠ»Π½ΠΎΠ΅ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (Π½Π΅ 4 ΡΠΈΡΠ»Π°) | ΠΠΈΠ·ΠΊΠΈΠΉ |
viewBox="0 0 0 0" |
ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΡ Π»ΠΎΠΏΡΠ²Π°Π΅ΡΡΡ | ΠΡΡΠΎΠΊΠΈΠΉ (Π²Π°Π»ΠΈΠ΄Π½ΠΎ, Π½ΠΎ ΠΏΡΡΡΠΎ) |
ΠΠ°Π»ΠΈΠ΄Π°ΡΠΎΡΡ SVG, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΎΡ W3C, ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ Π²ΡΡΠ²ΠΈΡΡ ΡΡΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ Π΄ΠΎ deployment. ΠΠ΄Π½Π°ΠΊΠΎ, Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ Π²Π°Π»ΠΈΠ΄Π½ΠΎΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅, Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΡΡΡΠ°ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠ»ΠΈ viewBox Π·Π°Π΄Π°Π½ Π½Π° Π³ΡΡΠΏΠΏΠ΅ <g>, Π° Π½Π΅ Π½Π° ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅ <svg>, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ.
βοΈ ΠΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ viewBox
ΠΠ»ΠΈΡΠ½ΠΈΠ΅ CSS ΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²
Π‘ΡΠΈΠ»ΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· CSS ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π°ΡΡΠΈΠ±ΡΡΡ SVG. ΠΡΠ»ΠΈ Π΄Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π·Π°Π΄Π°Π½ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ width: 100% ΠΈ height: auto, Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΡΠ²Π½ΡΠΉ viewBox ΠΈΠ»ΠΈ ΠΎΠ½ Π½Π΅ ΡΠΈΡΠ°Π΅ΡΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠΌ, ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΈ Π±ΡΠ΄ΡΡ Π½Π°ΡΡΡΠ΅Π½Ρ. CSS ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΈΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΡΠ΅Π½Π°ΡΠΈΡΡ
ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π°, ΡΠ΅ΠΌ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ.
Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΠΈΡ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ preserveAspectRatio. ΠΡΠ»ΠΈ ΠΎΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡΡΡΠ΅Π΅ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠΌ, ΠΈΠ»ΠΈ Π΅ΡΠ»ΠΈ Π±ΡΠ°ΡΠ·Π΅Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π΅Π³ΠΎ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΠΈΠ·-Π·Π° ΠΎΡΠΈΠ±ΠΎΠΊ Π² viewBox, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ±ΡΠ΅Π·Π°Π½ΠΎ ΠΈΠ»ΠΈ ΡΠ°ΡΡΡΠ½ΡΡΠΎ. ΠΡΠΎ ΡΠ°ΡΡΠΎ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΡΠ΅ΡΡ Π΄Π°Π½Π½ΡΡ
ΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ.
Π ΡΠ»ΡΡΠ°ΡΡ
, ΠΊΠΎΠ³Π΄Π° SVG ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ background-image, Π°ΡΡΠΈΠ±ΡΡ viewBox Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· CSS-ΡΠ²ΠΎΠΉΡΡΠ²Π°. ΠΠ΄Π΅ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ ΠΈΡΡΠΈΠ½Ρ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° background-size. ΠΡΡΠ°Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ inline-SVG ΠΈ ΡΠΎΠ½ΠΎΠ²ΡΠΌΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ β ΡΠ°ΡΡΠ°Ρ ΠΏΡΠΈΡΠΈΠ½Π° Β«ΠΏΡΠΎΠΏΠ°ΠΆΠΈΒ» ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π°.
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ SVG Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ background-image, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΠΈΠ»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠΎΠ² ΡΠ΅ΡΠ΅Π· CSS. Π ΡΡΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΏΡΠΎΡΡΠΎ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΎΠΉ.
ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΈΠ»Π΅ΠΉ ΠΎΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ³ΡΠ°ΡΡ Π·Π»ΡΡ ΡΡΡΠΊΡ. ΠΡΠ»ΠΈ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΈΠΌΠ΅Π΅Ρ display: none Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΊΡΠΈΠΏΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Π΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΡ, viewBox ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°ΡΡΡΠΈΡΠ°Π½ Π½Π΅Π²Π΅ΡΠ½ΠΎ (ΠΊΠ°ΠΊ 0x0). ΠΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ.
ΠΠΎΡΠ΅ΠΌΡ viewBox Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π²Π½ΡΡΡΠΈ shadow DOM?
ΠΠ½ΡΡΡΠΈ Shadow DOM Π³ΡΠ°Π½ΠΈΡΡ viewport ΠΌΠΎΠ³ΡΡ Π²Π΅ΡΡΠΈ ΡΠ΅Π±Ρ ΠΈΠ½Π°ΡΠ΅. Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ SVG Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡΡΡ Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌΠΈ Ρ ΠΎΡΡΠ° shadow root.
ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈ JavaScript**
ΠΡΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΡΡ
ΡΠ΅ΡΠ΅Π· JavaScript Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΠ° viewBox Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡΡ ΡΠ΅ΡΠ΅Π· ΠΌΠ΅ΡΠΎΠ΄ setAttribute ΠΈΠ»ΠΈ ΠΏΡΡΠΌΠΎΠ΅ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Ρ viewBox.baseVal. ΠΡΡΠΌΠΎΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ Π²ΡΠ·Π²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠΎΠ²ΠΊΡ Π² ΡΡΠ°ΡΡΡ
Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ
ΠΈΠ»ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ
ΡΡΠ΅Π΄Π°Ρ
Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π²ΡΠΎΠ΄Π΅ React, Vue ΠΈΠ»ΠΈ Angular, ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΈΠΌΡ Π°ΡΡΠΈΠ±ΡΡΠ° Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π² camelCase (viewBox), Π° Π½Π΅ Π² kebab-case (view-box), Ρ
ΠΎΡΡ Π² HTML ΡΡΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ. Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΡΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ DOM-ΡΠ·Π»Ρ ΠΈ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΈΠΌ Π°ΡΡΠΈΠ±ΡΡΡ, ΡΡΠΈΡΠ°Ρ ΠΈΡ
ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΠΏΠ°ΡΠ½ΡΠΌΠΈ.
ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΠΎΠ΄Π³ΡΡΠ·ΠΊΠ° SVG ΡΠ΅ΡΠ΅Π· fetch ΠΈ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· innerHTML ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎΡΡΠΈ. ΠΡΠ°ΡΠ·Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠΈΡΠ°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π½Π΅Π΄ΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΠΌ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡ Ρ Π΄ΡΡΠ³ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π°. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΊΡΠΈΠΏΡΡ Π²Π½ΡΡΡΠΈ SVG Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡ Π½Π΅ Π±ΡΠ΄ΡΡ, Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ°Π½ΠΈΡΠ°ΠΉΠ·ΠΈΡΠΎΠ²Π°Π½Ρ.
ΠΠ»Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ DOMParser. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΡΠ°ΡΠ·Π΅ΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ XML-ΡΡΡΡΠΊΡΡΡΡ Π΄ΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ, ΡΡΠΎ ΡΠ½ΠΈΠΆΠ°Π΅Ρ ΡΠΈΡΠΊ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΡΠΈΠ»ΡΡΡΠ°ΠΌΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
const parser = new DOMParser();
const svgDoc = parser.parseFromString(svgString, "image/svg+xml");
const svgElement = svgDoc.documentElement;
Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ viewBox Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΠΏΠ°ΡΡΠ΅Π½ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, ΠΈ Π±ΡΠ°ΡΠ·Π΅Ρ Π½Π΅ Π±ΡΠ΄Π΅Ρ Β«Π½Π΅Π΄ΠΎΠ²Π΅ΡΡΠΈΠ²ΠΎΒ» ΠΎΡΠ½ΠΎΡΠΈΡΡΡΡ ΠΊ ΡΡΡΡΠΊΡΡΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ DOMParser Π΄Π»Ρ Π²ΡΡΠ°Π²ΠΊΠΈ SVG Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ namespaces ΠΈ Π°ΡΡΠΈΠ±ΡΡΠΎΠ², ΠΈΠ·Π±Π΅Π³Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ security policy.
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ**
Π§ΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ Β«Π½Π΅Π΄ΠΎΠ²Π΅ΡΠΈΠ΅ΠΌΒ» ΠΈ ΠΈΡΡΠ΅Π·Π½ΠΎΠ²Π΅Π½ΠΈΠ΅ΠΌ viewBox, ΡΠ»Π΅Π΄ΡΠΉΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΠ·ΠΌΠ°. Π£Π΄Π°Π»ΡΠΉΡΠ΅ Π»ΠΈΡΠ½ΠΈΠ΅ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈ ΡΠΊΡΠΈΠΏΡΡ ΠΈΠ· SVG-ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠ΅ΡΠ΅Π΄ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½ΠΎΠΌ. ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π²ΡΠΎΠ΄Π΅ SVGO ΠΈΠ»ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Ρ Π΄Π»Ρ Webpack ΠΈ Vite ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Ρ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ.
ΠΡΠ΅Π³Π΄Π° ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΠΉΡΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½ xmlns="http://www.w3.org/2000/svg" Π² ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅. ΠΠ΅Π· ΡΡΠΎΠ³ΠΎ Π°ΡΡΠΈΠ±ΡΡΠ° Π±ΡΠ°ΡΠ·Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄ Π½ΠΈΠΌ SVG, ΠΈ ΠΏΡΠΎΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΎΠΊΠ½ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ°.
ΠΡΠ»ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΡΡΡ, ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ²Π½ΠΎ Π·Π°Π΄Π°ΡΡ width ΠΈ height Π² ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΡ
Π΅Π΄ΠΈΠ½ΠΈΡΠ°Ρ
(Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 100%) Π²ΠΌΠ΅ΡΡΠ΅ Ρ viewBox. ΠΡΠΎ Π΄Π°ΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΡ ΡΠ΅ΡΠΊΠΈΠΉ ΡΠΈΠ³Π½Π°Π» ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅Π½Ρ, ΡΡΡΡΠ°Π½ΡΡ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΡ.
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ SVG Ρ Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠΈΡΠΈΠ½ΠΎΠΉ ΠΈΠ»ΠΈ Π²ΡΡΠΎΡΠΎΠΉ. ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ viewBox Π·Π°Π΄Π°Π½, Π±ΡΠ°ΡΠ·Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠΈΡΠ°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΠΌ ΠΈ Π½Π΅ ΡΡΠ°ΡΠΈΡΡ ΡΠ΅ΡΡΡΡΡ Π½Π° Π΅Π³ΠΎ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³.
Π Π΅Π³ΡΠ»ΡΡΠ½ΠΎ ΡΠ΅ΡΡΠΈΡΡΠΉΡΠ΅ ΡΠ²ΠΎΠΈ SVG Π² ΡΠ°Π·Π½ΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ ΠΈ Π½Π° ΡΠ°Π·Π½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ . Π’ΠΎ, ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² Chrome Π½Π° Π΄Π΅ΡΠΊΡΠΎΠΏΠ΅, ΠΌΠΎΠΆΠ΅Ρ Π²Π΅ΡΡΠΈ ΡΠ΅Π±Ρ ΠΈΠ½Π°ΡΠ΅ Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΌ Safari ΠΈΠ·-Π·Π° ΡΠ°Π·Π»ΠΈΡΠΈΠΉ Π² Π΄Π²ΠΈΠΆΠΊΠ°Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° WebKit ΠΈ Blink.
Π‘Π΅ΠΊΡΠ΅ΡΠ½ΠΎΠ΅ ΠΎΡΡΠΆΠΈΠ΅
SVG Sprite. ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΈΠΊΠΎΠ½ΠΎΠΊ Π² ΡΠΏΡΠ°ΠΉΡ ΡΠ°ΡΡΠΎ ΡΠ΅ΡΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ CORS, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ°ΠΉΠ» Π³ΡΡΠ·ΠΈΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π· ID.
FAQ: Π§Π°ΡΡΠΎ Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ
ΠΠΎΡΠ΅ΠΌΡ viewBox ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ, Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» ΠΎΡΠΊΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ?
ΠΡΠΈ ΠΎΡΠΊΡΡΡΠΈΠΈ ΡΠ΅ΡΠ΅Π· ΠΏΡΠΎΡΠΎΠΊΠΎΠ» file:// Π±ΡΠ°ΡΠ·Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΡΡΠΎΠ³ΠΈΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, Π±Π»ΠΎΠΊΠΈΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ Π²Π½Π΅ΡΠ½ΠΈΡ
ΡΠ΅ΡΡΡΡΠΎΠ² ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» SVG. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ (localhost).
ΠΠΎΠΆΠ΅Ρ Π»ΠΈ Π°Π½ΡΠΈΠ²ΠΈΡΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ viewBox?
Π‘Π°ΠΌ ΠΏΠΎ ΡΠ΅Π±Π΅ Π°ΡΡΠΈΠ±ΡΡ viewBox Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ Π°Π½ΡΠΈΠ²ΠΈΡΡΡΠΎΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ SVG ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΊΡΠΈΠΏΡΡ ΠΈΠ»ΠΈ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ, Π·Π°ΡΠΈΡΠ½ΠΎΠ΅ ΠΠ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ ΡΠ°ΠΉΠ»Π° ΡΠ΅Π»ΠΈΠΊΠΎΠΌ.
ΠΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π²ΠΈΠ΄ΠΈΡ Π»ΠΈ Π±ΡΠ°ΡΠ·Π΅Ρ viewBox?
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° (DevTools). ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½Ρ <svg> Π² DOM-Π΄Π΅ΡΠ΅Π²Π΅ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Π²ΠΊΠ»Π°Π΄ΠΊΡ Styles ΠΈΠ»ΠΈ Computed. ΠΡΠ»ΠΈ Π°ΡΡΠΈΠ±ΡΡ Π΅ΡΡΡ Π² HTML, Π½ΠΎ Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ, ΠΈΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ Π² CSS ΠΈΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ.
ΠΠ»ΠΈΡΠ΅Ρ Π»ΠΈ Π²Π΅ΡΡΠΈΡ SVG Π½Π° ΡΠ°Π±ΠΎΡΡ viewBox?
ΠΡΡΠΈΠ±ΡΡ viewBox ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ SVG 1.1 ΠΈ 2.0. ΠΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΡΠ΅Π½Ρ ΡΡΠ°ΡΡΠΌΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ°ΠΌΠΈ (IE8 ΠΈ Π½ΠΈΠΆΠ΅), ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ SVG Π²ΠΎΠΎΠ±ΡΠ΅ ΠΈΠ»ΠΈ ΠΈΠΌΠ΅ΡΡ Π±Π°Π³ΠΈ Π² ΠΏΠ°ΡΡΠ΅ΡΠ΅.
Π§ΡΠΎ Π΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ viewBox "ΠΌΠΈΠ³Π°Π΅Ρ" ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅?
ΠΡΠΎ ΠΏΡΠΈΠ·Π½Π°ΠΊ ΡΠΎΠ³ΠΎ, ΡΡΠΎ CSS Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅ HTML, ΠΈΠ»ΠΈ JavaScript ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ. Π‘ΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ Π·Π°Π΄Π°Π²Π°ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡ ΡΠ²Π½ΠΎ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ CSS contain Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠΎΠ²ΠΊΠΈ.