我一直在困惑這一點的HTML/CSS幾個小時,我無法弄清楚我要出錯的地方。它是更復雜佈局的一部分,但我想我已經隔離了這個問題。即使父母設置了高度,元素也不會響應設置的高度
這是我的HTML:
<table>
<tr>
<td>
<div class = "outer">
<div class = "middle">
<div class = "inner">
<svg viewbox = "0, 0, 250, 250">
</svg>
</div>
</div>
</div>
</td>
</tr>
</table>
...這是我的CSS:
* {
margin: 0px;
padding: 0px;
}
body,html {
height: 100%;
font-family: sans-serif;
font-size: 12px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
-webkit-text-size-adjust: none;
}
table {
padding: 0;
margin: 0;
height: 100%;
width: 100%;
min-width: 600px;
/*table-layout: fixed;*/
border-collapse: collapse;
border-spacing: 0;
}
tr {
background-color: #ffffff;
height: 100%;
height: calc(100% - 190px);
}
td {
height: 100%;
background-color: red;
margin: 0;
}
.outer {
width: 94%;
width: calc(100% - 20px);
height: 94%;
height: calc(100% - 20px);
background-color: blue;
display: block;
margin: 3%;
margin: calc(10px + 0%);
overflow-y: scroll;
}
.middle {
display: white;
background-color: lightblue;
padding: 0px;
margin: 0px;
width: 100%;
height: 100%;
height: calc(100% - 10px - 2.5rem);
overflow-y: scroll;
}
.inner {
background-color: pink;
display: block;
width: 40%;
height: 100%;
overflow: hidden;
}
svg {
height: auto;
max-height: 100%;
width: auto;
max-width: 100%;
background-color: salmon;
}
如果去掉SVG,的div和表格的行爲,因爲我想 - 在窗口調整大小,表格不超過頁面的大小,並且div都相應地縮放。
當您包含svg時,我期望的(以及我想要的)是讓svg適合.inner div,但不要超過它或以任何方式更改佈局流。 這不是發生了什麼事。
我已經在Safari和Firefox中檢查了這一點,並且都給了我意想不到的結果。在Firefox中,如果窗口縮小超過某個點,則svg高度會展開,整個窗口將滾動。
在Safari中,svg高度隨着寬度的變化而變化,但寬度並不隨高度變化而變大。
這似乎是一個非常簡單的事情,我真的不知道我要去哪裏錯了。我相信這是某種明顯的菜鳥錯誤。我已經嘗試了svg上的每個最大/最小高度/寬度的組合。
感謝您的幫助!
編輯:如果我擺脫表(刪除表,td,tr)一切都按預期工作。同樣,如果我擺脫了svg並保持桌子,一切都按預期工作。
_「如果我擺脫了表[...]」_ - 你有實際的表格數據在這裏顯示?如果不是的話,你應該擺脫桌子出於這個原因已經... – CBroe
這是更大的佈局的一部分確實需要表格,因爲我需要整個內容被拆分成垂直居中內容的行,並佔用100%的屏幕高度。我試過用div做這個,遇到了很多問題。 – Martha