Как применить position:sticky при flex-direction:column-reverse?

.wrap {
  width: 100%;
  height: 200px;
  overflow-y: auto;
  border: 1px solid red;
  display: flex;
  flex: 1;
  flex-direction: column;
}

#toggle:checked ~ .wrap {
  flex-direction: column-reverse;
}

.elem {
  border: 1px solid purple;
  padding: 1rem;
}

.sticky {
  position: sticky;
  bottom: 0;
  top: 0;
  background-color: green;
}
<input id="toggle" type="checkbox" checked>
<label for="toggle">flex-direction: column-reverse;</label>
<div class="wrap">
  <div class="elem">1</div>
  <div class="elem">2</div>
  <div class="elem">3</div>
  <div class="elem">4</div>
  <div class="elem">5</div>
  <div class="elem">6</div>
  <div class="elem">7</div>
  <div class="elem">8</div>
  <div class="elem">9</div>
  <div class="elem sticky">10</div>
  <div class="elem">11</div>
  <div class="elem">12</div>
  <div class="elem">13</div>
  <div class="elem">14</div>
  <div class="elem">15</div>
  <div class="elem">16</div>
  <div class="elem">17</div>
  <div class="elem">18</div>
  <div class="elem">19</div>
  <div class="elem">20</div>
</div>


Ответы (1 шт):

Автор решения: Air

Предлагаю такое решение вопроса

.wrap {
  width: 100%;
  height: 200px;
  overflow-y: auto;
  border: 1px solid red;
  display: flex;
  flex-direction: column;
}

#toggle:checked~.elem:nth-child(20) {
  order: 1;
}

#toggle:checked~.elem:nth-child(19) {
  order: 2;
}

#toggle:checked~.elem:nth-child(18) {
  order: 3;
}

#toggle:checked~.elem:nth-child(17) {
  order: 4;
}

#toggle:checked~.elem:nth-child(16) {
  order: 5;
}

#toggle:checked~.elem:nth-child(15) {
  order: 6;
}

#toggle:checked~.elem:nth-child(14) {
  order: 7;
}

#toggle:checked~.elem:nth-child(13) {
  order: 8;
}

#toggle:checked~.elem:nth-child(12) {
  order: 9;
}

#toggle:checked~.elem:nth-child(11) {
  order: 10;
}

#toggle:checked~.elem:nth-child(10) {
  order: 11;
}

#toggle:checked~.elem:nth-child(9) {
  order: 12;
}

#toggle:checked~.elem:nth-child(8) {
  order: 13;
}

#toggle:checked~.elem:nth-child(7) {
  order: 14;
}

#toggle:checked~.elem:nth-child(6) {
  order: 15;
}

#toggle:checked~.elem:nth-child(5) {
  order: 16;
}

#toggle:checked~.elem:nth-child(4) {
  order: 17;
}

#toggle:checked~.elem:nth-child(3) {
  order: 18;
}

#toggle:checked~.elem:nth-child(2) {
  order: 19;
}

#toggle:checked~.elem:nth-child(1) {
  order: 20;
}

.elem {
  border: 1px solid purple;
  padding: 1rem;
}

.sticky {
  position: sticky;
  bottom: 0;
  top: 0;
  background-color: green;
}
<label for="toggle">flex-direction: column-reverse;</label>
<div class="wrap">
  <input id="toggle" type="checkbox" checked />
  <div class="elem">1</div>
  <div class="elem">2</div>
  <div class="elem">3</div>
  <div class="elem">4</div>
  <div class="elem">5</div>
  <div class="elem">6</div>
  <div class="elem">7</div>
  <div class="elem">8</div>
  <div class="elem">9</div>
  <div class="elem sticky">10</div>
  <div class="elem">11</div>
  <div class="elem">12</div>
  <div class="elem">13</div>
  <div class="elem">14</div>
  <div class="elem">15</div>
  <div class="elem">16</div>
  <div class="elem">17</div>
  <div class="elem">18</div>
  <div class="elem">19</div>
  <div class="elem">20</div>
</div>

→ Ссылка