2017-01-12 23 views
0

Пожалуйста, помогите мне решить квест. У нас есть 3 div-блока. Высота первого div равна 100px (но в реальном мире это динамическое значение). Второй блок имеет фиксированную высоту и имеет еще один блок в качестве дочернего элемента. Детский блок должен иметь высоту, растянутую до нижней части экрана. Но поскольку наш второй блок относительный, дно: 0 будет означать нижнюю часть второго блока. Какова наилучшая практика для таких случаев, чистый CSS, пожалуйста?Позиционирование абсолютного элемента полной высоты внутри относительно одного

body > div { height: 100px; } 
 

 
.first { background: lightblue; } 
 

 
.second { 
 
    background: lightgreen; 
 
    position: relative; 
 
} 
 

 
.second div { 
 
    position: absolute; 
 
    background: pink; 
 
    width: 50%; 
 
    height: 200px; 
 
    top: 100px; 
 
}
<div class="first">The height of the block may vary greately.</div> 
 
<div class="second"> 
 
    <div>This DIV should take whole free space to the bottom of the screen.</div> 
 
</div>

UPD:

можно достичь эффекта путем обертывания второй DIV в дополнительный DIV (ширина позиции абсолютного и снизу: 0) и оставить его с прозрачным фоном, но тогда статическое содержание «за ним» становится непригодным. Вот an example.

+0

который ДИВ должен занять оставшееся место? второй div или ребенок второго div? у ребенка высота: 200 пикселей. Я предполагаю, что второй возьмет это? – jmag

+0

@jmag ребенок должен иметь оставшееся пространство. 200px - случайное число. – Mike

+0

Почему у вас нет 3 div на одном уровне, а не вложенных? – Stickers

ответ

1

Это основано на вашей скрипке обновления, так как это не так ясно, что вы хотите достичь, но вы упомянули этот пример был близок, я сделал свою ссылку, чтобы быть выше z-index так что кликабельны:

Check external Fiddle, embedded seems to break bottom

+0

Вы можете проверить здесь: https://jsfiddle.net/Syden/n725s1nq/1/, так как фрагмент помешает внизу. – Syden

+0

Спасибо, попробуем использовать это в моем проекте. Да, идея состоит в том, что второй div - это меню, а розовый блок - это своего рода выпадающее меню. И это выпадающее меню должно попасть в нижнюю часть экрана. Но второй блок отделен от вершины дополнительным блоком. Похоже, мне нужно установить позицию: по отношению ко всему содержимому страницы.Так как второй div - это почти полный экран. – Mike

0

body > div { height: 100px; } 
 

 
.first { background: lightblue; } 
 

 
.second { 
 
    background-color: lightgreen; 
 
    top: 100px; 
 
} 
 

 
.second >div { 
 
    background: pink; 
 
    width: 50%; 
 
    height: 100%; 
 
}
<div class="first">The height of the block may vary greately.</div> 
 
<div class="second"> 
 
    <div>This DIV should take whole free space to the bottom of the screen.</div> 
 
</div>

+0

Я бы просто избегал абсолютных как можно больше. – jmag

+0

Спасибо за ваше время и силы, но, извините, это не то, что мне нужно. – Mike

 Смежные вопросы

  • Нет связанных вопросов^_^