scroll-snap-align

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2020 年 1 月⁩ 起,所有主流浏览器均已支持。

scroll-snap-align 属性将盒子的对齐位置指定为其 对齐区域(作为对齐主题)在其滚动容器的对齐端口(作为对齐容器)中的对齐方式。

试一试

scroll-snap-align: start;
scroll-snap-align: end;
scroll-snap-align: center;
<section class="default-example" id="default-example">
  <div id="example-parent">
    <div>1</div>
    <div id="example-element">2</div>
    <div>3</div>
  </div>
  <div class="info">Scroll »</div>
</section>
.default-example {
  flex-wrap: wrap;
}

.default-example .info {
  width: 100%;
  padding: 0.5em 0;
  font-size: 90%;
}

#example-parent {
  text-align: left;
  width: 250px;
  height: 250px;
  overflow-x: scroll;
  display: flex;
  box-sizing: border-box;
  border: 1px solid black;
  scroll-snap-type: x mandatory;
}

#example-parent > div {
  flex: 0 0 66%;
  width: 250px;
  background-color: rebeccapurple;
  color: white;
  font-size: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
}

#example-parent > div:nth-child(even) {
  background-color: white;
  color: rebeccapurple;
}

语法

css
/* Single keyword value */
scroll-snap-align: none;
scroll-snap-align: center;
scroll-snap-align: start;
scroll-snap-align: end;

/* Two keyword values */
scroll-snap-align: start end;
scroll-snap-align: end center;
scroll-snap-align: center start;

/* Global values */
scroll-snap-align: inherit;
scroll-snap-align: initial;
scroll-snap-align: revert;
scroll-snap-align: revert-layer;
scroll-snap-align: unset;

scroll-snap-align 属性可以指定一个或两个值。如果设置一个值,则将其应用于块轴和行内轴。如果设置两个值,则第一个值控制块轴,第二个值控制行内轴。

none

此盒子在该轴上不定义对齐位置。

start

此盒子的滚动对齐区域的起始对齐方式,在滚动容器的对齐视口中,是该轴上的一个对齐位置。

end

此盒子的滚动对齐区域的结束对齐方式,在滚动容器的对齐视口中,是该轴上的一个对齐位置。

center

此盒子的滚动对齐区域的中心对齐方式,在滚动容器的对齐视口中,是该轴上的一个对齐位置。

正式定义

初始值none
应用于所有元素
继承性
计算值同指定值
动画类型离散

正式语法

scroll-snap-align = 
[ none | start | end | center ]{1,2}

规范

规范
CSS 滚动捕捉模块级别 1
# scroll-snap-align

浏览器兼容性

另见