如果元素大于屏幕高度,不要使用粘性
Don't use sticky if element is larger than screen height
我有一个侧边栏,它位于 sticky
但在某些情况下大于屏幕的高度。
如果侧边栏实际上比屏幕高度大,我不希望它粘在顶部。它应该随着页面内容向下滚动。
我正在使用 Bootstraps sticky-top
class。
它具有以下属性:
.sticky-top {
position: sticky;
top: 0;
z-index: 1020;
}
我将 top: 0
更改为 top: 50px
,因为我需要上面的 space。
下面是一些示例代码:https://codepen.io/cray_code/pen/ZEaOXwo
<div class="container">
<div class="row">
<div class="col-lg-3">
<div class="toc sticky-top">
<nav class="list-group">
Links (see example)
</nav>
</div>
</div>
<div class="col-lg-9">
Content (see example)
</div>
</div>
</div>
我尝试了 here 的解决方案并将以下代码添加到我的 class:
.toc {
overflow-y: auto;
max-height: 100vh;
}
但这无济于事。
是否有纯粹的 CSS 解决方案,或者我是否需要使用 JavaScript?
不确定这是否是您想要的,但也许在您的 css 中使用 calc()
可以帮助您。
.toc{
overflow-y: auto;
max-height: calc(100vh - 50px);
}
希望这 pen 对您有所帮助
一些解释:
- 在 js 中我们使用
.offsetHeight
&.clientHeight
来获取高度我们检查天气这个高度 (493px
) + 50px
偏移量是否大于屏幕高度。
- 当屏幕尺寸较小时我们将位置设置为
static
- 我们还设置
margin-top: 50px
而不是 top: 50px
因为 top
仅适用于 sticky
而 margin-top
适用于 static
对于高于 window 高度的旁边块,您可以使用 smartSticky 脚本
只需将“data-smartsticky”属性添加到您的旁边块
https://www.npmjs.com/package/smartsticker
粘性块的父块高度必须为 100%,或者对于 flex - flex-grow:1
我有一个侧边栏,它位于 sticky
但在某些情况下大于屏幕的高度。
如果侧边栏实际上比屏幕高度大,我不希望它粘在顶部。它应该随着页面内容向下滚动。
我正在使用 Bootstraps sticky-top
class。
它具有以下属性:
.sticky-top {
position: sticky;
top: 0;
z-index: 1020;
}
我将 top: 0
更改为 top: 50px
,因为我需要上面的 space。
下面是一些示例代码:https://codepen.io/cray_code/pen/ZEaOXwo
<div class="container">
<div class="row">
<div class="col-lg-3">
<div class="toc sticky-top">
<nav class="list-group">
Links (see example)
</nav>
</div>
</div>
<div class="col-lg-9">
Content (see example)
</div>
</div>
</div>
我尝试了 here 的解决方案并将以下代码添加到我的 class:
.toc {
overflow-y: auto;
max-height: 100vh;
}
但这无济于事。
是否有纯粹的 CSS 解决方案,或者我是否需要使用 JavaScript?
不确定这是否是您想要的,但也许在您的 css 中使用 calc()
可以帮助您。
.toc{
overflow-y: auto;
max-height: calc(100vh - 50px);
}
希望这 pen 对您有所帮助
一些解释:
- 在 js 中我们使用
.offsetHeight
&.clientHeight
来获取高度我们检查天气这个高度 (493px
) +50px
偏移量是否大于屏幕高度。 - 当屏幕尺寸较小时我们将位置设置为
static
- 我们还设置
margin-top: 50px
而不是top: 50px
因为top
仅适用于sticky
而margin-top
适用于static
对于高于 window 高度的旁边块,您可以使用 smartSticky 脚本 只需将“data-smartsticky”属性添加到您的旁边块 https://www.npmjs.com/package/smartsticker 粘性块的父块高度必须为 100%,或者对于 flex - flex-grow:1