Кажется, это глупый вопрос и, возможно, обман, но на какое-то время я не нашел подходящего решения, поэтому, наконец, осмелюсь спросить.
Я хочу разместить элемент <svg>
внутри html-документа и выполнить следующие требования:
- Изображение помещается как элемент
<svg>
html5, а не внешний svg файл. (На самом деле, я хочу динамически генерировать его с помощью D3.js.) - Изображение помещается в центр экрана, как по вертикали, так и по горизонтали.
- Фактический размер изображения не должен превышать предопределенное значение (например,
15cm × 15cm
). - Если текущая ширина экрана или высота меньше, чем
15cm
, изображение следует масштабировать (сохраняя пропорции) таким образом, чтобы оно соответствовало экрану. Никакие части изображения не должны быть обрезаны. Изображение должно быть размещено в центре.
В основном те же требования, что описаны в в этой статье. В нем говорится, что я должен использовать preserveAspectRatio="xMidYMid"
, но не дает никакого примера, как это сделать и как он соответствует другим трюкам, описанным в статье. В этой статье предлагается preserveAspectRatio="xMidYMid meet"
, но снова я не смог воспроизвести приведенные здесь примеры для удовлетворения всех моих требований.
Мой текущий код похож на этот, но он не подходит по высоте и не центрируется по вертикали.
.svg-container {
height:100%;
width:100%;
max-height:15cm;
max-width:15cm;
margin: 0 auto;
}
<div class="svg-container">
<svg id="picture" preserveAspectRatio="xMidYMid meet" viewBox="0 0 100 100">
<circle cx=50 cy=50 r=50></circle>
</svg>
</div>