Relative position disables sticky position of sibling element CSS

Viewed 94

I make a game for a project that you must find the real neighbours of a country. I have this HTML code:

.game-panel {
  gap: 10px;
  display: grid;
  grid-template-columns: 200px auto;
  grid-template-rows: 5.5em 22px auto;
  gap: 10px;
  grid-template-areas: "side main" "side main2" "side main3";
}

#sidebar {
  width: 200px;
  border-radius: 5px;
  background-color: #ff1493;
  display: flex;
  grid-area: side;
  flex-direction: column;
  z-index: 100;
}

#playing-country {
  display: flex;
  border-radius: 5px;
  background-color: #708090;
  grid-area: main;
}

#progress {
  -webkit-appearance: none;
  display: flex;
  position: sticky;
  top: 0;
  height: 24px;
  grid-area: main2;
  height: 24px;
  border: 1px solid #ccc;
  color: #aaa;
  width: 100%;
  border-radius: 5px;
  z-index: 102;
}

#progress[value]::-webkit-progress-bar {
  background: #f1f1f1;
}

#progress[value]::-webkit-progress-value {
  background: blue;
}

#neighbours-panel {
  border-radius: 5px;
  grid-area: main3;
  display: flex;
  flex-shrink: 1;
  background-color: #fff;
}

.overlay {
  position: absolute;
  padding: 0 !important;
  margin: 0 !important;
  background-color: rgba(136, 132, 132, 0.5);
}
<div class="game-panel">
  <div id='sidebar'>
    <h3>Βρες τους γείτονες</h3>
    <div id="round">Γύρος: <span id='round-text'>0</span></div>
    <div id="score">Σκορ: <span id='score-text'>0</span></div>
    <button id="btn-next-round"><span>Επόμενη χώρα</span></button>
    <button id="btn-new-game"><span>Νέο παιχνίδι</span></button>
  </div>

  <div id="playing-country">playing-country</div>

  <progress id='progress' max='100' value='0'></progress>

  <div id='neighbours-panel'>

  </div>
</div>

In the #neighbours-panel I dynamically create divs with country choices and when I click the right ones, a semi-transparent div with overlay class is created inside the #neighbours-panel that covers only the #neighbours-panel with the countries. To do this I add position:relative; to the parent #neighbours-panel and position:absolute; to the newly created overlay div. The #progress must be sticky on the top of the page when scroll down. The problem is that with position:relative; on the #neighbours-panel in order to work properly the overlay, the position:sticky; of the #progress is disabled. If I remove position:relative; then the sticky position works as it should but then the overlay div covers the whole page and not only the #neighbours-panel as it should. Can anyone help me find out what to do?

0 Answers
Related