我一直在研究Chrome上的网页,发现它在Firefox中看起来不一样。我简化了代码以显示问题。似乎最后一个未在Firefox中显示,而在Chrome中可见。
这是我的html文件。
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="style.css">
<div id=shipBoard align="right" style="overflow: hidden">
<div id="ship" style="float: left;">
<img src="carrier.jpg" style="width:100px;height:100px;">
</div>
<div id="ship" style="float: left;">
<img src="destroyer.jpg" style="width:100px;height:100px;">
</div>
<div id="ship" style="float: left;">
<img src="test.jpg" style="width:100px;height:100px;">
</div>
<div id="ship" style="float: left;">
<img src="battleship.jpg" style="width:100px;height:100px;">
</div>
<div id="ship" style="float: left;">
<img src="sub.jpg" style="width:100px;height:100px;">
</div>
</div>
</html>
这是css文件:
#ship {
position: relative;
width: 4cm;
height: 5cm;
margin-left: auto;
margin-right: auto;
background-color: white;
}
#shipBoard {
position: relative;
width: 20cm;
height: 5cm;
margin-left: auto;
margin-right: auto;
background-color: green;
}
我该怎么做才能使它们相同?
答案 0 :(得分:3)
子像素定位很棘手。 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或网格代替浮动控件是一个不错的选择,但是在CSS中将width属性更改为151px
和755px
可以解决此问题。
此外,请勿在多个元素上使用相同的id=
,这是无效的。
答案 1 :(得分:-4)
不能。通常,在HTML中,它可以在不同的浏览器上显示不同。在该区域,Firefox不如Chrome先进。