2017-02-13 1 views
0

Как говорится в названии: мне нужно, чтобы «информационный ящик» не фиксировался, когда головной убор и головной блок заблокированы.Как я могу получить положение дочернего элемента, не зафиксированного, даже если родительский элемент исправлен?

Я знаю, что это возможно. У меня есть живой пример: http://www.marktplaats.nl/. Оранжевый ящик фиксируется (головной убор), тогда белая часть (мой информационный ящик) не фиксируется. А заголовочный блок снова фиксируется («в голове»).

Это css и html, которые я использую прямо сейчас. Какую настройку нужно сделать, чтобы средний (белый) ящик не фиксировался?

#head-block{ 
 
\t width: 100%; 
 
\t height: auto; 
 
\t background: rgb(245,245,245); 
 
\t border: 1px solid grey; 
 
\t z-index: 1000; 
 
\t margin-top: 0px; 
 
} 
 

 
#head-box{ 
 
\t height: 5px; 
 
\t background: #37326a; 
 
} 
 

 
#info-box{ 
 
\t height: 50px; 
 
\t background: white; 
 
\t position: static; 
 
} 
 

 
#head-in-block{ 
 
\t width: 1100px; 
 
\t height: 60px; 
 
\t color: #37326a; 
 
\t text-align: left; 
 
\t margin: auto; 
 
\t padding: 10px; 
 
} 
 

 
.fixed{ 
 
\t position: fixed; 
 
}
<div id='head-block' class='fixed'> 
 
    <div id='head-box'></div> 
 
    <div id='info-box'></div> 
 
    <div id='head-in-block'> 
 
    </div> 
 
</div> 
 

 
<div style='height: 1500px;' id='content'> 
 
    
 
</div> 
 
Test

Marktplaats.nl

ли вы, ребята, смотрите на сайте эти же мне делать?

+0

, что это не возможно. Элементы ребенка всегда придерживаются позиционирования их родительского элемента. – Christoph

ответ

1

Веб-сайт, который вы связали, скрывает белый ящик, когда заголовок липкий. Таким образом, чтобы сделать это здесь, вы бы скрыть #info-box когда #head-block имеет класс .fixed

.fixed #info-box { 
    display: none; 
} 

#head-block{ 
 
\t width: 100%; 
 
\t height: auto; 
 
\t background: rgb(245,245,245); 
 
\t border: 1px solid grey; 
 
\t z-index: 1000; 
 
\t margin-top: 0px; 
 
} 
 

 
#head-box{ 
 
\t height: 5px; 
 
\t background: #37326a; 
 
} 
 

 
#info-box{ 
 
\t height: 50px; 
 
\t background: white; 
 
\t position: static; 
 
} 
 

 
#head-in-block{ 
 
\t width: 1100px; 
 
\t height: 60px; 
 
\t color: #37326a; 
 
\t text-align: left; 
 
\t margin: auto; 
 
\t padding: 10px; 
 
} 
 

 
.fixed{ 
 
\t position: fixed; 
 
} 
 
.fixed #info-box { 
 
    display: none; 
 
}
<div id='head-block' class='fixed'> 
 
    <div id='head-box'></div> 
 
    <div id='info-box'></div> 
 
    <div id='head-in-block'> 
 
    </div> 
 
</div> 
 

 
<div style='height: 1500px;' id='content'> 
 
    
 
</div> 
 
Test

+0

сейчас я вообще не вижу белую коробку? –

+0

_ «Я знаю, что это возможно. У меня есть живой пример: http://www.marktplaats.nl/."_ вы даже не видите белый ящик на этом сайте при прокрутке. –

+0

Липкие заголовки всегда выполняются с помощью javascript, вы не можете использовать только css-решение. Без дальнейшего изучения веб-сайта он может сказать вам, что у него есть обработчик событий scoll, который переключает расположение родительского поля и отображение белого поля в зависимости от того, насколько далеко вы прокручиваете. – Christoph