Почему этот код SVG не работает

<!DOCTYPE HTML>
<HTML xmlns="http://www.w3.org/1999/xhtml" >
<HEAD>
<TITLE>Show Svg</TITLE>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8" >
<STYLE>
#viewbox {
    border: 2px solid black;
    }
</STYLE>    

</HEAD>
<BODY>
<SVG id="viewbox"  height="400px" width="400px" viewBox="-20 -20 40 40"
     xmlns="http://www.w3.org/2000/svg"
    >
<g id="pic">
<line x="20px" y="0px"  x2="-20px" y2="0px"  
    style="stroke-width:1;stroke:rgb(0,0,0);" 
    />
<line x="0"   y="40" x2="0"  y2="-20" 
    style="stroke-width:1;stroke:rgb(0,0,0);"  
    />
<rect x="-10" y="-10" width="20" height="20"
    style="stroke-width:1;stroke:rgb(255,0,0)"
    /> 
</g>
</SVG>
</BODY>
</HTML>

Отладчик показывает строки, оканчивающиеся на x = 0, и окно просмотра pic как 30px x 30px, которое усекает линии до краев красного поля.

Так что здесь происходит?

1 ответ

Строки идут от x1, y1 до x2, y2 не от x, y до x2, y2. Если вы исправите атрибуты, это должно работать.

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

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