Как применить 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>