Webkit игнорирует вертикальное выравнивание для встроенных блоков, содержащих линейные блоки - PullRequest
11 голосов
/ 18 мая 2010

Когда Webkit (Safari, Chrome) встречает встроенный блок, где ...

  1. указана line-height высота
  2. содержимое отображается с использованием нескольких строковых блоков

... элемент inline-block игнорирует указанный vertical-align.

Чтобы проиллюстрировать проблему, у меня есть небольшой тестовый пример: http://arther.net/lab/webkit-vertical-align-test.html#test


Firefox 3.6, Opera 10.53 и IE7 + обрабатывают эти встроенные блоки как встроенные элементы, а выравнивание по вертикали работает, как и ожидалось. Браузеры Webkit (и Opera 10.10) обрабатывают встроенные блоки в этой ситуации как элементы уровня блока, игнорируя, таким образом, vertical-align. Итак, кто прав, а кто глючит?

Я вижу, как это происходит в любом случае. С одной стороны, вы можете сказать, что все встроенные элементы - даже встроенные блоки - должны располагаться должным образом внутри содержащего линейного блока согласно vertical-align. С другой стороны, встроенные элементы обычно определяют один встроенный блок и не имеют собственных линейных блоков. Все, что охватывает несколько строковых блоков , должно быть элементом уровня блока. В этом случае встроенный блок должен рассматриваться как блок, который, таким образом, игнорирует vertical-align.

Учитывая текущее поведение, я полагаю, что одно из следующего верно:

  • это ошибка Webkit
  • это ошибка во всех других движках рендеринга
  • Спецификации относительно этой конкретной ситуации туманны, и используются разные подходы

Если бы кто-нибудь мог дать некоторые разъяснения по этому вопросу и каково должно быть ожидаемое поведение, я был бы очень признателен.

1 Ответ

1 голос
/ 21 мая 2010

Это похоже на ошибку, так как работает, когда раздел занимает только одну строку.

В Chrome и Safari есть функция, с помощью которой вы можете сообщать об ошибках, чтобы помочь их разработчикам исправить это.

...