Почему height 100 не работает
Перейти к содержимому

Почему height 100 не работает

  • автор:

DIV height:100% не работает

Уже пролазил весь инет вместе с Google и нет никаких результатов.
Оказывается что заполнить background на всю высоту DIV на 100% не выходит..

только фиксированная высота в пикселях получается.
но нет возможности потому что каждый раз страница динамически меняет свою высоту..

. Как же так все эти всемирные програмисты упустили такой важный пункт.

Многие смотрю сталкиваются с этой проблемой и никто так и не нашел ожидаемого результата.

может кто знает в новой формулировке CSS3 есть какие то варианты ?

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Как сделать div 100% height от возможного
http://spimun.com/ В верстке я еще новичек. поэтому сильно намудрил всего) там все и css и html в.

Два div блока с высотой height:100% в одну линию
Есть два блока. Оба имеют высоту height:100% и фиксированную ширину. Нужно поставить их в одну.

Блок на растягивается на height:100%; min-height: 100%;
Подскажите пожалуйста, почему мне не получается растянуть блок во всю высоту браузера? Вроде бы.

Не работает свойство height:100%
почему то ставлю высоту 100 % а элемент не растягивается до высоты родителя.

13208 / 6596 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069

Высота в процентах работает только если высота родителя указана явно, либо если родитель абсолютно спозиционирован. В остальных случаях высота в процентах игнорируется и считается auto.

Регистрация: 26.05.2011
Сообщений: 379
нет так тоже не работает. я уже пробовал.. все без результатов.
228 / 208 / 27
Регистрация: 18.02.2010
Сообщений: 1,985

netsolex, сама идея div вёрстки так и была задумана, что бы вертикаль заполнялась в соответствии с контентом в нёё вложенным, если вы хотите заполнить вертикаль «пустотой» ну или фоном вам нужна табличная вёрстка.

Регистрация: 26.05.2011
Сообщений: 379

да конечно в таблице нет проблем. я бы и не спрашивал.
все что меня интересовало это в DIV . ну да ладно если нереально сделать заполнение на 100% вертикально так тому и быть.
буду искать другие пути заполниния..
хотя всетаки как странно что нашел огромное количество эдинтичных вопросов и нигде нет ответа что бы DIV мог заполняться background на 100% по высоте.

очень много есть вариантов и предложений но ниодин не рабочий.

а вообще непонятно в чем смысл такой идеи что сам div сам по себе не имеет такой возможности по вертикали. очень в странно все это.

Как сделать div с height 100% с помощью CSS.

При верстке макетов можно столкнуться с ситуацией, что какой-либо блок, который чаще всего представляет собой колонку макета, нужно растянуть на 100% по высоте экрана монитора.

Сначала решение этой задачи может показаться довольно простой, казалось бы, что нужно задать для блока свойство height со значением 100%.

   

Блок, который должен растянуться на 100% высоты окна браузера

Но, как видите это свойство не работает. Блок не хочет растягиваться на всю ширину окна браузера.

Как решить эту проблему? Почему не работает свойство height:100%?

Все дело в том, что 100% должны браться от высоты родительского элемента. А какая у нас высота родительского элемента? Для элемента div, в данном примере, этими родительскими элементами являются элементы body и html.

По умолчанию, свойство height этих элементов принимает значение auto, а значит эти элементы имеют такую высоту, чтобы вместить в себе всю содержимое и не больше.

Чтобы изменить ситуацию, родительским элементам body и html также нужно добавить свойство height 100%.

Давайте посмотрим, что из этого получиться.

html, body

Ну, вот, совсем другое дело. Теперь наш блок растянут на 100% высоты. Используйте это на практике.

Больше моих уроков по HTML, CSS и верстке сайтов здесь.

Чтобы оставить сообщение, зарегистрируйтесь/войдите на сайт через:

CSS height в % не работает?

Почему, когда в height пишешь в px всё нормально, а когда в процентах, как на рисунке, ничего не работает? height в процентах нельзя делать?

      body.style_body < background-attachment: scroll; background-clip: border-box; background-origin: padding-box; direction: ltr; display: block; margin: 0px auto; overflow: scroll; padding: 0px; position: relative; >.gods_area School.ua   

Отслеживать
2,455 3 3 золотых знака 19 19 серебряных знаков 35 35 бронзовых знаков
задан 22 ноя 2011 в 10:44
2,468 22 22 золотых знака 50 50 серебряных знаков 96 96 бронзовых знаков

4 ответа 4

Сортировка: Сброс на вариант по умолчанию

Если вы берете проценты, их нужно брать от чего то Т.е. либо пропишите, как сказано выше

body, html

либо укажите в родительском элементе тоже самое

body.style_body

Отслеживать
ответ дан 22 ноя 2011 в 11:22
368 1 1 серебряный знак 13 13 бронзовых знаков

Конечно 100% можно использовать, но я бы вам советовал использовать так называемые viewport меры. (vh, vw, vmin, vmax)

body < margin:0; >div
 
100 высота

Отслеживать
ответ дан 2 окт 2017 в 17:36
user245150 user245150

Не хватает только прописать body, html .

Отслеживать
ответ дан 22 ноя 2011 в 11:03
14.7k 1 1 золотой знак 26 26 серебряных знаков 48 48 бронзовых знаков

Стереть можно , у меня так получилось.

Отслеживать
ответ дан 22 ноя 2011 в 10:53
Draculidze Draculidze
65 7 7 бронзовых знаков
22 ноя 2011 в 11:00
так ты мой код посмотри
22 ноя 2011 в 11:01
Сотри самую первую строчку < ! D O C T Y P E h t m l >😉
22 ноя 2011 в 11:08
@Draculidze, чем вам доктайп не угодил?
22 ноя 2011 в 11:15
@ling +1) Какая разница?
22 ноя 2011 в 11:26

  • html
  • вёрстка
  • css
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.10.27.43697

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Особенности свойства height в %

Обычно свойство height , указанное в процентах, означает высоту относительно внешнего блока.

Однако, всё не так просто. Интересно, что для произвольного блочного элемента height в процентах работать не будет!

Чтобы лучше понимать ситуацию, рассмотрим пример.

Пример

Наша цель – получить вёрстку такого вида:

При этом блок с левой стрелкой должен быть отдельным элементом внутри контейнера.

Это удобно для интеграции с JavaScript, чтобы отлавливать на нём клики мыши.

То есть, HTML-код требуется такой:

Как это реализовать? Подумайте перед тем, как читать дальше…

Придумали. Если да – продолжаем.

Есть разные варианты, но, возможно, вы решили сдвинуть .toggler влево, при помощи float:left (тем более что он фиксированной ширины) и увеличить до height: 100% , чтобы он занял всё пространство по вертикали.

Вы ещё не видите подвох? Смотрим внимательно, что будет происходить с height: 100% …

Демо height:100% + float:left

.container < border: 1px solid black; >.content < /* margin-left нужен, так как слева от содержимого будет стрелка */ margin-left: 35px; >.toggler < /* Зададим размеры блока со стрелкой */ height: 100%; width: 30px; float: left; background: #EEE url("arrow_left.png") center center no-repeat; border-right: #AAA 1px solid; cursor: pointer; >

А теперь – посмотрим этот вариант в действии:

Как видно, блок со стрелкой вообще исчез! Куда же он подевался?

Ответ нам даст спецификация CSS 2.1 пункт 10.5.

«Если высота внешнего блока вычисляется по содержимому, то высота в % не работает, и заменяется на height:auto . Кроме случая, когда у элемента стоит position:absolute .»

В нашем случае высота .container как раз определяется по содержимому, поэтому для .toggler проценты не действуют, а размер вычисляется как при height:auto .

Какая же она – эта автоматическая высота? Вспоминаем, что обычно размеры float определяются по содержимому (10.3.5). А содержимого-то в .toggler нет, так что высота нулевая. Поэтому этот блок и не виден.

Если бы мы точно знали высоту внешнего блока и добавили её в CSS – это решило бы проблему.

/*+ no-beautify */ .container < height: 200px; /* теперь height в % внутри будет работать */ >

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *