Процент ширины дочернего элемента в абсолютно позиционированном родительском элементе в Internet Explorer 7
у меня есть абсолютно позиционированный div
содержит несколько детей, один из которых относительно расположен div
. Когда я использую процентах ширина на ребенка div
, он рушится до' 0 ' ширина на Internet Explorer 7, но не на Firefox или Safari.
Если я использую ширина в пикселях, это работает. Если родитель расположен относительно, процент ширины на дочернем устройстве работает.
- есть ли что-то Я здесь скучаю?
- есть ли простое решение для этого, кроме -пиксельная ширина на ребенок?
- есть ли область спецификации CSS, которая охватывает это?
6 ответов:
родитель
div
должен быть определенwidth
, либо в пикселях, либо в процентах. В Internet Explorer 7 родительdiv
нужен определенныйwidth
для ребенка процентdiv
s для правильной работы.
вот пример кода. Я думаю, что это то, что вы ищете. Следующие дисплеи точно такие же в Firefox 3 (mac) и IE7.
#absdiv { position: absolute; left: 100px; top: 100px; width: 80%; height: 60%; background: #999; } #pctchild { width: 60%; height: 40%; background: #CCC; } #reldiv { position: relative; left: 20px; top: 20px; height: 25px; width: 40%; background: red; }
<div id="absdiv"> <div id="reldiv"></div> <div id="pctchild"></div> </div>
IE до 8 имеет временной аспект к своей модели коробки, что наиболее заметно создает проблему с процентной шириной на основе. В вашем случае здесь абсолютно позиционируется
div
по умолчанию не имеет ширины. Его ширина будет рассчитана на основе ширины пикселя его содержимого и будет рассчитана после отображения содержимого. Таким образом, в точке IE встречает и отображает ваше относительно позиционированноеdiv
его родитель имеет ширину 0, поэтому он сам сворачивается до 0.Если вы хотелось бы более подробно обсудить это вместе с большим количеством рабочих примеров, есть Гусак здесь.
почему не процент ширины ребенка в абсолютно позиционированной родительской работе в IE7?
потому что это интернет взрывник
Я что-то упускаю?
то есть, чтобы повысить осведомленность вашего коллеги / клиентов, что IE отстой.
есть ли простое исправление, кроме пиксельной ширины на ребенке?
использовать
em
единицы, поскольку они более полезны, когда создание жидких макетов, поскольку вы можете использовать их для заполнения и полей, а также размеров шрифта. Таким образом, ваше пустое пространство растет и сжимается пропорционально вашему тексту, если он изменяется (что действительно вам нужно). Я не думаю, что проценты дают более тонкий контроль, чем ems; ничто не мешает вам указывать в сотых долях ems (0.01 em), и браузер будет интерпретировать, как он считает нужным.есть ли область спецификации CSS, которая охватывает это?
нет, насколько я помню
em
's и %' S были предназначены только для размеров шрифта в CSS 1.0.