为什么在 css 中使用 position sticky 时我的元素没有粘在左边?
Why is my element not sticking to the left when using position sticky in css?
我想在垂直或水平滚动大 div 时使用粘滞位置将元素固定在屏幕的顶部和左侧。固定在顶部工作正常,但固定在左侧则不然。
这是我的 html 页面:
.sticky {
position: -webkit-sticky;
position: sticky;
left: 0;
top: 0;
}
.scroll-horizontally-and-vertically {
width: 4000px;
height: 2000px;
background-color: lightblue;
}
<div>
<div class="sticky">
<h1>please stick to top and left</h1>
</div>
<div class="scroll-horizontally-and-vertically"></div>
</div>
我也尝试单独使用 top 或 left,结果相同。
我一定是漏掉了什么。
为什么顶部位置是固定的,而左侧位置不是?
我应该如何修复页面以获得所需的行为?
Erit Vortstenbosch 欢迎来到社区。我已经检查了您的代码,它工作正常。
只需将 h1 标记的边距和填充设置为 0。
这是修改后的代码片段。
.sticky {
position: -webkit-sticky;
position: sticky;
left: 0;
top: 0;
}
.scroll-horizontally-and-vertically {
width: 4000px;
height: 2000px;
background-color: lightblue;
}
h1 {
padding: 0;
margin: 0;
}
<div>
<div class="sticky">
<h1>please stick to top and left</h1>
</div>
<div class="scroll-horizontally-and-vertically"></div>
</div>
粘性元素是另一个块级中的块级元素,因此如果它的父元素已经占据了 100% 的宽度,并且没有空间用于左粘性行为。
添加一些边框以更好地查看:
.sticky {
position: -webkit-sticky;
position: sticky;
left: 0;
top: 0;
border:2px solid green;
}
.scroll-horizontally-and-vertically {
width: 4000px;
height: 2000px;
background-color: lightblue;
}
<div style="border:2px solid red;">
<div class="sticky">
<h1>please stick to top and left</h1>
</div>
<div class="scroll-horizontally-and-vertically"></div>
</div>
绿色盒子只能卡在红色盒子里面,浅蓝色元素溢出来了。将inline-block
添加到粘性元素(以删除宽度 100% 约束)和父元素(因此它随浅蓝色元素一起增长),您将获得预期的结果
.sticky {
position: -webkit-sticky;
position: sticky;
left: 0;
top: 0;
border:2px solid green;
display:inline-block
}
.scroll-horizontally-and-vertically {
width: 4000px;
height: 2000px;
background-color: lightblue;
}
<div style="border:2px solid red;display:inline-block;">
<div class="sticky">
<h1>please stick to top and left</h1>
</div>
<div class="scroll-horizontally-and-vertically"></div>
</div>
我想在垂直或水平滚动大 div 时使用粘滞位置将元素固定在屏幕的顶部和左侧。固定在顶部工作正常,但固定在左侧则不然。 这是我的 html 页面:
.sticky {
position: -webkit-sticky;
position: sticky;
left: 0;
top: 0;
}
.scroll-horizontally-and-vertically {
width: 4000px;
height: 2000px;
background-color: lightblue;
}
<div>
<div class="sticky">
<h1>please stick to top and left</h1>
</div>
<div class="scroll-horizontally-and-vertically"></div>
</div>
我也尝试单独使用 top 或 left,结果相同。 我一定是漏掉了什么。
为什么顶部位置是固定的,而左侧位置不是? 我应该如何修复页面以获得所需的行为?
Erit Vortstenbosch 欢迎来到社区。我已经检查了您的代码,它工作正常。 只需将 h1 标记的边距和填充设置为 0。 这是修改后的代码片段。
.sticky {
position: -webkit-sticky;
position: sticky;
left: 0;
top: 0;
}
.scroll-horizontally-and-vertically {
width: 4000px;
height: 2000px;
background-color: lightblue;
}
h1 {
padding: 0;
margin: 0;
}
<div>
<div class="sticky">
<h1>please stick to top and left</h1>
</div>
<div class="scroll-horizontally-and-vertically"></div>
</div>
粘性元素是另一个块级中的块级元素,因此如果它的父元素已经占据了 100% 的宽度,并且没有空间用于左粘性行为。
添加一些边框以更好地查看:
.sticky {
position: -webkit-sticky;
position: sticky;
left: 0;
top: 0;
border:2px solid green;
}
.scroll-horizontally-and-vertically {
width: 4000px;
height: 2000px;
background-color: lightblue;
}
<div style="border:2px solid red;">
<div class="sticky">
<h1>please stick to top and left</h1>
</div>
<div class="scroll-horizontally-and-vertically"></div>
</div>
绿色盒子只能卡在红色盒子里面,浅蓝色元素溢出来了。将inline-block
添加到粘性元素(以删除宽度 100% 约束)和父元素(因此它随浅蓝色元素一起增长),您将获得预期的结果
.sticky {
position: -webkit-sticky;
position: sticky;
left: 0;
top: 0;
border:2px solid green;
display:inline-block
}
.scroll-horizontally-and-vertically {
width: 4000px;
height: 2000px;
background-color: lightblue;
}
<div style="border:2px solid red;display:inline-block;">
<div class="sticky">
<h1>please stick to top and left</h1>
</div>
<div class="scroll-horizontally-and-vertically"></div>
</div>