Странная граница масштабированного SVG в IE10 и 11

Я хочу отобразить список значков SVG. Это работает во всех браузерах, кроме IE 10 и 11. IE добавляет странный невидимый отступ вокруг SVG.

Я поместил значки SVG в такой список:

<ul class = "c-category-list">
  <li class = "c-category-list__item"><a href = "#" class = "c-category-list__link"><img src = "https://image.flaticon.com/icons/svg/912/912316.svg" alt = "" class = "c-category-list__image"></a></li>
  <li class = "c-category-list__item"><a href = "#" class = "c-category-list__link"><img src = "https://image.flaticon.com/icons/svg/912/912316.svg" alt = "" class = "c-category-list__image"></a></li>
  <li class = "c-category-list__item"><a href = "#" class = "c-category-list__link"><img src = "https://image.flaticon.com/icons/svg/912/912316.svg" alt = "" class = "c-category-list__image"></a></li>
  <li class = "c-category-list__item"><a href = "#" class = "c-category-list__link"><img src = "https://image.flaticon.com/icons/svg/912/912316.svg" alt = "" class = "c-category-list__image"></a></li>
  <li class = "c-category-list__item"><a href = "#" class = "c-category-list__link"><img src = "https://image.flaticon.com/icons/svg/912/912316.svg" alt = "" class = "c-category-list__image"></a></li>
  <li class = "c-category-list__item"><a href = "#" class = "c-category-list__link"><img src = "https://image.flaticon.com/icons/svg/912/912316.svg" alt = "" class = "c-category-list__image"></a></li>
  <li class = "c-category-list__item"><a href = "#" class = "c-category-list__link"><img src = "https://image.flaticon.com/icons/svg/912/912316.svg" alt = "" class = "c-category-list__image"></a></li>
</ul>

Мой css (sass) выглядит так:

.c-category-list
  padding: 0;
  margin: 0;
  list-style: none;

  &__item{
    display: inline-block;
  }

  &__image {
    height: 4em;
  }
}

Я сделал код для отладки: https://codepen.io/anon/pen/JZLaae

В других браузерах (Firefox, Chrome и т. д.) Он показывает вывод, как показано ниже:

Странная граница масштабированного SVG в IE10 и 11

Но в IE11 и IE10 все значки имеют отступы друг от друга. Результат выглядит следующим образом:

Странная граница масштабированного SVG в IE10 и 11

попробуйте padding: 0; в &__item

לבני מלכה 21.06.2018 12:09

спасибо, но это не работает

Royw 21.06.2018 12:31

а margin:0 ??

לבני מלכה 21.06.2018 12:32

Нет, я не думаю, что это фактическое поведение полей или отступов, но что-то, что требует больше места. Немного похоже на ошибку IE.

Royw 21.06.2018 12:39

я не вижу места в IE, извините

לבני מלכה 21.06.2018 12:40
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
5
69
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

1) Само изображение имеет больше места между левым и правым. Таким образом, он показывает пространство между изображениями. Попробуйте обрезать изображение и попробуйте еще раз, пространство будет удалено.

2) После обрезки изображений с помощью display: inline-block; между изображениями будет пробел по умолчанию. Предлагаемый способ - использовать с display: flex.

Да, я знаю. Но в IE11 / 10 места намного больше, чем в других браузерах. Думаю, дело не в пространстве на изображении. Я тоже пробовал сгибать.

Royw 21.06.2018 12:31
Ответ принят как подходящий

Используйте display: inline;, кажется, что IE по-другому обрабатывает inline-block.

Вот последний SCSS:

$component: "c-category-list";
.#{$component} {
  padding: 0;
  margin: 0;

  &__item{
    display: inline;
  }

  &__image {
    height: 4em;
    background: red;
  }
}

Результат с скомпилированным SCSS должен выглядеть следующим образом:

.c-category-list {
  padding: 0;
  margin: 0;
}

.c-category-list__item {  
  display: inline;
}

.c-category-list__image {
  height: 4em;
  background: red;
}
<ul class = "c-category-list">
  <li class = "c-category-list__item">
    <a href = "#" class = "c-category-list__link"><img src = "https://image.flaticon.com/icons/svg/912/912316.svg" alt = "" class = "c-category-list__image"></a>
  </li>
  <li class = "c-category-list__item">
    <a href = "#" class = "c-category-list__link"><img src = "https://image.flaticon.com/icons/svg/912/912316.svg" alt = "" class = "c-category-list__image"></a>
  </li>
  <li class = "c-category-list__item">
    <a href = "#" class = "c-category-list__link"><img src = "https://image.flaticon.com/icons/svg/912/912316.svg" alt = "" class = "c-category-list__image"></a>
  </li>
  <li class = "c-category-list__item">
    <a href = "#" class = "c-category-list__link"><img src = "https://image.flaticon.com/icons/svg/912/912316.svg" alt = "" class = "c-category-list__image"></a>
  </li>
  <li class = "c-category-list__item">
    <a href = "#" class = "c-category-list__link"><img src = "https://image.flaticon.com/icons/svg/912/912316.svg" alt = "" class = "c-category-list__image"></a>
  </li>
  <li class = "c-category-list__item">
    <a href = "#" class = "c-category-list__link"><img src = "https://image.flaticon.com/icons/svg/912/912316.svg" alt = "" class = "c-category-list__image"></a>
  </li>
  <li class = "c-category-list__item">
    <a href = "#" class = "c-category-list__link"><img src = "https://image.flaticon.com/icons/svg/912/912316.svg" alt = "" class = "c-category-list__image"></a>
  </li>
</ul>

Вот ссылка на Codepen: https://codepen.io/anon/pen/pKLqWe

Извините, но я все еще вижу больше места вокруг элементов в IE11 / 10. Сравните этот код в Chrome en IE10 / 11 для лучшего примера: codepen.io/anon/pen/wXmYOj

Royw 21.06.2018 12:50

@Royw Я обновился. Что теперь?? Думаю, на этот раз он работает.

UmFraWJ1bCBJc2xhbQ 21.06.2018 13:08

Я опубликовал обходной путь самостоятельно, но это намного лучше. Спасибо!

Royw 21.06.2018 13:11

@Royw Больше обновлений здесь: codepen.io/anon/pen/MXVzGa. Может вам понравится и именно то, что вы хотели.

UmFraWJ1bCBJc2xhbQ 21.06.2018 13:16

Это причуда IE, не уверен, есть ли лучший способ, но мне приходилось решать ее, указав ширину и высоту svg в прошлом.

.c-category-list {
  padding: 0;
  margin: 0;
  list-style: none;
 }

.c-category-list__item {
  display: inline-block;
}

.c-category-list__image {
  width: 4em;
  height: 4em;
}
<ul class = "c-category-list">
  <li class = "c-category-list__item"><a href = "#" class = "c-category-list__link"><img src = "https://image.flaticon.com/icons/svg/912/912316.svg" alt = "" class = "c-category-list__image"></a></li>
  <li class = "c-category-list__item"><a href = "#" class = "c-category-list__link"><img src = "https://image.flaticon.com/icons/svg/912/912316.svg" alt = "" class = "c-category-list__image"></a></li>
  <li class = "c-category-list__item"><a href = "#" class = "c-category-list__link"><img src = "https://image.flaticon.com/icons/svg/912/912316.svg" alt = "" class = "c-category-list__image"></a></li>
  <li class = "c-category-list__item"><a href = "#" class = "c-category-list__link"><img src = "https://image.flaticon.com/icons/svg/912/912316.svg" alt = "" class = "c-category-list__image"></a></li>
  <li class = "c-category-list__item"><a href = "#" class = "c-category-list__link"><img src = "https://image.flaticon.com/icons/svg/912/912316.svg" alt = "" class = "c-category-list__image"></a></li>
  <li class = "c-category-list__item"><a href = "#" class = "c-category-list__link"><img src = "https://image.flaticon.com/icons/svg/912/912316.svg" alt = "" class = "c-category-list__image"></a></li>
  <li class = "c-category-list__item"><a href = "#" class = "c-category-list__link"><img src = "https://image.flaticon.com/icons/svg/912/912316.svg" alt = "" class = "c-category-list__image"></a></li>
</ul>

Хорошо, похоже, что это ошибка в IE или что-то в этом роде, но пока я нашел обходной путь. Вместо того, чтобы напрямую изменять размер SVG, я установил фиксированную высоту родительского элемента и дал SVG 100% высоту. Кажется, это работает.

.image-wrapper {
  display: inline-block;
  background: red;
  margin: 0;
  height: 4em;
}

.image {
  height: 100%;
}

Кодовое отверстие: https://codepen.io/anon/pen/RJMqLM

Другие вопросы по теме