Я работаю над быстро реагирующим дизайном, и я думаю о создании значков навигации как .svg файлы. Что такое текущая поддержка браузера как и там обходное решение/плагин для более старых версий браузера?
Можно использовать сценарий caniuse.js , чтобы обнаружить, если браузеры поддерживают SVG или нет:
caniuse.svg()
... или можно позволить апачскому серверу, имеющему дело с ним:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} MSIE\s[5-8]\.
RewriteCond %{REQUEST_FILENAME} ^.+?\.svg$
RewriteRule ^(.+?)\.(?:svg)$ $1\.png [L]
только необходимо создать .png версии каждого .svg файла, и не имеет значения, если файл для фона CSS или для тега img.
ВЎWith возражают элементу!
<object data="example.svg" type="image/svg+xml">
<!-- If browser don't soport / don't find SVG -->
<img src="example.png" alt="Logotype" />
</object>
отредактировал: я раньше связывался с очень хорошей сравнительной таблицей SVG, но она не была обновлена с 2011, таким образом, это больше не релевантно.
Если я работаю с <img>
элементы (в противоположность фоновым изображениям CSS), я использую удобное обходное решение, комбинацию [1 115] Modernizr (библиотека JavaScript, которая обнаруживает доступность определенных функций, , таких как поддержка .svg, на браузерах), и несколько строк jQuery:
$(".no-svg img").each(function() {
var $this = $(this);
if ($this.attr("src").indexOf(".svg") > -1) {
var isSvg = $this.attr("src").toString();
var isPng = isSvg.replace(".svg", ".png");
$this.attr("src", isPng);
}
});
1) я создаю .png версии каждого .svg файла. 2) Modernizr дает элементу HTML класс .no-svg
, если он обнаруживает, что нет никакой поддержки .svg. 3) JQuery подкачивает расширения файла. .indexOf(".svg")
проверки, если строка ".svg"
содержится в значении src
, возвращаясь -1
, если это не находит его и положительное целое число, если это делает. Если это находит ".svg"
, целое src
, за ниточку дергают в isSvg
, и .replace()
подкачки .svg
для [1 112] и сохраняет результат как [1 113], который затем установлен как значение [1 114].