Странное различие между рендерингом HTML и SVG в Safari - PullRequest
2 голосов
/ 26 июля 2011

Этот вопрос немного конкретен, и я надеюсь, что кто-то здесь сможет пролить свет на потенциальное решение для меня.

Все следующие пункты важны:

  • Я пишу некоторые HTML-страницы, которые будут читаться на стороннем портативном устройстве.

  • Чтобы соответствовать требованиям этого устройства, каждое слово должно быть в отдельном интервале, это для будущей функции устройства, в которую мне не разрешено входить, но оно должно быть отформатировано следующим образом. .

  • Этот HTML-код конвертируется из SVG, SVG создан из документов Adobe Illustrator.

  • Единственное место, где я могу контролировать создание HTML, - это преобразование из SVG в HTML.

Моя проблема в том, что в SVG текст разбивается на «текстовые» узлы и узлы tspan. Посмотрите на этот простой SVG, обратите внимание, как я меняю координату Y в первом tspan.

<text><tspan y="50">Hello</tspan><tspan> World</tspan></text>

Когда это отображается в браузере, основанном на webkit, например safari, предложение «Hello World» отображается со словом «World» рядом со словом «Hello».

В моем преобразованном примере HTML:

<div><span style="position:absolute;top:50px;">Hello</span><span> World</span></div>

«Привет» отображается со смещением y на 50, однако «Мир» отображается в верхнем левом углу страницы.

Это расстраивает, так как у меня нет координат того, где должен быть размещен промежуток "Мир" в SVG (поскольку Illustrator не нужен этот координаты для правильной визуализации). Кроме того, в SVG может быть один или несколько tspans с измененными позициями, которые не позволят мне применить стиль к div.

Короче говоря, кто-нибудь знает, есть ли атрибут, который я могу установить для размещения второго диапазона сразу после первого?

Спасибо

Ответы [ 2 ]

1 голос
/ 26 июля 2011

Вы можете использовать div вместо span

<div style="position:absolute;top=50px;"><span>Hello</span><span> World</span></div>

Это позволило бы объединить текстовые блоки и расположить их относительно друг друга, но вы все равно могли бы иметь интервал для каждого отдельного слова

0 голосов
/ 26 июля 2011

Я понял это после того, как попробовал кучу разных вещей.

Это на самом деле очень просто, однако я не понимал, что пролеты могут быть вложенными, поэтому я собираюсь позволить себе.

<div><span style="position:absolute;top:50px;"><span>Hello</span><span> World</span></span></div>

Хитрость заключается в том, чтобы обернуть все слова, которые должны быть сгруппированы в промежутке.Надеюсь, это поможет любому, кто застрял в подобной проблеме.

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