Продолжаю серию тем про SVG. Векторные элементы SVG корректно отображаются в современных браузерах, но как реализовать поддержку в старых версиях? Давайте посмотрим на кроссбраузерную совместимость векторной графики.
Предыдущие темы о SVG:
Использование элемента объекта
Если в файле .svg
графика сохраняется, то вы можете использовать элемент объект На странице:При использовании следующей конструкции браузеры, поддерживающие SVG, будут правильно отображать векторные элементы, но другие будут отображать .<object data='images/apple.svg'></object>
png
файл( Демонстрация ): <object data='images/apple.svg'>
<img src='images/apple.png'/>
</object>
Основным недостатком этого метода является то, что изображения PNG не масштабируются.
Модернизр
Этот метод использует библиотеки JavaScript. Модернизр.js
И Рафаэль.js
.Прежде всего, вам необходимо преобразовать файлы SVG в формат, поддерживаемый Raphael. Этот инструмент поможет нам в этом ГотовыйSetRaphael.js .
Подключите Modernizr.js: <script type="text/javascript" src="scripts/modernizr.js"></script>
Затем, в случае неподдерживающего браузера, нужно включить Raphael.js, а также svg.js — полученный файл после конвертации.
if (!Modernizr.inlinesvg) {
document.write(
'<script type="text/javascript" src="scripts/raphael.js"><\/script>',
'<script type="text/javascript" src="scripts/svg.js"><\/script>'
);
}
Теперь все, что осталось сделать, это добавить HTML-разметку.
В приведенном ниже коде файл SVG включается непосредственно в HTML-код страницы, чтобы Raphael мог работать: <svg version="1.1" xmlns=" http://www.w3.org/2000/svg " xmlns:xlink="http://www.w3.org/1999/xlink " x="0px" y="0px" width="500px" height="280px" viewBox="0 0 500 280" enable-background="new 0 0 500 280" xml:space="preserve ">
<path fill="#333333" d="M296.908,120.622c-8.77,6.201-13.158,13.676-13.158,22.41c0,10.458,5.425,18.479,16.262,24.076
c-2.908,8.435-7.122,15.764-12.65,22.009c-5.516,6.243-10.553,9.368-15.11,9.368c-2.147,0-5.075-0.718-8.794-2.133l-1.782-0.687
c-3.646-1.416-6.854-2.133-9.656-2.133c-2.641,0-5.535,0.555-8.679,1.665l-2.237,0.807l-2.818,1.154
c-2.218,0.884-4.468,1.326-6.725,1.326c-5.328,0-11.208-4.387-17.642-13.161c-9.273-12.567-13.905-26.264-13.905-41.085
c0-10.538,2.886-19.02,8.678-25.46c5.78-6.432,13.446-9.658,22.979-9.658c3.566,0,6.897,0.653,10,1.958l2.129,0.865l2.238,0.92
c1.992,0.84,3.601,1.264,4.825,1.264c1.569,0,3.316-0.364,5.231-1.094l2.929-1.151l2.19-0.804c3.483-1.262,7.34-1.896,11.555-1.896
C282.777,109.183,290.814,112.996,296.908,120.622z M273.238,82.575c0.108,1.344,0.167,2.378,0.167,3.102
c0,6.628-2.412,12.442-7.237,17.443c-4.823,5-10.438,7.494-16.837,7.494c-0.189-1.493-0.29-2.563-0.29-3.212
c0-5.635,2.239-10.924,6.726-15.864c4.482-4.939,9.671-7.838,15.575-8.678C271.754,82.787,272.395,82.696,273.238,82.575z"/>
</svg>
<div id="applelogo"></div>
Вспоминая предыдущая статья , добавьте текст под файлом SVG: <text x="210" y="250">This is SVG</text>
Вот что произошло( Демонстрация ):
SVGWeb
Еще одним инструментом для реализации поддержки SVG в старых браузерах является библиотека JavaScript. SVGWeb .
После подключения к странице вы можете размещать SVG-элементы следующим образом: <script type="image/svg+xml">
<svg .
>.
</svg>
</script>
В XHTML вы должны использовать CDATA: <script type="image/svg+xml"><![CDATA[
<svg .
>.
</svg>
]]></script>
Заключение
Описанные примеры кроссбраузерной совместимости SVG-графики не идеальны, но подходят как решение большинства проблем с корректным отображением векторной графики в старых браузерах.Использованные материалы:
- Использование SVG для создания гибких, масштабируемых и интересных фонов, часть II
- Добавление масштабируемой векторной графики (SVG) в неподдерживаемый браузер
-
Информационные Продукты – Разумный Старт
19 Oct, 24 -
История Одного Бага
19 Oct, 24 -
Еще Несколько Советов Для Php-Разработчиков
19 Oct, 24