Всякий раз, когда для границы элемента используется нецелое значение пикселя, браузер просто обрезает значение, чтобы стать целым числом. Почему это так?
Я знаю, что граница фактически не займет часть пикселя, но эти типы значений иногда используются в сочетании с другими, чтобы сформировать полные пиксели. Например, левая и правая границы с шириной 1.6px должны приводить к увеличению общей ширины элемента на 3px. Это работает, потому что полное значение сохраняется в памяти и используется для расчетов.
Однако, похоже, это не так, когда рендеринг границы, даже если ширина, заполнение и маржа все ведут себя правильно.
var div = document.getElementsByTagName('div'),
len = div.length,
style;
for (var i = 0; i < len; i++) {
style = getComputedStyle(div[i]);
div[i].innerHTML = div[i].className + ': ' + style.getPropertyValue(div[i].className) + '<br>height: ' + style.getPropertyValue('height');
}
div {
width: 300px;
border: 1px solid black;
padding: 50px 0;
text-align: center;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
div.width {
width: 300.6px;
}
div.padding-top {
padding-top: 50.6px;
}
div.margin-top {
margin-top: 0.6px;
}
div.border-top-width {
border-top-width: 1.6px;
}
<div class="width"></div>
<div class="padding-top"></div>
<div class="margin-top"></div>
<div class="border-top-width"></div>