我有一個ul
元素和5個孩子<li>
。CSS計算不準確
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
的<ul>
有display: flex
屬性。 我嘗試使用鈣財產上<li>
均勻大小我的列表項:
calc:(100%/5);
這給了期望的結果和均勻大小的5 <li>
塊
現在我添加邊框,所有的右側,但最後一個孩子<li>
元素。所以我從<ul>
的總寬度減少了所有邊界的總寬度。
calc:((100% - 8px)/5);
這也可以正常工作並且將<li>
塊與邊界大小均勻一致。
ul {
width: 600px;
height: 300px;
margin: 0;
padding: 0;
display: flex;
background: red;
}
li {
list-style: none;
display: block;
width: calc((100% - 0.8px)/5);
height: 100%;
border-right: 0.2px solid black;
background: blue;
}
li:last-child {
border-right: none;
}
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
現在我試圖設置在視口中單元vw
代替像素的邊框寬度,但它給出了一個不同的結果。
ul {
width: 600px;
height: 300px;
margin: 0;
padding: 0;
display: flex;
background: red;
}
li {
list-style: none;
display: block;
width: calc((100% - 0.8vw)/5);
height: 100%;
border-right: 0.2vw solid black;
background: blue;
}
li:last-child {
border-right: none;
}
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
正如你可以從上面的代碼段看到,有空間向右一點點。隨着更寬的視口,這會變得更大(嘗試查看片段的整個頁面)。所以我認爲問題在於這裏的vw
單位和flexbox。
那麼這個錯誤的原因是什麼?
編輯:
從提供的答案和評論,我已經看到了還有其他更恰當的approches達到什麼我要怎樣做。我讚賞這些答案,但這些不是我的問題的答案。由於calc
在這種情況下顯示錯誤,因此當我嘗試在其他情況下(而不僅僅是邊框)嘗試使用calc
和視口單元時,很可能會導致更多問題。所以我需要知道原因和「calc
」修復。
我不知道爲什麼會發生這種情況,但是如果你不知道,可以使用'box-sizing:border-box;'並且邊框寬度不會影響元素的外部寬度。 –
在'calc'中使用'%'和'vw'有點奇怪,因爲'%'和'vw'都是不同基地的百分比。你沒有說'ul'的父項。假設'ul'父項的寬度是300px,並且視口寬度是'vw'是400px,所以'0.8vw'比預期的要多,並且存在空白區域。 – ata
@MichaelCoker是的,我看到了calc替代帖子「http://stackoverflow.com/questions/16034397/css-calc-alternative?rq=1」,並且正在考慮試用盒子大小。 –