我有一个ul元素和5个孩子< li>.
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
< ul>有一个显示:flex属性.
我尝试在< li>上使用calc属性.均匀调整列表项的大小:
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单元和flexbox.
So what is the cause of this error?
编辑:
从提供的答案和评论中,我已经看到有其他更合适的方法来实现我想要做的事情.我很欣赏这些答案,但那些不是我的问题的答案.由于calc在这种情况下显示错误,因此当我尝试在其他情况下使用calc和视口单元(而不仅仅是边框)时,很可能会导致更多问题.所以我需要知道原因和“计算”修复.
最佳答案 您不需要执行计算来为您的li添加内部内容.如果你给box-sizing:border-box;道具,边框和填充物不会使容器增长.
ul {
width: 600px;
height: 300px;
margin: 0;
padding: 0;
display: flex;
background: red;
}
li {
list-style: none;
display: block;
width: calc(100% / 5);
height: 100%;
border-right: 2px solid black;
background: blue;
box-sizing: border-box;
}
li:last-child {
border-right: none;
}
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>