Мне нужно изображение SVG, похожее на изображение ниже (архитектурный символ открытой двери), размер которого будет пропорционально изменен, но высота зеленого цвета и ширина красного цвета останутся прежними. Цвета и размеры приведены только для иллюстративных целей.
Я попытался использовать этот код ниже, но не знаю, как сделать, чтобы высота в зеленом цвете и ширина в красном были фиксированными при изменении размера изображения.
Если вы можете помочь большое спасибо за ваше время!
<svg id = "imgsvg" width = "400px" height = "400px" version = "1.0" state='normal'
xmlns = "http://www.w3.org/2000/svg"
xmlns:xlink = "http://www.w3.org/1999/xlink">
<defs>
<!-- The left head -->
<svg class = "head input-source" id = "left"
height = "100%"
width = "100%"
viewBox = "0 0 10 200"
preserveAspectRatio = "xMinYMax"
>
<rect
width = "100%"
height = "100%"
stroke='black'
stroke-width='0'
fill = "#000"
/>
</svg>
<!-- The bottom head -->
<svg class = "head input-source" id = "bottom"
height = "100%"
width='100%'
viewBox = "0 0 200 20"
preserveAspectRatio = "xMinYMax"
>
<rect
width = "100%"
height = "100%"
stroke='gray'
stroke-width='0'
fill = "gray"
/>
</svg>
</defs>
<!-- The Quad -->
<svg class='head input-source' id = "quad"
height = "100%"
width='100%'
viewBox = "0 0 200 200"
preserveAspectRatio = "xMinYmax"
>
<path
d = "M0,1 Q199,0 199,199"
fill = "#ffffff"
fill-opacity = "0"
stroke = "#000000"
stroke-width = "2"
/>
</svg>
<use xlink:href='#left'/>
<use xlink:href='#bottom'/>
</svg>
Я попытался отредактировать ответ в вашем ответе, не стесняйтесь редактировать больше, если хотите, чтобы ваш ответ действительно отвечал на заданный вами вопрос.
я решил свою проблему
Мое решение ниже
<p class = "codepen" data-height = "300" data-default-tab = "html,result" data-slug-hash = "mdKLYZp" data-user = "Zoki-Poki" style = "height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
<span>See the Pen <a href = "https://codepen.io/Zoki-Poki/pen/mdKLYZp">
Untitled</a> by Zoki Poki (<a href = "https://codepen.io/Zoki-Poki">@Zoki-Poki</a>)
on <a href = "https://codepen.io">CodePen</a>.</span>
</p>
<script async src = "https://cpwebassets.codepen.io/assets/embed/ei.js"></script>
Если SVG являются встроенными, вы можете использовать те же длины и объединения в CSS, что и остальная часть HTML-страницы. Здесь у вас есть три одинаковых SVG. Единственная разница в том, что они содержатся в <div>
разных размеров. Вы можете видеть, что оранжевый прямоугольник сохраняет одинаковую «ширину» во всех трех.
.small {
width: 100px;
height: 50px;
margin: 1px;
}
.medium {
width: 200px;
height: 100px;
margin: 1px;
}
.large {
width: 400px;
height: 200px;
margin: 1px;
}
svg {
width: 100%;
height: 100%;
}
rect.r1 {
width: 80%;
height: 20px;
y: calc(100% - 20px);
}
rect.r2 {
width: 20px;
height: 100%;
}
<div class = "large">
<svg xmlns = "http://www.w3.org/2000/svg">
<rect fill = "black" width = "100%" height = "100%"/>
<rect class = "r1" fill = "orange"/>
<rect class = "r2" fill = "orange"/>
</svg>
</div>
<div class = "medium">
<svg xmlns = "http://www.w3.org/2000/svg">
<rect fill = "black" width = "100%" height = "100%"/>
<rect class = "r1" fill = "orange"/>
<rect class = "r2" fill = "orange"/>
</svg>
</div>
<div class = "small">
<svg xmlns = "http://www.w3.org/2000/svg">
<rect fill = "black" width = "100%" height = "100%"/>
<rect class = "r1" fill = "orange"/>
<rect class = "r2" fill = "orange"/>
</svg>
</div>
Красиво объяснил!
Ладно, дружище, в следующий раз слишком поздно :)