如果<li>
都是50%
,为什么他们不能并排?
Demo关于jsfiddle。
<ul>
<li>left</li>
<li>right</li>
</ul>
ul {
padding: 0;
}
li {
list-style: none;
display: inline-block;
width: 50%;
font-size: 12px;
color: gray;
background-color: rgb(216, 216, 216);
padding: 3px;
text-align: center;
border: 1px solid rgba(179, 179, 179, 0.83);
}
答案 0 :(得分:5)
因为默认情况下,margin
padding
和border
计算在元素之外而不是在内部。因此,padding
的{{1}} + 3px
border
将被1px
添加到所有方面50%
。
此外,我不确定您是否正在重置浏览器默认margin
和padding
元素,如果您不是这样做的话。你可以使用一些反对的通用选择器,因为它可以通过几位来达到性能,比如
* {
margin: 0;
padding: 0;
}
或者,如果您想以宽松的方式重置,请使用CSS Reset Stylesheet
因此,为了计算内部的padding
和border
,您必须使用值为box-sizing
的{{1}}属性。
此外,您正在使用border-box
,只会inline-block
只留下margin
/空白,因此请将所有4px
放在一行中。或者您可以做的是,您可以将float
元素li
添加到left
,这样您就不必在源文档的一行中创建所有li
。
如果您要使用clear
解决方案,请确保float
您的浮动元素。
答案 1 :(得分:3)
第一个问题:使用display:inline-block
属性,有white-space
个元素。这会使li
元素100%+ white-space
超过100%,因此无法在同一行上使用float:left
来解决您的问题
第二个问题:您提供3px边框,使li
元素宽度超过50%,您可以使用属性box-sizing:border-box;
,这会使您的边框位于{ {1}}元素
CSS:
li
答案 2 :(得分:1)
这是因为<li>
元素有填充。您必须删除填充或减小宽度。
例如,
width: 48%;
padding: 2%
答案 3 :(得分:0)
这是因为填充。洗涤元素为50%+ 3px宽。
答案 4 :(得分:0)
看起来这是一个简单的问题
看起来你想要填充
每<li>
3px你有2,那么你需要6px额外
并且你有1px的扩展(每个li有2个边框),这意味着你有4px的附加功能。
这意味着你需要额外10 px
您只需更改此行
即可width: calc(50% - 10px);
答案 5 :(得分:0)
正如其他人所说display: inline-block;
在块之间增加了空间。
ul {
padding: 0;
font-size: 0; /*This is a hack for inline-block to not add space between blocks*/
}
以上代码是使<li>
元素之间的“空间”变为零的黑客攻击。来源:CSS技巧 - https://css-tricks.com/fighting-the-space-between-inline-block-elements/