Verwenden Sie zunächst ein IMG-Tag in Ihrem HTML-Code, um eine SVG-Grafik einzubetten. Ich habe Adobe Illustrator verwendet, um die Grafik zu erstellen.
<img id="facebook-logo" class="svg social-link" src="/images/logo-facebook.svg"/>
Dies ist genau so, wie Sie ein normales Bild einbetten würden. Beachten Sie, dass Sie dem IMG die Klasse svg zuweisen müssen. Die Klasse "social-link" dient nur als Beispiel. Die ID ist nicht erforderlich, aber nützlich.
Verwenden Sie dann diesen jQuery-Code (in einer separaten Datei oder inline im HEAD).
/**
* Replace all SVG images with inline SVG
*/
jQuery('img.svg').each(function(){
var $img = jQuery(this);
var imgID = $img.attr('id');
var imgClass = $img.attr('class');
var imgURL = $img.attr('src');
jQuery.get(imgURL, function(data) {
// Get the SVG tag, ignore the rest
var $svg = jQuery(data).find('svg');
// Add replaced image's ID to the new SVG
if(typeof imgID !== 'undefined') {
$svg = $svg.attr('id', imgID);
}
// Add replaced image's classes to the new SVG
if(typeof imgClass !== 'undefined') {
$svg = $svg.attr('class', imgClass+' replaced-svg');
}
// Remove any invalid XML tags as per http://validator.w3.org
$svg = $svg.removeAttr('xmlns:a');
// Replace image with new SVG
$img.replaceWith($svg);
}, 'xml');
});
Der obige Code sucht nach allen IMGs mit der Klasse "svg" und ersetzt sie durch die Inline-SVGs aus der verlinkten Datei. Der große Vorteil ist, dass es Ihnen erlaubt, CSS zu verwenden, um die Farbe der SVG jetzt, wie so zu ändern:
svg:hover path {
fill: red;
}
Der jQuery-Code, den ich geschrieben habe, lässt sich auch auf die ID und die Klassen der Originalbilder übertragen. Also funktioniert auch dieses CSS:
#facebook-logo:hover path {
fill: red;
}
Oder:
.social-link:hover path {
fill: red;
}
Ein Beispiel dafür, wie es funktioniert, sehen Sie hier: http://labs.funkhausdesign.com/examples/img-svg/img-to-svg.html
Wir haben hier eine kompliziertere Version, die Caching beinhaltet: https://github.com/funkhaus/style-guide/blob/master/template/js/site.js#L32-L90