Высота Div 100% работает в Firefox, но не в IE

У меня есть контейнерный div, содержащий два внутренних div; оба должны иметь 100% ширину и 100% высоту внутри контейнера.

Я установил оба внутренних div на 100% высоту. Это отлично работает в Firefox, однако в IE блоки div растягиваются не до 100% высоты, а только до высоты текста внутри них.

Ниже приводится упрощенная версия моей таблицы стилей.

#container
{
   height: auto;
   width: 100%;
}

#container #mainContentsWrapper
{
   float: left;

   height: 100%;
   width: 70%;
   margin: 0;
   padding: 0;
}


#container #sidebarWrapper
{      
   float: right;

   height: 100%;
   width: 29.7%;
   margin: 0;
   padding: 0;
}

Я что-то делаю не так? Или какие-то причуды Firefox / IE, которые я упускаю?

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
46
0
105 408
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Возможно, вам придется добавить один или оба из следующих вариантов:

html { height:100%; }

или же

body { height:100%; }

Обновлено: Упс, не заметил, что они всплыли. Вам просто нужно поплавать контейнер.

Трудно дать вам хороший ответ, не видя html, который вы на самом деле используете.

Вы выводите doctype / используете рендеринг в стандартном режиме? На самом деле, не имея возможности изучить html-репродукцию, это было бы моим первым предположением о разнице в интерпретации html между Firefox и Internet Explorer.

Я не уверен, какую проблему вы решаете, но когда у меня есть два бок о бок контейнера, которые должны быть одинаковой высоты, я запускаю небольшой javascript при загрузке страницы, который находит максимальную высоту из двух и явно устанавливает для другого такой же высоты. Мне кажется, что высота: 100% может означать просто «сделать размер, необходимый для полного содержания содержимого», тогда как на самом деле вы действительно хотите «сделать оба размера самого большого содержимого».

Примечание: вам нужно будет снова изменить их размер, если на странице что-то произойдет, чтобы изменить их высоту - например, отображение сводки проверки или открытие сворачиваемого меню.

++ Вы потратите гораздо меньше времени на то, чтобы исправить это с помощью javascript, чем попытаетесь сделать это с помощью css. Я знаю, что это «плохая практика» в мире ИТ - делать это таким образом ... но в деловом мире «плохая практика» - это тратить 10 часов на выполнение чего-то в css, что можно было бы сделать за 5 минут с помощью javascript.

Daniel Szabo 19.02.2011 01:20

@ Mr.JavaScript: да, но с долей скептицизма: тогда вам нужно подумать об изменении размера окна, переключении складных элементов или ... «быстрые исправления» часто не бывают быстрыми.

ANeves thinks SE is evil 09.07.2015 19:31

Я не думаю, что IE поддерживает использование auto для установки высоты / ширины, поэтому вы можете попробовать дать ему числовое значение (как предлагает Джаретт).

Кроме того, не похоже, что вы правильно очищаете поплавки. Попробуйте добавить это в свой CSS для #container:

#container {
    height:100%;
    width:100%;
    overflow:hidden;
    /* for IE */
    zoom:1;
}

Я сделал что-то очень похожее на то, что сказал tvanfosson, то есть фактически использую JavaScript для постоянного мониторинга доступной высоты в окне с помощью таких событий, как onresize, и использую эту информацию для соответствующего изменения размера контейнера (в пикселях, а не в процентах ).

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

Сообщите нам, работает ли одно из ранее упомянутых решений CSS, так как это звучит как лучший способ решить проблему.

Мне удалось заставить это работать, когда я установил поля контейнера на 0:

#container
{
   margin: 0 px;
}

в дополнение ко всем вашим стилям

Ответ принят как подходящий

Я думаю, что «отлично работает в Firefox» есть только в рендеринге Режим причуд. При рендеринге Стандартный режим это может не работать и в Firefox.

процент зависит от «содержащего блока», а не от области просмотра.

Спецификация CSS говорит

The percentage is calculated with respect to the height of the generated box's containing block. If the height of the containing block is not specified explicitly (i.e., it depends on content height), and this element is not absolutely positioned, the value computes to 'auto'.

так

#container { height: auto; }
#container #mainContentsWrapper { height: n%; }
#container #sidebarWrapper { height: n%; }

средства

#container { height: auto; }
#container #mainContentsWrapper { height: auto; }
#container #sidebarWrapper { height: auto; }

Чтобы растянуть область просмотра до 100% высоты, вам необходимо указать высоту содержащего блока (в данном случае это #container). Более того, вам также необходимо указать высоту для тела и html, потому что исходный содержащий блок является «зависимым от UA».

Все, что тебе нужно...

html, body { height:100%; }
#container { height:100%; }

отличное объяснение чувак

carlo denaro 18.08.2016 11:50

Попробуй это..

#container
{
   height: auto;
   min-height:100%;
   width: 100%;
}

#container #mainContentsWrapper
{
   float: left;

   height: auto;
   min-height:100%
   width: 70%;
   margin: 0;
   padding: 0;
}


#container #sidebarWrapper
{      
   float: right;

   height: auto;
   min-height:100%
   width: 29.7%;
   margin: 0;
   padding: 0;
}

Другие вопросы по теме