Chrome не передает SVG с помощью тега <img>
У меня возникают проблемы с google chrome, не отображающим svg с тегом img. Это происходит при обновлении страницы и начальной загрузки страницы. Я могу получить изображение, отображаемое "Проверка элемента", а затем щелкнуть правой кнопкой мыши файл svg и открыть файл svg на новой вкладке. Изображение svg будет отображаться на исходной странице.
<img src="../images/Aged-Brass.svg">
Полностью при потере здесь, что касается проблемы. Изображение svg отлично видно в IE9 и FF, а не в Chrome или Safari.
У меня также установлены мои типы MIME. (Изображение/SVG + XML)
EDIT:
Вот простая html-страница, которую я создал, чтобы помочь проиллюстрировать мою проблему.
<!DOCTYPE html>
<html>
<head>
<title>SVG Test</title>
<style>
#BackgroundImage{
background: url('../images/Aged-Brass.svg') no-repeat scroll left top;
width: 400px;
height: 600px;
}
#ImageTag{
width: 400px;
height: 600px;
margin: 0px;
padding: 0px;
}
</style>
</head>
<body>
<div id="ImageTag">
<img src="../images/Aged-Brass.svg">
</div>
<div id="BackgroundImage"></div>
</body>
</html>
Как вы можете видеть, я пытаюсь использовать файл svg как в теге img, так и в css в качестве фонового изображения. Ни одна из них не работает с начальной загрузкой страницы в хром или сафари. Когда я проверяю элемент, щелкните правой кнопкой мыши svg или щелкните ссылку на svg load в другом окне, файл svg отобразит на исходной вкладке.
Ответы
Ответ 1
Простой и легкий способ; в соответствии с https://css-tricks.com/forums/topic/svg-css-background-image-not-showing-in-chrome/ Вы должны открыть файл .SVG с помощью текстового редактора (например, блокнота) и изменить
xlink:href="data:img/png;base64,
чтобы:
xlink:href="data:image/png;base64,
это сработало для меня!
Ответ 2
Я пришел сюда, потому что у меня была та же проблема,
когда я проверяю элемент, я могу видеть файл, но на сайте я не могу (даже при использовании localhost)
ответ на мою проблему состоял в сохранении SVG файла.
Если вы сохранили его из иллюстратора, обязательно нажмите "embed", а не "link". поскольку ссылка будет просто ссылаться на ваши локальные файлы, а не включать данные (если я правильно понимаю).
![embed-svg enter image description here]()
Я читал об этом на сайте adobe, где есть и другие полезные советы для экспорта
http://www.adobe.com/inspire/2013/09/exporting-svg-illustrator.html
Это сработало для меня, надеюсь, что это было полезно.
Ответ 3
Для svg-тега требуется атрибут пространства имен xmlns:
<svg xmlns="http://www.w3.org/2000/svg"></svg>
Ответ 4
Я пришел сюда, потому что у меня была похожая проблема, изображение не отображалось. Что я обнаружил, так это то, что заголовок типа контента моего сервера тестирования был неправильным. Я исправил это, добавив следующее в мой файл .htaccess:
AddType image/svg+xml svg svgz
AddEncoding gzip svgz
Ответ 5
Используйте <object>
вместо этого (конечно, замените каждый URL своим собственным):
.BackgroundImage {
background: url('https://upload.wikimedia.org/wikipedia/commons/b/bd/Test.svg') no-repeat scroll left top;
width: 400px;
height: 600px;
}
<!DOCTYPE html>
<html>
<head>
<title>SVG Test</title>
</head>
<body>
<div id="ObjectTag">
<object type="image/svg+xml" data="https://upload.wikimedia.org/wikipedia/commons/b/bd/Test.svg" width="400" height="600">
Your browser does not support SVG.
</object>
</div>
<div class="BackgroundImage"></div>
</body>
</html>
Ответ 6
Я смог использовать ваш образец для создания тестовой страницы, и он работал отлично. Мое предположение заключается в том, что что-то не так с вашим svg файлом. Можете ли вы вставить это здесь? Вот пример, который я использовал.
<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg">
<!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
<g>
<title>Layer 1</title>
<ellipse ry="30" rx="30" id="svg_1" cy="50" cx="50" stroke-width="5" stroke="#000000" fill="#FF0000"/>
</g>
</svg>
Ответ 7
выглядит как ошибка Chrome,
я сделал что-то еще, так как я почти с ума сошел из-за этого...
используя Chrom debugger, если вы измените css объекта svg, который он показывает на экране.
так что я сделал:
1. проверьте размер экрана
2. прослушать событие "load" моего объекта SVG
3. Когда элемент загружен, я изменяю его css, используя jQuery
4. Он помогло
if (jQuery(window).width() < 769) {
jQuery('object#mysvg-logo')[0].addEventListener('load', function() {
jQuery("object#mysvg-logo").css('width','181px');
}, true);
}
width: 180px;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<object id="mysvg-logo" type="image/svg+xml" data="my svg logo url here">Your browser does not support SVG</object>
Ответ 8
У меня была похожая проблема, и существующие ответы на нее либо не подходили, либо работали, но мы не могли использовать их по другим причинам. Поэтому мне пришлось выяснить, что не понравилось Chrome в наших SVG.
В нашем случае оказалось, что атрибут id
тега symbol
в SVG файле содержит :
in, что не нравится Chrome. Как только я удалил :
все работало нормально.
Плохой:
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 72 72">
<defs>
<symbol id="ThisIDHasAColon:AndChromeDoesNotLikeIt">
...
</symbol>
</defs>
<use
....
xlink:href="#ThisIDHasAColon:AndChromeDoesNotLikeIt"
/>
</svg>
Хорошо:
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 72 72">
<defs>
<symbol id="NoMoreColon">
...
</symbol>
</defs>
<use
....
xlink:href="#NoMoreColon"
/>
</svg>
Ответ 9
Добавление атрибута width в тег [svg] (путем редактирования исходного XML файла svg) мне помогло: например:
<!-- This didn't render -->
<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg">
...
</svg>
<!-- This did -->
<svg version="1.1" baseProfile="full" width="1000" xmlns="http://www.w3.org/2000/svg">
...
</svg>
Ответ 10
Сначала я экспортировал свой svg из Photoshop CC, и мне пришлось добавить его вручную
version="1.1"
в <svg>
чтобы показать его на хром.
Ответ 11
В моем случае эта проблема сохранялась, когда я создавал и сохранял SVG с помощью Photoshop. Помогло открытие файла с помощью Illustrator и последующий экспорт svg.
Ответ 12
Была та же проблема. Если сервер настроен правильно, и .htacces не является ответом, возможно, вам захочется посмотреть источник svg, который вы встраиваете. Mine были созданы с текстовым редактором, хорошо зарекомендовали себя на Chrome & Safari внутри кода html5, после того, как они были встроены, ничего не было видно.
Добавлена правильная версия, размеры и т.д. В код svg и работает как шарм.
Кроме того, все стили встроены.
Т.е
<svg version="1.1" baseProfile="full" width="24" height="24" xmlns="http://www.w3.org/2000/svg">
<rect x="0" y="0" rx="2" ry="2" width="24" height="24" style="fill:#fbc800;width:24px;height:24px;" />
</svg>
Ответ 13
Я также получил ту же проблему с Chrome, после добавления DOCTYPE
он работает, как ожидалось
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
До
<?xml version="1.0" encoding="iso-8859-1"?>
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="792px" height="792px" viewBox="0 0 792 792" style="enable-background:new 0 0 792 792;" xml:space="preserve">
<g fill="none" stroke="black" stroke-width="15">
......
......
.......
</g>
</svg>
После
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="792px" height="792px" viewBox="0 0 792 792" style="enable-background:new 0 0 792 792;" xml:space="preserve">
<g fill="none" stroke="black" stroke-width="15">
......
......
.......
</g>
</svg>
Ответ 14
Изображение .svg
не имеет начальной высоты и ширины. Поэтому это не видно. Вы должны установить это.
Вы можете сделать либо в строке или в файле CSS:
В соответствии:
<img src="../images/Aged-Brass.svg" class="image" alt="logo" style="width: 100px; height: 50px;">
Css файл:
<img src="../images/Aged-Brass.svg" class="image" alt="logo">
.image {
width: 100px;
height: 50px;
}
Ответ 15
Будьте осторожны, что вы не имеете переход CSS свойство для вас SVG изображений
Теперь я не знаю почему, но если вы сделаете: "переход: все облегчение 0,3 с" для изображения SVG на Chrome, изображения не появляются
например:
* {
transition: all ease 0.3s
}
Хром не рендерит свг.
Удалите все свойства css для перехода и попробуйте снова
Ответ 16
Вы убедитесь, что добавили стиль изображения, который работает для меня.
style= "width:320; height:240"