Допустима ли реализация свертываемой модели границы в веб-браузерах?
Я пытался понятьэтот отрывок из спецификации 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 пикселей. Потому что рухнула левая граница первой ячейки#cell_1_1
имеет ширину 28 пикселей (Ширина левой границы таблицы равна половине свернутой левой границы первой ячейки.) и слева граница разделена между ячейкой и таблицей. Таким образом, визуально таблица имеет границу 28 пикселей около первой ячейки, но 14 пикселей принадлежит границе первой ячейки. И тогда граница остается неизменной для всей левой стороны таблицы. Если границы некоторых ячеек шире, то они выступают влево, не затрагивая левую границу таблицы.
То же самое с верхней границей.
Также я думал, что проблема может быть связана сНачальное слово в отрывке, то есть эти правила применяются только в том случае, если таблица не имеет указанной границы, но оказалось, что она не связана (удаление правила стиля границы для таблицы просто удаляет зеленую границу вообще).
Так может кто-нибудь ответить на следующие вопросы:
правильны ли реализации этой модели коллапсирующих границ в Chrome, FF, IE?
если они верны, что не так с моим пониманием спецификации?
Теперь, если мы пошли наоборот и предположили реализацию в Chrome как отправную точку для получения спецификации, эта частьдолжно было что-то вроде следующего (для краткости я сохранил только часть, относящуюся к левой границе):
UA должны вычислить начальную ширину левой и правой границы для таблицыкоторый затем используется для позиционирования таблицы относительно содержащего ее блока исследуя первую и последнюю ячейки в первом ряду таблицы. Ширина левой границы таблицы равна половине свернутой левой границы первой ячейки.после всех пограничных конфликтов, если таковые были разрешены
...
Если последующие строки имеют большие свернутые левую и правую границы, то любые избыточные разливы попадают в область полей таблицы.
...
Любые границы, которые попадают в поле, учитываются при определении того, переполняет ли таблица какой-либо предок (см. «Переполнение»)., но не влияют на положение таблицы относительно содержащего ее блока
Тогда выдержка имела бы смысл.
Здесь есть таблица с границей, более широкой, чем у первой ячейки, внутри содержащего блока с розовым фоном (как мы можем видеть, граница таблицы выбирается по границе первой ячейки, потому что она шире, а затем эта граница используется для позиционирования таблицы внутри контейнера. Более широкие границы последующих ячеек выступают за границы таблицы):
И здесь есть та же таблица с границей первой ячейки, более широкой, чем у таблицы, которая выбирается над ней во время разрешения конфликта границ. И здесь эта граница используется для позиционирования таблицы относительно контейнера: