推荐阅读
当需要某个元素平滑滚动到顶部时,我们会使用:
targetElement.scrollIntoView({ behavior: 'smooth' })
然而,当我们有一个固定的头部时,这样就有问题了——元素确实滚动到顶部了,可是,被头部遮挡了。
这时候,我们就需要 css 的 scroll-margin 来帮忙了。
/* css */
targetElement {
/* 假设头部的高度为 40px */
scroll-margin: 40px;
}
这时候再调用 element.scrollIntoView
,element
会自动停到距离顶部 40px
(上面声明的值)的位置,问题解决。
以下内容需要配合 scroll-snap-type 使用,建议先了解 scroll-snap-type。
下面的各个属性,建议直接浏览对应的 MDN 文档,毕竟人家还有在线 demo。
看名字就知道,scroll-margin
用于目标元素上,指示元素滚动到目标位置且保留 "margin"
。我们看到 margin
就会想到 padding
,确实,还有 scroll-padding
。scroll-padding
如其名,用于滚动容器上。
我们知道,当我们的滚动容器设置 scroll-snap-type
为 mandatory
时1,滚动起来就像轮播一样,会“吸附”。这时候我们在滚动容器上定义一个 scroll-padding
,效果就如同在子元素上定义了 scroll-margin
一样了。
当 scroll-snap-type
为 mandatory
且子级为表现为 inline
时,使用 scroll-x-inline
,即:
scroll-margin-inline
scroll-padding-inline
当 scroll-snap-type
为 mandatory
且子级为表现为 block
时,使用 scroll-x-block
,即:
scroll-margin-block
scroll-padding-block
子元素需要设置 scroll-snap-align
↩
如非特别声明,本站作品均为原创,遵循【自由转载-保持署名-非商用-非衍生 创意共享 3.0 许可证】。
对于转载作品,如需二次转载,请遵循原作许可。