Ответ 1
Убедитесь, что ваш SVG имеет указанные width
и height
. Если вы создаете его из Illustrator, убедитесь, что поле "Отзывчивое" не отмечено, поскольку этот параметр удаляет ширину и высоту.
У меня есть набор div с фоновым изображением:
<div>Play Video</div>
со следующим CSS:
div {
background-image: url('icon.png');
background-image: url('icon.svg'), none;
background-size: 40px 40px;
background-repeat: no-repeat;
background-position: 90% 50%;
padding: 20px;
width: 150px;
}
Размер фона соблюден в Firefox, Safari и Chrome. В IE8 SVG заменяется файлом PNG. Однако в IE9 и IE10 файл SVG резко уменьшается. Проблема, похоже, связана с шириной и высотой div. Если я добавлю высоту 150 пикселей, SVG будет отображаться правильно. Если я сделаю это меньше (то есть 100px), графическое изображение начнет уменьшаться.
Кто-нибудь нашел способ исправить эту проблему в Проводнике? Есть ли способ сказать IE использовать значение фонового размера независимо от ширины и высоты div?
Убедитесь, что ваш SVG имеет указанные width
и height
. Если вы создаете его из Illustrator, убедитесь, что поле "Отзывчивое" не отмечено, поскольку этот параметр удаляет ширину и высоту.
Добавление ширины и высоты в SVG, поскольку mbxtr сказал, что почти сработало для меня. Мне нужно было добавить preserveAspectRatio="none slice"
, чтобы он работал оперативно в IE.
Ну, похоже, что есть решение. Сюрприз Сюрприз. Это IE в конце концов. В результате я использовал следующий код:
div {
padding: 20px;
width: 150px;
position: relative;
}
div:after {
position: absolute;
content: "";
width: 40px;
height: 40px;
top: 50%;
right: 30px;
margin-top: -20px;
background-image: url('icon.png');
background-image: url('icon.svg'), none;
}
Мне понравилась более чистая версия, но этот хак работает во всех современных браузерах, включая IE8, 9 и 10 (возможно, 11, но я не тестировал).
Для меня эти 3 исправления помогли:
У меня была эта проблема, и я обнаружил, что либо удаляю высоту и ширину внутри кода для svg, но сохранение viewBox может решить проблему.
Я рекомендую использовать сайт компилятора, например: https://jakearchibald.github.io/svgomg/ и установка опции "предпочитает viewBox по высоте и ширине"
ТАКЖЕ, если ничего из этого не работает, в Illustrator попробуйте применить квадратный фон вокруг изображения svg, но оставив достаточное дополнение по краям.
И импортируйте svg в свою таблицу стилей → data uri:... Пример:
background-image: data-uri ('image/svg + xml; charset = UTF-8', 'где/your/svg/is/found');
У нас была аналогичная проблема с фоновыми изображениями SVG, которые не были полным сайтом содержащего элемента (например, увеличительным стеклом слева от входа для поиска).
Мы создали SVG в Illustrator CC, но пропустили их через оптимизатора SVG Peter Collingridge, чтобы вытащить все ненужные трещины. http://petercollingridge.appspot.com/svg-optimiser
Я попробовал решение @mbxtr
Убедитесь, что ваш SVG имеет ширину и высоту. Если вы создаете его из Illustrator, убедитесь, что поле "Отзывчивое" не отмечено, поскольку этот параметр удаляет ширину и высоту.
Это все еще не работало для меня в окнах Chrome и IE. Я экспортировал значок шрифта, поэтому, если у вас есть шрифт, убедитесь, что вы экспортируете его как:
Я также снял флажок "minify" на всякий случай...
drips.style.top = -dripsTop + "px";
var browser = window.navigator.userAgent;
if (browser.indexOf("Trident") > 0) {
$(".flow_space").css({"background":"url(../img/space2-ie.svg) no-repeat", "background-size":"100%"});
}