Chcę umieścić niektóre obrazy SVG przed niektórymi wybranymi elementami. Korzystam z JQuery, ale to nie ma znaczenia. Chciałbym, aby element: before był jako:
#mydiv:before {
content:"<svg.. code here</svg>";
display:block;
width:22px;
height:10px;
margin:10px 5px 0 10px;
}
Jeśli zrobię to, jak pokazano powyżej, po prostu wyświetli ciąg. Sprawdziłem specyfikacje i wydaje się, że istnieją pewne ograniczenia co do treści. Czy istnieje obejście tego ograniczenia? Tylko treść css jest istotna dla mojego pytania.
Odpowiedzi:
Tak, możesz! Właśnie przetestowałem to i działa świetnie, to jest niesamowite! Nadal nie działa z HTML, ale działa z SVG.
W moim index.html mam:
A mój test.svg wygląda następująco:
źródło
content: url(path/to/my.svg)
. Nie musi to jednak oznaczać, że będzie działać z biblioteką podpowiedzi interfejsu użytkownika jQuery.content: url(mysprite.svg#my-icon)
nie podciągnie twojej ikony. chciałbym jednak udowodnić, że się mylę :)Tak. Możesz dodać SVG jako obraz tła pustego: po lub: przed. Proszę bardzo:
źródło
background-size
nie jest obsługiwane w Opera Mini. To jest bardzo frustrujące.<?xml version="1.0" encoding="utf-8"?>
na początku mojego pliku svg, aby działał .upewnij się, że Twój plik SVG nie zawiera podwójnych cudzysłowów i uriencode # symboli.
źródło
url('file.svg')
działa jednak.xmlns='http://www.w3.org/2000/svg'
części <svg> do pracy w przeglądarce Chrome 66.x. Na przykład - mały szewron będzie:content:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24px' height='24px' fill='white'><path d='M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z' /></svg>");
Korzystanie ze sprite'ów i danych CSS daje dodatkowe interesujące korzyści, takie jak szybkie ładowanie i mniej żądań ORAZ otrzymujemy obsługę IE8 za pomocą image / base64:
Próbka Codepen przy użyciu SVG
HTML
CSS
W przypadku IE8 zmień na:
źródło
scale svg
a znajdziesz wiele innych sposobówWygodne narzędzie do kodowania adresów URL SVG
źródło
Uważaj, wszystkie pozostałe odpowiedzi mają jakiś problem w IE.
Pozwala mieć taką sytuację - przycisk z wcześniej przygotowaną ikoną. Wszystkie przeglądarki obsługują to poprawnie, ale IE przyjmuje szerokość elementu i skaluje zawartość przed, aby go dopasować. JSFiddle
Rozwiązaniem jest ustawienie rozmiaru przed elementem i pozostawienie go tam, gdzie jest:
Rozwiązania
background-image
+background-size
również działają, ale są mało przydatne, ponieważ musisz dwukrotnie określić te same rozmiary.Wynik w IE11:
źródło
Aby rozszerzyć ten temat. Jeśli chcesz dodać ikony Font Awesome 5 , musisz dodać dodatkowy CSS.
Ikony domyślnie mają klasy
svg-inline--fa
ifa-w-*
.Istnieją również modyfikator zajęcia takie jak
fa-lg
,fa-rotate-*
i inne. Musisz sprawdzićsvg-with-js.css
plik i znaleźć odpowiedni CSS do tego.Musisz dodać własny kolor do ikony css, w przeciwnym razie domyślnie będzie czarny, na przykład
fill='%23f00'
gdzie%23
jest zakodowany#
.źródło
źródło