Элемент SVG имеет произвольную высоту - PullRequest
8 голосов
/ 02 января 2012

Я действительно пытался изучить SVG. Но браузеры, похоже, попали в нужное русло.

Взять следующий HTML:

<html>
  <head></head>
  <body>
    <svg xmlns="http://www.w3.org/2000/svg" xlink="http://www.w3.org/1999/xlink">
      <rect height="100" width="100" style="stroke:#006600; fill: #00cc00"/>
    </svg>
    <p>Hello? Hellooooooooooooo?</p>
  </body>
</html>

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

Firefox (Firebug) не дает высоту ни svg, ни rect элементов. Он просто слабак и говорит «авто».

Опера говорит, что svg имеет высоту 150px и говорит 'auto' для rect.

Хром укомплектовывает и дает высоты для обоих. 102px для rect (очевидно, включая удар) и 428px для svg.

Я ожидаю, что элемент svg будет «тонким» контейнером (т.е. ничего не добавит к размерам его содержимого) и, следовательно, будет иметь высоту 102px.

Кто-нибудь знает, каким должно быть правильное поведение и как мне это исправить?

1 Ответ

14 голосов
/ 02 января 2012

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

Попробуйте определить ширину и высоту:

<svg xmlns="http://www.w3.org/2000/svg" xlink="http://www.w3.org/1999/xlink" width="102px" height="102px">
  <rect height="100" width="100" style="stroke:#006600; fill: #00cc00"/>
</svg>

В качестве альтернативы определите viewBox:

<svg xmlns="http://www.w3.org/2000/svg" xlink="http://www.w3.org/1999/xlink" viewBox="0 0 102 102">
  <rect height="100" width="100" style="stroke:#006600; fill: #00cc00"/>
</svg>

или оба:

<svg xmlns="http://www.w3.org/2000/svg" xlink="http://www.w3.org/1999/xlink" viewBox="-50 -50 52 52" width="102px" height="102px">
  <rect height="100" width="100" style="stroke:#006600; fill: #00cc00"/>
</svg>

Вот несколько примеров в действии .

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