2010-06-18 4 views
0

Это трудно объяснить.CSS-гуру, могу ли я сделать свой абсолютно позиционированный дочерний элемент силой главной родительской высоты?

У меня есть абсолютно позиционированное плавающее вторичное содержимое.

Он отлично работает во всех случаях.

За исключением случаев, когда вы отправляете форму и не заполняете поля (см. here, и нажмите отправьте). Ящик расширяется, чтобы показать ошибки, а под нижним колонтитулом - пустое место. Лучший пример, который я могу дать, - увидеть его в действии (ссылка выше).

Я играл с min-height, и он не работал слишком хорошо. Я также хотел бы избежать расширения нижнего колонтитула с кодом в случае ошибок формы, если я могу помочь.

Должен ли я выбрасывать абсолютное позиционирование? И попробуйте с полями? Есть ли другой способ заставить его работать?

+0

Абсолютно позиционированные элементы не могут плавать ... В вашем случае, я думаю, вы имеете в виду '# secondary-content'? –

+0

@Marcel Korpel Отключить JavaScript, возможно, проще всего. – alex

+1

Медведь со мной здесь, но зачем использовать 4 строки только для ошибок? В вашей позиции я бы просто использовал одну строку с набором высоты, достаточно высок, чтобы разместить эту строку ошибок, не искажая ничего и просто добавляя разные поля к этой строке, IE «Вы должны ввести имя, номер телефона и запрос» Нет? – edl

ответ

1

Нет. Это абсолютная точка в том, что они не влияют на родителя.

Я бы предложил не использовать абсолютные позиционированные элементы для чего-либо с динамическим контентом.

В вашем случае я попытался бы погрузить два первичных контейнера влево и использовать отрицательный верхний край, чтобы вытащить резерв вторичного содержимого обратно.

Всегда есть js, если вы не хотите перекодировать свой css, но в конечном итоге было бы лучше изменить ваш css.

+0

Спасибо, Бен, я подумал, что мне, возможно, понадобится это сделать. – alex

+0

Я не уверен, как в данный момент получить его * float * (не 'свойство float' CSS) над нижним содержимым без абсолютного позиционирования, не допуская высоты для содержимого. – alex

+0

Подождите, я думаю, что у меня это есть! – alex

1

Я принял Ben's answer, но я решил определить, какие шаги я должен был взять ...

во-первых, я изменил внутреннюю коробку float: right, с margin: -50px 40px 40px 0;. Это привело к тому, что внутренний ящик вернул правильное место вверху, но родительский рухнул.

Я добавил элемент под #content с clear: left, чтобы родительский элемент расширялся до высоты содержимого слева.

Мне тогда пришлось полностью позиционировать элементы в нижнем колонтитуле, потому что они были вынуждены спускаться по высоте вставки (кто-нибудь знает лучший способ сделать это?).