Размер фона с SVG хлюпнул в IE9-10
у меня есть набор 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?
8 ответов:
убедитесь, что ваш SVG имеет
widthиheightуказано. Если вы создаете его из Illustrator, убедитесь, что флажок" отзывчивый " снят, поскольку этот параметр удаляет ширину и высоту.
добавление ширины и высоты к SVG, как сказал mbxtr, почти сработало для меня. Мне нужно было добавить
preserveAspectRatio="none slice"а также, чтобы заставить его работать ответственно в 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 исправления помогли:
- Если возможно, установите фоновое положение в "центр"
- для фонового размера установите оба значения, "100% auto" не будет делать трюк, поэтому используйте "100% 100%"
- Если это все еще не помогает изменить последний атрибут "viewBox" самого SVG и сделать его на один пиксель шире и выше, чем ширина и высота SVG. Это немного сжимает SVG, но останавливает IE от его отключения - и меньший размер не будет замечен вообще.
У меня была эта проблема и я нашел, что либо удалить высота и ширина внутри кода для svg, но сохраняя viewBox может решить эту проблему.
Я рекомендую использовать сайт компилятора, например:https://jakearchibald.github.io/svgomg/ и установка опции в "предпочитаю viewBox по высоте и ширине"
и если ничего из этого не работает, в Illustrator попробуйте применить квадратный фон вокруг изображение svg, но оставляя достаточно отступов по краям.
и импортировать svg в вашей таблице стилей с помощью -- > Data uri:... пример:
фон-изображения: данные-Ури('изображения/СВГ+в формате XML;кодировка=кодировка UTF-8',' где/ваш/СВГ/находится/находится');
У нас была аналогичная проблема с фоновыми изображениями SVG, которые не были полным сайтом содержащего элемента (например, увеличительное стекло в левой части ввода поиска).
мы создали SVG в Illustrator CC, но запустили их через SVG-оптимизатор Питера Коллинриджа, чтобы вытащить все ненужные cruft сделал трюк. http://petercollingridge.appspot.com/svg-optimiser
Я попробовал решение @mbxtr
убедитесь, что ваш SVG имеет заданную ширину и высоту. Если вы создаете его из Illustrator, убедитесь, что флажок" отзывчивый " снят, поскольку этот параметр удаляет ширину и высоту.
Это все еще не работает для меня на windows Chrome и IE. Я экспортировал значок шрифта, поэтому, если у вас есть шрифт, убедитесь, что вы экспортируете его как:
- "шрифт: преобразование в контуры"
- и "отзывчивый" является ложным
Я также снял флажок "minify" на всякий случай...
1. javascript
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%"}); }
- svg (оригинальная высота=1050) добавить непосредственно к себе svg файл preserveAspectRatio=" нет "высота= "2100"
Comments