Мой сайт в Firefox выглядит иначе, чем в Chrome

Я работал над веб-страницей в 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;
}

Что я могу сделать, чтобы они были одинаковыми?

Вы должны начать с наличия действительного HTML-файла с <head> и <body>.

ceejayoz 31.01.2019 18:52

@ceejayoz Эти теги необязательны.

Josh Lee 31.01.2019 18:57

Я бы начал с просмотра сброса или нормализации CSS (спросите у Google). Эти фрагменты CSS пытаются выровнять основу, чтобы каждый браузер действовал примерно одинаково для всех элементов. Кроме того, использование реальных измерений, таких как cm, может привести к различиям между устройствами/браузерами. Вместо этого вы должны использовать единицы на основе экрана, такие как px, или, что еще лучше, относительные единицы, такие как % em rem vw/vh.

Bryce Howitson 31.01.2019 19:00

@JoshLee Валидатор HTML5 W3C говорит, что «в элементе head отсутствует требуемый экземпляр дочернего элемента title» для этого HTML.

ceejayoz 31.01.2019 19:05

Также было бы полезно, если бы вы могли опубликовать скриншоты различий, которые вы видите.

Bryce Howitson 31.01.2019 19:05

@ceejayoz Да, элемент заглавие обязателен.

Josh Lee 31.01.2019 19:07

@JoshLee, то есть у них недействительный документ HTML5. Учитывая, что у OP есть проблемы с рендерингом в браузере, явное объявление того, что такое head/body, является полезным первым шагом для уменьшения различий в браузерах.

ceejayoz 31.01.2019 19:10

@ceejayoz Элементы meta и link находятся в голове, а div — в теле. Ни один браузер не ошибается, и это даже не ошибка проверки, а просто распространенное заблуждение.

Josh Lee 31.01.2019 19:16
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
8
1 764
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы не можете. Обычно в HTML он может отображаться по-разному в разных браузерах. Firefox не так продвинут, как Chrome в этой области.

Это просто неверно.

ceejayoz 31.01.2019 19:03

Это не совсем так. В большинстве случаев и приложив определенные усилия, почти все браузеры можно сделать одинаковыми. Это дурацкая затея, но это можно сделать. Тем не менее, хорошо написанные HTML и CSS должны выглядеть одинаково во всех браузерах класса A, включая Firefox, Safari и Edge в дополнение к Chrome.

Bryce Howitson 31.01.2019 19:04

Я прошу прощения. Насколько я понял, так оно и работало.

Taylor 02.02.2019 08:50
Ответ принят как подходящий

Позиционирование субпикселей сложно. Блок cm не соответствует целому числу пикселей (он определяется как 1cm = 96px/2.54).

В Хроме:

> getComputedStyle(document.querySelector('#shipBoard')).width
"755.891px"
> getComputedStyle(document.querySelector('#ship')).width
"151.172px"

В Фаерфоксе:

> getComputedStyle(document.querySelector('#shipBoard')).width
"755.9px"
> getComputedStyle(document.querySelector('#ship')).width
"151.183px"

Значения в макете CSS часто преобразуются из двойных в числа с плавающей запятой и обратно или округляются до нескольких знаков после запятой. Этот макет хрупкий, потому что он зависит от 5 * ширина (корабль) ≤ ширина (корабль). Поплавки предназначены для обертывания при необходимости. Некоторые длины в CSS, особенно границы, иногда привязываются к целому числу пикселей независимо от уровня масштабирования.

Flexbox или сетка были бы хорошим выбором вместо float, но изменение свойств ширины на 151px и 755px в вашем CSS исправляет это.

Кроме того, не используйте один и тот же id= для нескольких элементов, это недопустимо.

Другие вопросы по теме