Ваш CSS для определения размера делает слишком много и не достаточно одновременно.Вы говорите, что хотите иметь max-width
, но не даете ширину.Вы даете только auto
рост в дополнение к max-height
.Любое изображение размером от 0px до 0px может выполнить эти условия.
Что вы хотите сделать, если SVG очень широкий, но не очень высокий?Мне кажется, вы хотите, чтобы он имел полную ширину 100%, но высоту уменьшать.Что бы вы хотели случиться, если бы SVG был настолько высоким, что он превысил бы ограничение 55vh
, если бы растянулся на всю ширину?Мне кажется, вы хотите, чтобы он оставался меньше и двигался влево.
Для этого ваше правило max-width
является излишним, а правило width
отсутствует.
Вы можетедостичь этого легко (с возможным исключением более старых версий IE ).- В этом примере я устанавливаю SVG в качестве uri данных для источника HTML <img>
.Таким образом, он работает так же в отношении CSS и размеров, как если бы это был внешний файл.
.myImage{
width: 100%;
max-height: 55vh;
}
<img class="myImage" src="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 250 75' preserveAspectRatio='xMinYMin meet'><rect width='250' height='75' fill='green'/></svg>">
Здесь указываются viewBox
и preserveAspectRatio
: они применяются независимо от того, встроен ли SVG или включен из внешнего файла.Вы определяете область для тега <img>
, и прямоугольник viewBox помещается внутрь, следуя правилам соотношения сторон.
Короче говоря, если такое поведение по размеру удовлетворяет вашим потребностям, продолжайте.и включайте внешние файлы SVG через теги <img>
.