Safari не учитывает масштабирование, примененное к стороннему объекту - PullRequest
0 голосов
/ 16 января 2019

Ниже приведено странное и явно ошибочное поведение Safari (протестировано в версиях 11 и 12). <foreignObject>, содержащий HTML, при масштабировании по-прежнему отображается в своем первоначальном размере, даже если его локальные пользовательские координаты пространства масштабируются относительно экрана. Содержимое HTML будет заметно переполнять родительский элемент <svg>, даже при явных правилах CSS.

Другие ответы здесь указывают на то, что ширина и высота должны быть заданы явно (я тестировал и в процентах, и в абсолютных единицах), а пространство имен должно быть установлено (I протестировано с установкой его на сам тег * <foreignObject> и на одного непосредственного ребенка), но пока ничего не помогло.

Странно то, что инструменты разработчика отображают прямоугольник маркировки (наложение в окне браузера) в своем предполагаемом масштабированном размере, в то время как сообщенные числа для размера являются немасштабированными.

Вот предполагаемая установка:

svg, foreignObject {
  overflow: hidden;
}
rect {
  fill:yellow;
}
#content {
  position: relative;
  width: 100%;
  height: 100%;
  background: red;
  border-radius: 50%;
}
<svg width="200px" height="200px" viewBox="0 0 400 400">
  <rect width="100%" height="100%" />
  <foreignObject width="400" height="400">
    <div id="content" xmlns="http://www.w3.org/1999/xhtml"></div>
  </foreignObject>
</svg>

Скриншот Safari:

enter image description here

Использование атрибута преобразования (также для родительского элемента <g>) вместо неявного масштабирования через viewBox не имеет значения. Также я поиграл со всеми комбинациями абсолютных и относительных размеров

У кого-нибудь есть идеи, как обойти эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...