kzen.dev
  • Otázky
  • Značky
  • Používatelia
Oznámenia
Odmeny
Registrácia
Po registrácii budete informovaní o odpovediach a komentároch na vaše otázky.
Prihlásiť sa
Ak už máte konto, prihláste sa a skontrolujte nové oznámenia.
Za pridané otázky, odpovede a komentáre budú udelené odmeny.
Viac na
Zdroj
Upraviť
 artlung
artlung
Question

Mám pre súbory SVG použiť <img>, <object> alebo <embed>?

Mám na načítanie súborov SVG do stránky použiť <img>, <object> alebo <embed> podobne ako pri načítaní súborov jpg, gif alebo png?

Aký je kód pre každý z nich, aby sa zabezpečilo čo najlepšie fungovanie? (pri svojom výskume vidím odkazy na zahrnutie mimetypu alebo poukázanie na náhradné vykresľovače SVG a nevidím dobrý odkaz na súčasný stav).

Predpokladám, že kontrolujem podporu SVG pomocou Modernizr a v prípade prehliadačov, ktoré nepodporujú SVG, sa vraciam späť (pravdepodobne vykonám nahradenie obyčajným tagom <img>)do pôvodného stavu.

560 2010-12-18T03:50:45+00:00 3
 artlung
artlung
Edited question 10 september 2018 в 4:05
Programovanie
svg
vector-graphics
html
This question has 1 odpoveď in English, to read them log in to your account.
Solution / Answer
Erik Dahlstr&#246;m
Erik Dahlström
19 december 2010 в 12:38
2010-12-19T12:38:47+00:00
Viac na
Zdroj
Upraviť
#11536371

Môžem odporučiť SVG Primer (vydaný W3C), ktorý sa zaoberá touto témou: http://www.w3.org/Graphics/SVG/IG/resources/svgprimer.html#SVG_in_HTML

Ak použijete <object>, potom získate raster fallback zadarmo*:

<object data="your.svg" type="image/svg+xml">
  <img src="yourfallback.jpg" />
</object>

*) No, nie celkom zadarmo, pretože niektoré prehliadače sťahujú oba zdroje, pozri Larryho návrh nižšie, ako to obísť.

Aktualizácia z roku 2014:

  • Ak chcete neinteraktívny svg, použite <img> so spätnými skriptmi na verziu png (pre starší IE a android <3). Jeden čistý a jednoduchý spôsob, ako to urobiť:

<img src="your.svg" onerror="this.src='your.png'">.

Bude sa to správať podobne ako obrázok GIF, a ak váš prehliadač podporuje deklaratívne animácie (SMIL), budú sa prehrávať.

  • Ak chcete interaktívny svg, použite buď <iframe> alebo <object>.

  • Ak potrebujete poskytnúť starším prehliadačom možnosť používať zásuvný modul svg, potom použite <embed>.

  • Pre svg v css background-image a podobných vlastnostiach je modernizr jednou z možností prepínania na záložné obrázky, druhou je závislosť od viacerých pozadí, ktoré to robia automaticky:

     div {
         background-image: url(fallback.png);
         background-image: url(your.svg), none;
     }

    Poznámka: stratégia viacerých pozadí nefunguje v systéme Android 2.3, pretože podporuje viacero pozadí, ale nie svg.

Ďalším dobrým čítaním je tento blogpost o svg fallbackoch.

Erik Dahlstr&#246;m
Erik Dahlström
Edited answer 5 február 2015 в 8:04
597
0
Artificial intelligence to parse product page
productapi.dev
Christian Landgren
Christian Landgren
14 august 2013 в 11:29
2013-08-14T23:29:18+00:00
Viac na
Zdroj
Upraviť
#11536373

Od IE9 a vyššie môžete použiť SVG v obyčajnej značke IMG.

https://caniuse.com/svg-img

<img src="/static/image.svg">
Volker E.
Volker E.
Edited answer 16 marec 2018 в 3:21
104
0
Artificial intelligence to parse product page
productapi.dev
 WGH
WGH
1 február 2014 в 8:21
2014-02-01T20:21:11+00:00
Viac na
Zdroj
Upraviť
#11536374

<object> a <embed> majú zaujímavú vlastnosť: umožňujú získať odkaz na SVG dokument z vonkajšieho dokumentu (pri zohľadnení politiky rovnakého pôvodu). Tento odkaz sa potom môže použiť na animáciu SVG, zmenu jeho súborov štýlov atď.

Vzhľadom na adresu

<object id="svg1" data="/static/image.svg" type="image/svg+xml"></object>

Potom môžete robiť veci ako

document.getElementById("svg1").addEventListener("load", function() {
    var doc = this.getSVGDocument();
    var rect = doc.querySelector("rect"); // suppose our image contains a <rect>
    rect.setAttribute("fill", "green");
});
94
0
Pridať otázku
Kategórie
Všetky
Technológia
Kultúra / Rekreácia
Život / Umenie
Veda
Profesionálne
Obchod
Používatelia
Všetky
New
Popular
1
Inessa bu
Registered pred mesiacom
2
Denis Babushkin
Registered pred mesiacom
3
asakuno asakuno
Registered pred mesiacom
4
aldo salerno
Registered pred mesiacom
5
Анна Батицкая
Registered pred mesiacom
Artificial intelligence to parse product page
productapi.dev
DE
EL
ES
FR
ID
IT
JA
KO
NL
NO
PT
RO
RU
SK
TR
ZH
© kzen.dev 2023
Zdroj
stackoverflow.com
na základe licencie cc by-sa 3.0 s uvedením autora