Pass auf, alle anderen Antworten haben ein Problem im IE.
Lass uns diese Situation haben - Button mit vorgestelltem Symbol. Alle Browser handeln dies korrekt ab, aber der IE nimmt die Breite des Elements und skaliert den Inhalt davor, um es anzupassen. JSFiddle
#mydiv1 { width: 200px; height: 30px; background: green; }
#mydiv1:before {
content: url("data:url or /standard/url.svg");
}
Die Lösung besteht darin, die Größe des vorherigen Elements festzulegen und es dort zu belassen:
#mydiv2 { width: 200px; height: 30px; background: green; }
#mydiv2:before {
content: url("data:url or /standard/url.svg");
display: inline-block;
width: 16px; //nur eine Größe ist in Ordnung, IE skaliert gleichmäßig, um sie anzupassen
}
Die background-image
+ background-size
Lösungen funktionieren auch, sind aber etwas unhandlich, da du die gleichen Größen zweimal angeben musst.
Das Ergebnis im IE11:
![IE rendering]()