Кажется, это глупый вопрос и, возможно, обман, но на какое-то время я не нашел подходящего решения, поэтому, наконец, осмелюсь спросить.
Я хочу разместить элемент <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>