Я пытаюсь преобразовать старый макет на основе таблиц и JS в новый Flexbox с обратной совместимостью, сохраняя таблицы для старых браузеров (в частности, IE8, IE9 и Opera 10+).Как сбросить свойство display для flex-item
Проблема в том, что нет display:flex-item
, чтобы переопределить старый стиль display:table-cell
.
Я пробовал различные определения, такие как display:inherit
, display:initial
, но ни один из них не может сбросить отображение отображения, чтобы работать корректно как гибкий элемент.
<!-- HTML user list -->
<div class="userDetails layout">
<div class="picture"><img src="..."></div>
<div class="details">username, email, etc.</div>
</div>
/* CSS Table Layout */
.layout { display: table; width: 100%; }
.layout > .picture { display: table-cell; width: 30%; }
.layout > .details { display: table-cell; width: auto; }
/* CSS Flexbox - ignored by browsers that does not support it */
/* just an example - should use all versions for best compatibility */
.layout { display: flex; }
.layout > .picture { display: ???; flex: 0 1 30%; }
.layout > .details { display: ???; flex: 1 1 auto; }
Все, что я установить на дисплее для .details
он не работает, как Flex-элемент и не расти, чтобы заполнить оставшееся пространство.
Любая идея переопределить это без использования JS для обнаружения версии браузера и переключения стилей?
Я пробовал искать решение, но большинство результатов - это просто общие статьи о Flexbox; только аналогичный - this test, который просто не решает обратную совместимость.
ОБНОВЛЕНИЕ 1: Это JSFiddle demo чистого Flexbox и Flexbox в сочетании с табличной планировкой. Если вы измените размер окна результатов, чистый макет будет сжиматься иначе, чем нижний, который объединяет таблицу и Flexbox. Примечание: в Chrome это работает правильно, попробуйте его в Firefox, IE, Safari и т.д.
UPDATE 2: Safari корректно работает с префиксами определениями ... updated JSFiddle demo
Справа, при нормальной настройке страницы гибкие элементы для блокировки или встраивания работают правильно. К сожалению, мой макет страницы настолько запутан, что браузер настолько запутан, что не работает, как правильно его расставить. Мне придется перепроектировать целую страницу, чтобы использовать только flexbox :(. –