Answers:
如果是百分比宽度,那么可以,它是受尊重的。正如Martin所指出的,当您达到小数像素时,事情就会崩溃,但是如果百分比值产生整数像素值(例如,示例中200px的50.5%),您将获得明智的预期行为。
编辑:我已经更新了示例,以显示小数像素发生了什么(在Chrome中,值被截断了,所以50、50.5和50.6都显示相同的宽度)。
尽管小数像素可能会在单个元素上四舍五入(如@SkillDrick演示得很好),但重要的是要知道小数像素在实际的box模型中实际上受到尊重。
当元素彼此相邻(或位于顶部)堆叠时,最好地看出这一点。换句话说,如果我并排放置400个0.5像素div,它们的宽度将与单个200像素div相同。如果它们实际上全部舍入为1px(就像查看单个元素所暗示的那样),我们希望200px div长一半。
在以下可运行的代码片段中可以看出:
body {
color: white;
font-family: sans-serif;
font-weight: bold;
background-color: #334;
}
.div_house div {
height: 10px;
background-color: orange;
display: inline-block;
}
div#small_divs div {
width: 0.5px;
}
div#large_div div {
width: 200px;
}
<div class="div_house" id="small_divs">
<p>0.5px div x 400</p>
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
</div>
<br>
<div class="div_house" id="large_div">
<p>200px div x 1</p>
<div></div>
</div>
:nth-child(even)
或将像素的一半设置为蓝色,:nth-child(odd)
则会注意到整个物体是橙色或整个物体是蓝色-不是蓝色和橙色的混合物(这会是模糊的紫色)。
宽度将舍入为整数的像素。
我不知道是否每个浏览器都会以同样的方式四舍五入。四舍五入亚像素百分比时,它们似乎都有不同的策略。如果您对不同浏览器中的亚像素舍入的细节感兴趣,可以在ElastiCSS上找到一篇很棒的文章。
编辑:出于好奇,我在某些浏览器中测试了@Skilldrick的演示。当使用小数像素值(而不是百分比,它们按照我链接的文章中的建议工作)时,IE9p7和FF4b7似乎四舍五入到最接近的像素,而Opera 11b,Chrome 9.0.587.0和Safari 5.0.3则将小数位截短。我并不是希望他们毕竟有共同点...
它们似乎将这些值四舍五入为最接近的整数。但Iam发现Chrome,Safari和Firefox不一致。
例如,如果33.3%转换为420.945px
chrome和firexfox将其显示为421px。Safari将其显示为420px。
似乎chrome和firefox遵循地板和ceil逻辑,而safari没有。此页面似乎在讨论相同的问题
元素必须绘制到整数个像素,并且在涵盖其他答案时,确实要遵守百分比。
一个重要的注意事项是,在这种情况下,像素是css像素,而不是屏幕像素,因此具有50.7499%子级的200px容器将四舍五入为101px css像素,然后在视网膜屏幕上渲染为202px,而不是 400 *。 507499〜= 203px。
屏幕密度在此计算中被忽略,并且无法将元素绘制为特定的视网膜亚像素大小。即使实际元素的大小可能小于Sands Gifford所显示的,即使元素的实际大小可能小于1 css像素,也不能以小于1 css的像素大小渲染元素的背景或边框。
[*]您可以使用一些技术,例如0.5偏移框阴影等,但是实际的框模型属性将绘制到完整的CSS像素。