It basically have a small html-file which contains this html:
<svg viewBox="0 0 400 15">
<circle cx="200" cy="0" r="5" fill="black"/>
<line x1="0" x2="400" y1="0" y2="0" stroke="black">
</svg>
<style>
html, body {
margin: 0;
}
svg {
background: gray;
width: 100vw;
height: 100vh;
}
</style>
Yet the output looks like this:

I would have expected the line and the center of the circle to stick to the top. As the y-coordinates are 0 in a coordinate space that starts at 0 as defined in the viewBox=0 0 400 15.
What am I missing here?
html, body {
margin: 0;
}
svg {
background: gray;
width: 100vw;
height: 100vh;
}
<svg viewBox="0 0 400 15">
<circle cx="200" cy="0" r="5" fill="black"/>
<line x1="0" x2="400" y1="0" y2="0" stroke="black">
</svg>
The aspect ratio of the
viewBox(the area of the SVG canvas to be rendered) and the viewport (the area it is rendered into, defined by CSSwidthandheight) do not match. In this case, the attributepreserveAspectRatiodecides where the canvas is positioned and at what size.The default value, if the attribute is missing, is
"xMidYMid meet", which means: place it into the middle at maximum size that fits. To move it to the top of the viewport, setpreserveAspectRatio="xMidYMin meet".