Несколько месяцев спустя ...
Я отказался от попыток решить эту проблему только с помощью CSS. Это ошибка IE7, которую нельзя избежать, не касаясь HTML.
Окончательное применение этого плавающего шаблона было в форме, где два из div
были входными элементами, а два других div
были соответствующими им метками. Шаблон использовался несколько раз в большой форме, и я действительно хотел найти элегантное решение только для CSS.
В итоге я использовал Object-Oriented CSS Framework и обернул все элементы дополнительными div
s, чтобы создать желаемый макет, как диктует OOCSS. Это был единственный способ спасти мою душу от CSS адского IE7, и OOCSS не так уж и плох, как только вы завершите первоначальный макет.
По правде говоря, общий ответ таков: вы задаете такой вопрос, когда не знаете, что делаете с CSS. Если вам нужно создать сложный макет один раз в голубой луне, то вы, вероятно, не знаете, что делаете; как и в случае, когда я задал этот вопрос.
Хотя это правда, что IE7 не может правильно отобразить CSS, это был также случай ошибочной области видимости с моей стороны. CSS не является окончательным языком разметки, каким его хотел бы наивный программист, и CSS не является действительно независимым от структуры вашего HTML. Я снова решил выбрать более легкий путь, используя OOCSS, когда мне действительно нужно время, чтобы изучить основы CSS.
Увы, таковы последствия сроков.