我正在編寫一個UI,其中我需要顯示一個圖像,并在頂部有一個與其大小匹配的svg。為了做到這一點,我將這兩個元素包裝在一個容器中,并使它們占據寬度:100%和高度:100%。一切都包含在flexbox列中,因為我需要放置更多的UI元素。 我想讓這個容器調整大小,以適應盡可能多的高度或寬度,同時保持縱橫比固定。
在下面的玩具示例中,我幾乎得到了一個完整的解決方案:
<!DOCTYPE html>
<header>
<link rel="stylesheet" href="style.css">
</header>
<html>
<body>
<div class="column">
<div class="container">
<img src="bitmap.png" alt="my_image">
<svg>
<rect x="0" y="0" width="100%" height="100%"
style="fill:none;stroke-width:6;stroke:rgb(0,0,255)" />
</svg>
</div>
</div>
</body>
</html>
html, body {
height: 100%;
}
body {
padding: 0;
margin: 0;
}
.column {
height: 100%;
width: 50%;
background-color: lightgray;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.container {
position: relative;
max-height: 100%;
}
.container img {
object-fit: contain;
height: 100%;
width: 100%;
}
.container svg {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
}
您可以看到,當受到寬度或高度的限制時,它會適當地調整大小,使svg始終位于圖像的頂部。但是,當您增加尺寸時,圖像會在達到其原始分辨率時停止增長.. 如果在容器中設置屬性flex-grow: 1,圖像也會按照我想要的方式增長,但是svg不會再正確地覆蓋圖像。
這是我在玩具示例中使用的原始720x540圖像,如果你想自己嘗試的話。如果你想解決這個問題,先謝謝你!:)
# # #您可以使用以下CSS來調整容器的大小,以適應盡可能多的可用高度或寬度,同時保持縱橫比不變:
.container {
display: flex;
flex-direction: column;
max-width: 100%;
max-height: 100%;
object-fit: contain;
}
display: flex屬性將使容器成為flex容器,這允許您控制其子容器的布局。flex-direction: column屬性將使容器的子容器從上到下排列成一列。max-width: 100%和max-height: 100%屬性將分別調整容器的大小,以適應盡可能多的可用寬度或高度。object-fit: contain屬性將確保調整容器內的圖像和SVG的大小以適合容器,同時保持它們的縱橫比固定。
<div class="container">
<img src="image.jpg" />
<svg viewBox="0 0 100 100">
<circle cx="50" cy="50" r="25" fill="red" />
</svg>
</div>
這將創建一個包含圖像和SVG的容器。圖像和SVG將調整大小以適合容器,同時保持它們的縱橫比不變。容器將調整大小以適應盡可能多的可用寬度或高度。
上一篇python 表達式縮寫
下一篇如何去除拖(鬼)像?