2013-05-15 2 views
1

У меня есть div с display: table; table-layout: fixed; width: 100% как ребенок другого div с position: absolute. В Chrome, IE и Firefox дочерний div с table-layout: fixed делает родителя div разворачиваться до 100%, но в Safari (6.0.4, OS X 10.8.3) этого не происходит. Вот картинаСафари: таблица-макет: фиксированный в абсолютно позиционированном элементе не растягивает родителя

Safari rendering problem

и А jsbin http://jsbin.com/oqupah/6/edit (убедитесь, чтобы открыть выход в новом окне). Разметка выглядит примерно так:

<div style="position:absolute;border: 1px solid black"> 
    <div style="display:table;table-layout:fixed;width:100%;border:1px solid red;"> 
    <div style="display:table-cell;border:1px solid green">a</div> 
    </div> 
</div> 

Это HTML-код и XHTML-версии 1.0. Я заметил, что если я удалю doctype в сафари, он будет вести себя как другие браузеры, но удаление doctype не является вариантом.

На практике у меня был этот код, когда я реализовал абсолютно позиционированное всплывающее окно, в котором содержимое всплывающего окна является div с display: table; table-layout: fixed; width: 100%. Я хочу, чтобы всплывающее окно растягивалось на 100%, так что я могу легко предоставить max-width и что, если бы размер окна был изменен, всплывающее окно уменьшилось бы соответственно.

Итак, я предполагаю, что это ошибка в Safari? Поведение на мобильном сафари одинаково. Есть ли что-то, что я могу добавить, чтобы заставить его вести себя как другие браузеры?

+0

хорошо работает на Safari 5.1.7 –

ответ

1

исправление добавить right: 0 к абсолютно позиционирован div

... впустую так много времени на это.

0

Я установил его с помощью этого на display:table элемент:

table-layout: fixed; 
max-width: none; 
width: auto; 
min-width: 100%; 
Смежные вопросы