我的网站在Firefox中的浏览器与Chrome浏览器不同

时间:2019-01-31 17:49:50

标签: html css google-chrome firefox

我一直在研究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;
}

我该怎么做才能使它们相同?

2 个答案:

答案 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属性更改为151px755px可以解决此问题。

此外,请勿在多个元素上使用相同的id=,这是无效的。

答案 1 :(得分:-4)

不能。通常,在HTML中,它可以在不同的浏览器上显示不同。在该区域,Firefox不如Chrome先进。