0 / 0 / 0
Регистрация: 04.05.2018
Сообщений: 5
|
||||||
1 | ||||||
Как сделать высоту div равной всей высоте документа (с полосой прокрутки)?29.05.2018, 04:08. Показов 4659. Ответов 7
Метки нет (Все метки)
Всем доброго времени суток! Вопрос от новичка.
На странице расположены два дива с классами divRed и divGrey. У первого контента минимум или вообще нет, у второго контента много. Один слева, другой справа. Нужно, чтобы каждый из них независимо от контента шел до самого низа документа (ну либо до следующего под ними подвала, если такой имеется). Задаем в стилях height: 100% , надеясь, что все будет ОК. Однако если контент не умещается в окне браузера по высоте, появляется вертикальная полоса прокрутки, и при прокручивании выясняется, что: - вариант а) у дивов стоит position: absolute дива внизу уже и нет (и контент спокойненько существует уже за его пределами); если даже контента на странице немного и в развернутом окне браузера он весь помещается, но затем окно браузера сжать по высоте, так чтобы контент ушел вниз (и соответственно появился вертикальный скролбар), будет та же история; - вариант б) у дивов стоит position: relative в этом случае див растягивается по содержимому: если в первом диве ничего нет, то он вообще не отображается, если одна строка, то занимает одну строку; т.е. если у нас несколько дивов-столбцов с разным количеством контента, то только тот дойдет до низа документа, у которого контента больше... Вопрос собственно такой: как сделать так чтобы все дивы шли до низа документа? Наверняка должно быть простецкое решение, однако я только начинаю изучать HTML/CSS и где-то этот момент упустил. Ну и второй вопрос больше теоретический: как выяснить реальную высоту документа (естественно в привязке к конкретному размеру окна браузера)? Речь не про высоту экрана и не про высоту окна браузера, т.к. в случае вертикального скролбара это не будут тождественные величины. Прежде всего интересует JavaScript (ну и через консоль браузера тоже интересно, если есть такая возможность).
0
|
29.05.2018, 04:08 | |
Ответы с готовыми решениями:
7
Как сделать высоту блока равной высоте экрана? Как сделать чтобы div растягивался по высоте документа div с полосой прокрутки, стиль полосы прокрутки Содержимое div'a не отображается за полосой прокрутки |
29.05.2018, 08:40 | 2 | ||||||||||||||||||||
1.
1
|
Модератор
2277 / 1657 / 651
Регистрация: 07.08.2016
Сообщений: 3,972
|
|
29.05.2018, 10:09 | 3 |
Высота документа:
document.documentElement.scrollHeight
1
|
0 / 0 / 0
Регистрация: 04.05.2018
Сообщений: 5
|
||||||
29.05.2018, 15:31 [ТС] | 4 | |||||
Спасибо, попробовал 2-й вариант - работает) Значит я не пропустил, а просто не дошел до flex (слышал, что это довольно объемная тема для изучения).
Flex - вроде как прогрессивная технология, а все что связано с table - полный отстой (касаемо оформления)? Добавлено через 16 минут И за document.documentElement.scrollHeight спасибо) Вычитал, что браузеры бывает подглючивают и надо брать максимум из значений:
0
|
0 / 0 / 0
Регистрация: 04.05.2018
Сообщений: 5
|
|||||||||||||||||||||
31.05.2018, 09:53 [ТС] | 5 | ||||||||||||||||||||
Все-таки второй вариант работает как мне нужно, только если контента в одном из дивов много (если текст растягивает содержимое divGrey как минимум на всю страницу). А вот при таком варианте высота divGrey (ну и divRed) будет равна одному параграфу:
Понятно, что можно нагородить огород с JS, чтобы на событие window.onresize запускалась функция, которая будет устанавливать высоту еще одного вспомогательного пустого дива равной document.documentElement.scrollHeight и растягивать таким образом недозаполненный divRed или divGrey; и то это, наверное, подойдет на случай без подвала (либо нужно будет высоту подвала вычитать). Но думается, что должен быть вариант проще (с CSS). Добавлено через 14 минут В смысле функцию, которая бы запускалась и при загрузке страницы и при window.onresize Добавлено через 4 часа 55 минут Нашел временное решение, и к растягиванию дива на всю высоту документа оно не имеет отношения. Но с точки зрения оформления, если задача заключается только в том, чтобы растянуть однотонный фон на всю высоту, может и сойдет. Нужно подложить под дивы с контентом (где его может быть много, мало или совсем не быть), дивы с position: fixed и с height: 100%:
0
|
31.05.2018, 13:58 | 6 | ||||||||||
Сообщение было отмечено AlexandrB_1983 как решение
Решение
1
|
0 / 0 / 0
Регистрация: 04.05.2018
Сообщений: 5
|
|||||||||||
31.05.2018, 17:44 [ТС] | 7 | ||||||||||
Я переписал под себя (убрал лишнее), все работает!
Спасибище, теперь буду разбираться, почему это работает)
0
|
31.05.2018, 17:45 | 8 |
C семантической точки зрения, таблицы должны использоваться при работе с табличными данными. Но в данном случае никакой таблицы нет, есть блоки, которым задаются табличные стили, что вполне себе оправданно в данной ситуации.
0
|
31.05.2018, 17:45 | |
31.05.2018, 17:45 | |
Помогаю со студенческими работами здесь
8
Как сделать тень под полосой прокрутки Как растянуть тег DIV по всей высоте странице? CSS. Не полчучается растянуть DIV по всей высоте Как сделать высоту сайта без прокрутки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |