Ich versuche, eine große Svg in einem Container Div zu zentrieren, während die Größe der Svg und das Seitenverhältnis zu maximieren.Center große Svg in Container
Aus irgendeinem Grund wird die Svg korrekt angezeigt, aber die Breite und Höhe Attribute sind falsch, als ob die Svg in die gesamte Eltern erweitert.
Wie kann ich es so machen, dass die SVG die richtige Größe hat?
Bitte, das sollte nur mit CSS gelöst werden, kein Javascript.
Beachten Sie auch, dass dies funktioniert, wenn ich die SVG durch ein großes Bild ersetzen.
var info = document.getElementById('info');
var svg = document.getElementById('svg');
var box = svg.getBoundingClientRect();
info.textContent = 'the ratio is ' + (box.width/box.height) + ' instead of 2.5! The yellow square is not in the viewBox, so why does it show up?';
.container {
position: absolute;
top: 40px;
left: 40px;
right: 40px;
bottom: 40px;
}
.svg {
position: absolute;
max-height: 100%;
max-width: 100%;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background-color: gray;
}
<div class="container">
<svg id="svg" class="svg" width="1000px" height="500px" viewBox="0 0 10 5">
<rect width="10" height="5" fill="black" />
<rect x="-2" y="2" width="1" height="1" fill="yellow" />
</svg>
</div>
<div id="info"/>
https://css-tricks.com/scale-svg/ – CBroe
Ich glaube, Sie den gleichen Effekt wie 'Hintergrund-Größe erreichen wollen: cover'. Wenn Sie keine älteren Browser und nur die immergrünen Browser unterstützen möchten, können Sie ['object-fit: cover'] (https://developer.mozilla.org/en-US/docs/Web/CSS/Objekt-Fit). – Terry
@Terry: Nein, ich versuche Objekt-Fit zu tun: enthalten. Nicht sicher, wie das Zeug funktionieren soll.Sobald ich Max-Breite oder Max-Höhe entferne, wird die SVG einfach zu groß –