Субпиксельное позиционирование сложно.Единица cm
не отображается на целое число пикселей (определяется как 1cm = 96px/2.54
).
В Chrome:
> getComputedStyle(document.querySelector('#shipBoard')).width
"755.891px"
> getComputedStyle(document.querySelector('#ship')).width
"151.172px"
В Firefox:
> getComputedStyle(document.querySelector('#shipBoard')).width
"755.9px"
> getComputedStyle(document.querySelector('#ship')).width
"151.183px"
Значения в макете CSS часто конвертируются из двойных в плавающие и обратно или округляются до нескольких десятичных знаков.Это расположение хрупкое, потому что оно зависит от 5 * width (ship) ≤ width (shipBoard).Поплавки предназначены для упаковки при необходимости.Определенные длины в CSS, особенно границы, иногда привязываются к целому числу пикселей независимо от уровня масштабирования.
Flexbox или сетка были бы хорошим выбором вместо плавающих элементов, но изменяя свойства ширины на 151px
и 755px
в вашем CSS исправляет это.
Кроме того, не используйте один и тот же id=
для нескольких элементов, это недопустимо.