我有一个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”,并且正在考虑试用盒子大小。 –