В Chrome 7 процентное относительное позиционирование CSS отличается от Chrome 6 (и других браузеров). - PullRequest
1 голос
/ 21 октября 2010

Моя установка Chrome обновилась вчера вечером (не сообщая и не спросив меня!)

Теперь интерпретирует относительное позиционирование CSS в процентах по сравнению со вчерашним днем.Предположим, у меня есть:

<body>
  <div class="everything">
    <div class="centerMe">
      Center me!
    </div>
  </div>
</body>

И этот CSS:

body
{
  width: 100%;
  height: 100%;
  margin: 0px;
  padding: 0px;
}

.everything
{
  position: absolute;
  left: 0px;
  top: 0px;
  right: 0px;
  bottom: 0px;
}

.centerMe
{
  position: relative;
  top: 50%;
  left: 50%;
}

В версии Chrome, которую я имел до прошлой ночи (6.x), и в этом отношении в Firefox 3.6.10 и IE 8, Center me! появляется примерно в середине страницы, по вертикали и горизонтали .

Но в Chrome 7.0.517.41 он центрируется только по горизонтали.По вертикали он находится вверху страницы.

Было ли это изменение сделано намеренно для устранения давней неточности в рендеринге CSS, или это новая ошибка в 7.x, которую Google скоро исправит?

Примечания:

  • Если я уберу <div class="centerMe"> и соответствующий </div>, то Chrome 7.x подчиняется вертикальному позиционированию, а Firefox и IE - нет!(т. е. все браузеры обращают свое поведение).
  • Если я изменю CSS для .centerMe на position: absolute;, все протестированные мной браузеры будут работать согласованно, центрируясь по вертикали и горизонтали.В любом случае, это имеет больше смысла, поэтому может показаться разумным обходным путем для любого, кто сталкивается с проблемой как с проблемой.
  • Как всегда, поведение IE не имеет ничего общего с удалением, если только <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> не появляется в начале HTML.

1 Ответ

3 голосов
/ 21 октября 2010

Кажется, что Chrome 7 не вычисляет неявную высоту элемента с абсолютным позиционированием, так как это будет работать:

body
{
  width: 100%;
  height: 100%;
  margin: 0px;
  padding: 0px;
}

.everything
{
  position: absolute;
  left: 0px;
  top: 0px;
  right: 0px;
  height:100%; /* fix height */
}

.centerMe
{
  position: relative;
  top: 50%;
  left: 50%;
}

Я не вижу ничего в спецификациях W3C, поэтому я думаю, что это ошибка».В любом случае, этот метод плох для центрирования элемента ^^

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...