Подтвердить что ты не робот

Является ли реализация модели сжимающейся пограничной модели в веб-браузерах действительной?

Я пытаюсь понять этот отрывок из спецификации CSS 2.2 некоторое время без успеха (выделен полужирный вариант):

UA должны вычислять начальную начальную ширину левой и правой границы таблицы исследуя первую и последнюю ячейки в первой строке таблицы. Ширина левой границы таблицы составляет половину первой скрещенной левой границы поля, а ширина правой границы таблицы равна половине последней ячейки, рухнувшей вправо границы. Если последующие строки имеют большие сложенные левую и правую границы, то любой избыток разливается в область поля таблицы.

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

И вот как границы, рушится и т.д. реализованы в Chrome (FF и IE > 7 одинаковы):

table {
  border: 6px solid green;
  border-spacing: 0;
  border-collapse: collapse;
}
#cell_1_1 {
  border: 28px solid red;
}
#cell_2_1 {
  border: 12px solid chartreuse;
}
#cell_2_2 {
  border: 2px solid cyan;
}

реализация модели спящих границ в веб-браузерах

Пока я ожидал чего-то вроде этого:

ожидаемый результат

Я ожидал, что левая граница таблицы будет 14 px толщиной. Поскольку сложенная левая граница первой ячейки #cell_1_1 имеет ширину 28 пикселей (. Ширина левой границы таблицы равна половине первой ячейки, сложенной левой границей), а слева граница разделяется между ячейку и таблицу. Таким образом, визуально таблица имеет границу 28 px рядом с первой ячейкой, но 14 px принадлежат границе первой ячейки. А затем граница остается одинаковой для всех левых сторон стола. Если некоторые границы ячеек более широкие, то они выступают влево, не затрагивая левую границу таблицы.

То же самое с верхней границей.

Также я думал, что проблема может быть связана с начальным словом в выдержке, то есть эти правила применяются только в том случае, если таблица не имеет определенной границы, но она оказалась не связанной ( удаление правила стиля границы для таблицы просто удалило зеленую границу вообще).

Так может ли кто-нибудь ответить на следующие вопросы:

  • Правильны ли реализации этой модели сглаживания границ в Chrome, FF, IE?

  • если они верны, что не так с моим пониманием спецификации?


Теперь, если мы пошли наоборот и предположили реализацию в Chrome как отправную точку для получения спецификации, эта часть должна была быть чем-то вроде следующего (я сохранил только часть, относящуюся к левая граница для лаконичности):

UA должны вычислять начальную ширину левой и правой границы для таблицы , которая затем используется для размещения таблицы относительно ее содержащего блока на исследуя первую и последнюю ячейки в первой строке таблицы. Левая ширина границы таблицы составляет половину первой ячейки, обрушившейся на левую границу после всех конфликтов границ, если они были разрешены.

...

Если последующие строки имеют большие сложенные левые и правые границы, то любой избыток разливается в область поля таблицы.

...

Любые границы, которые разливаются по краю, учитываются, когда определение того, что таблица переполняет некоторый предок (см. "переполнение" ) , но не влияет на положение таблицы относительно ее содержащего блока

Тогда выдержка имела бы смысл.

Здесь есть таблица с шириной границы, чем первая ячейка внутри содержащего блока с розовым фоном (как мы видим, граница таблицы выбирается над границей первой ячейки, потому что она шире и то эта граница используется для размещения таблицы внутри контейнера. Более широкие границы последующих ячеек выступают за пределы таблицы):

текущая реализация в хроме с границей таблицы, более широкой, чем первая ячейка

И здесь есть та же таблица с границей первой ячейки, более широкой, чем таблица, которая выбрана над ней во время разрешения конфликта границ. И здесь эта граница используется для размещения таблицы относительно контейнера:

текущая реализация в хроме с границей таблицы, более узкой, чем первая ячейка

4b9b3361

Ответ 1

Ответ "нет". Мне нравится откровенность обсуждений, проведенная CSSWG, и заметки в текущем черновике проекта редакторов CSS-таблиц 3 сообщают вам все, что вам нужно знать об этом вопрос.

Так как браузеры обрабатывайте это так иначе, конвергенция не может произойти без Переопределение....

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

Потому что они выросли от чего-то простого (HTML) до чего-то очень (HTML + CSS), текущие модели рендеринга таблицы... используемые веб-браузерами безумны (в том смысле, что они багги, не совместимы, а не CSSish вообще). Многие обычные CSS допущения разбиты, а визуализации сильно расходятся.

(Акцент добавлен.)

В текущем проекте больше информации, но рабочая группа CSS признает (1), что реализации браузера несовместимы, и (2) даже их собственное текущее предложение недостаточно.