You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅用HTML和CSS实现TikTok式视频滚动吸附效果?

仅用HTML和CSS实现全屏视频列表的滚动吸附效果

完全可以实现!借助CSS原生的滚动吸附属性,就能做出类似TikTok或YouTube Shorts的滚动停驻效果,全程不需要JavaScript。

修改后的完整代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Videos</title>
    <style>
        body {
            background-color: #090909;
            margin: 0;
            padding: 0;
            /* 设置垂直方向强制滚动吸附 */
            scroll-snap-type: y mandatory;
            overflow-y: scroll;
            height: 100vh;
        }
        .videos {
            height: 100%;
        }
        .video-box {
            display: flex;
            align-items: center;
            justify-content: center;
            /* 每个视频容器占满视口高度 */
            height: 100vh;
            /* 吸附对齐到容器顶部 */
            scroll-snap-align: start;
            /* 禁止滚动跳过容器 */
            scroll-snap-stop: always;
        }
        .video-box video {
            box-sizing: border-box;
            padding: 8px;
            max-height: 100vh;
            max-width: 100%;
        }
    </style>
</head>
<body>
    <section class="videos">
        <div class="video-box">
            <video preload="none" poster="vert1.png" autoplay muted loop playsinline>
                <source src="vert1.mp4" type="video/mp4">
            </video>
        </div>
        <div class="video-box">
            <video preload="none" poster="vert2.png" autoplay muted loop playsinline>
                <source src="vert2.mp4" type="video/mp4">
            </video>
        </div>
        <div class="video-box">
            <video preload="none" poster="vert1.png" autoplay muted loop playsinline>
                <source src="vert1.mp4" type="video/mp4">
            </video>
        </div>
        <div class="video-box">
            <video preload="none" poster="vert2.png" autoplay muted loop playsinline>
                <source src="vert2.mp4" type="video/mp4">
            </video>
        </div>
    </section>
</body>
</html>

核心CSS属性解析

  • scroll-snap-type: y mandatory:给滚动容器(这里是body)开启垂直方向的强制吸附,滚动时会自动对齐到最近的吸附点。
  • scroll-snap-align: start:指定每个视频容器的顶部与滚动容器的顶部对齐,保证视频全屏展示时的停驻效果。
  • scroll-snap-stop: always:防止滚动时跳过任意一个视频容器,确保每次滚动只停在一个完整的视频页面上。
  • .video-box设置height: 100vh:让每个视频容器占满整个视口高度,实现单屏一个视频的布局。

兼容性说明

这套方案兼容所有现代浏览器(Chrome、Firefox、Safari、Edge),无需担心兼容性问题。

内容的提问来源于stack exchange,提问作者Marcin Wróblewski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 15:20:22