为什么 position:sticky 和 left:0 不能在可滚动容器中工作?
Why isn't position:sticky with left:0 working inside a scrollable container?
我有这个问题 - 我有一个包含一些行的容器,并且在每一行中都有一个粘性左列,然后是多个其他列。现在在下面的示例中,这会工作一段时间,但是当您滚动父容器时,粘性位置不再起作用,并且会在您滚动时被推动。
.container {
overflow-x: scroll;
}
.row {
display: flex;
width: 100%;
}
.item {
min-width: 173px;
}
.sticky {
min-width: 250px;
position: sticky;
left: 0;
background: red;
}
<div class="container">
<div class="row">
<div class="item sticky">STICKY ROW 1</div>
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
<div class="item">10</div>
</div>
<div class="row">
<div class="item sticky">STICKY ROW 2</div>
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
<div class="item">10</div>
</div>
<div class="row">
<div class="item sticky">STICKY ROW 3</div>
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
<div class="item">10</div>
</div>
</div>
有什么方法可以解决这个问题..或者有其他方法可以解决这个问题吗?
我想要的结果是能够将粘性 div 粘在左侧 0
并让其他列在下方滚动..
现在我知道如果 overflow-x: scroll
在实际的 .row
元素上它会按预期工作..但我可能有 100 多行所以滚动需要在父容器上
添加边框以更好地查看与使用块级元素和 width:100%
限制相关的问题(不是您设置的无用的,而是块元素的默认行为)
.container {
overflow-x: scroll;
}
.row {
display: flex;
border:1px solid;
}
.item {
min-width: 173px;
}
.sticky {
min-width: 250px;
position: sticky;
left: 0;
background: red;
}
<div class="container">
<div class="row">
<div class="item sticky">STICKY ROW 1</div>
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
<div class="item">10</div>
</div>
<div class="row">
<div class="item sticky">STICKY ROW 2</div>
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
<div class="item">10</div>
</div>
<div class="row">
<div class="item sticky">STICKY ROW 3</div>
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
<div class="item">10</div>
</div>
</div>
考虑使用 inline-flex
的内联关卡元素来解决问题。如果内容很小,请添加 min-width:100%
以确保至少覆盖 100%
的宽度。
.container {
overflow-x: scroll;
}
.row {
display: inline-flex;
min-width: 100%;
border:1px solid;
}
.item {
min-width: 173px;
}
.sticky {
min-width: 250px;
position: sticky;
left: 0;
background: red;
}
<div class="container">
<div class="row">
<div class="item sticky">STICKY ROW 1</div>
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
<div class="item">10</div>
</div>
<div class="row">
<div class="item sticky">STICKY ROW 2</div>
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
<div class="item">10</div>
</div>
<div class="row">
<div class="item sticky">STICKY ROW 3</div>
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
<div class="item">10</div>
</div>
</div>
一些相关问题:
我有这个问题 - 我有一个包含一些行的容器,并且在每一行中都有一个粘性左列,然后是多个其他列。现在在下面的示例中,这会工作一段时间,但是当您滚动父容器时,粘性位置不再起作用,并且会在您滚动时被推动。
.container {
overflow-x: scroll;
}
.row {
display: flex;
width: 100%;
}
.item {
min-width: 173px;
}
.sticky {
min-width: 250px;
position: sticky;
left: 0;
background: red;
}
<div class="container">
<div class="row">
<div class="item sticky">STICKY ROW 1</div>
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
<div class="item">10</div>
</div>
<div class="row">
<div class="item sticky">STICKY ROW 2</div>
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
<div class="item">10</div>
</div>
<div class="row">
<div class="item sticky">STICKY ROW 3</div>
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
<div class="item">10</div>
</div>
</div>
有什么方法可以解决这个问题..或者有其他方法可以解决这个问题吗?
我想要的结果是能够将粘性 div 粘在左侧 0
并让其他列在下方滚动..
现在我知道如果 overflow-x: scroll
在实际的 .row
元素上它会按预期工作..但我可能有 100 多行所以滚动需要在父容器上
添加边框以更好地查看与使用块级元素和 width:100%
限制相关的问题(不是您设置的无用的,而是块元素的默认行为)
.container {
overflow-x: scroll;
}
.row {
display: flex;
border:1px solid;
}
.item {
min-width: 173px;
}
.sticky {
min-width: 250px;
position: sticky;
left: 0;
background: red;
}
<div class="container">
<div class="row">
<div class="item sticky">STICKY ROW 1</div>
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
<div class="item">10</div>
</div>
<div class="row">
<div class="item sticky">STICKY ROW 2</div>
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
<div class="item">10</div>
</div>
<div class="row">
<div class="item sticky">STICKY ROW 3</div>
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
<div class="item">10</div>
</div>
</div>
考虑使用 inline-flex
的内联关卡元素来解决问题。如果内容很小,请添加 min-width:100%
以确保至少覆盖 100%
的宽度。
.container {
overflow-x: scroll;
}
.row {
display: inline-flex;
min-width: 100%;
border:1px solid;
}
.item {
min-width: 173px;
}
.sticky {
min-width: 250px;
position: sticky;
left: 0;
background: red;
}
<div class="container">
<div class="row">
<div class="item sticky">STICKY ROW 1</div>
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
<div class="item">10</div>
</div>
<div class="row">
<div class="item sticky">STICKY ROW 2</div>
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
<div class="item">10</div>
</div>
<div class="row">
<div class="item sticky">STICKY ROW 3</div>
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
<div class="item">10</div>
</div>
</div>
一些相关问题: