我有一个ul
元素和 5 个孩子<li>
。
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
有<ul>
一个display: flex
属性。我尝试使用 calc 属性<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
而不是 px 中设置边框宽度,但它给出了不同的结果。
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
这里的单位和弹性盒。
那么这个错误的原因是什么?
编辑:
从提供的答案和评论中,我看到还有其他更合适的方法来实现我想要做的事情。我很欣赏这些答案,但这些不是我问题的答案。由于calc
在这种情况下显示错误,因此当我尝试calc
在其他情况下(不仅仅是边框)使用和视口单位时,很可能会导致更多问题。所以我需要知道原因并“ calc
”修复。