基于 Vue 和 CSS 实现的垂直滚动效果

本文档简要介绍了如何通过 Vue.jsCSS 动画 实现一个带有垂直滚动效果的组件,并通过在动画中插入停顿,模拟类似翻页的效果。

1. Vue 组件结构

1.1 模板部分 (<template>)
html 复制代码
<template>
  <div class="line1 flex">
    <div class="scroll-container">
      <div class="flex">
        <Icon name="8888" value="0000" />
        <Icon name="8888" value="0000" />
      </div>
      <div class="flex">
        <Icon name="8888" value="1111" />
        <Icon name="8888" value="1111" />
      </div>
    </div>
    <div class="scroll-container">
      <div class="flex">
        <Icon name="8888" value="0000" />
        <Icon name="8888" value="0000" />
      </div>
      <div class="flex">
        <Icon name="8888" value="1111" />
        <Icon name="8888" value="1111" />
      </div>
    </div>
  </div>
</template>

要点

  • 使用 <Icon /> 组件显示滚动内容。
  • <div class="scroll-container"> 用于包裹滚动内容,执行滚动动画。
1.2 动画设置 (<style scoped>)
css 复制代码
.line1 {
  display: flex;
  flex-direction: column; /* 垂直排列 */
  overflow: hidden;
  height: 100px; /* 设置可视区域高度 */
}

.scroll-container {
  display: flex;
  flex-direction: column; 
  animation: translateY 5s infinite linear;
}

@keyframes translateY {
  0% {
    transform: translateY(0);
  }
  40% {
    transform: translateY(0); /* 停顿 */
  }
  50% {
    transform: translateY(-50%); /* 滚动至中间 */
  }
  90% {
    transform: translateY(-50%); /* 停顿 */
  }
  100% {
    transform: translateY(-100%); /* 滚动至顶部 */
  }
}

要点

  • @keyframes translateY:定义滚动动画,使用停顿阶段(如 40% 和 90%)来模拟翻页效果。
  • animation :通过 animation: translateY 5s infinite linear; 使得容器内的内容在 5 秒内实现平滑循环的垂直滚动。

2. 核心概念

2.1 垂直滚动效果

使用 @keyframes 实现垂直滚动,控制内容从当前位置平滑滚动到顶部并重复。

2.2 停顿效果

通过在关键帧中设置相同的 transform 值(如 40%90%)来插入停顿,让滚动过程更像翻页。

2.3 Flex 布局
  • flex-direction: column;:确保内容垂直排列。
  • overflow: hidden;:隐藏超出容器范围的部分,确保内容只在设定区域内显示。
相关推荐
庸俗今天不摸鱼13 分钟前
【万字总结】前端全方位性能优化指南(十)——自适应优化系统、遗传算法调参、Service Worker智能降级方案
前端·性能优化·webassembly
黄毛火烧雪下20 分钟前
React Context API 用于在组件树中共享全局状态
前端·javascript·react.js
Apifox31 分钟前
如何在 Apifox 中通过 CLI 运行包含云端数据库连接配置的测试场景
前端·后端·程序员
一张假钞33 分钟前
Firefox默认在新标签页打开收藏栏链接
前端·firefox
高达可以过山车不行34 分钟前
Firefox账号同步书签不一致(火狐浏览器书签同步不一致)
前端·firefox
m0_5937581035 分钟前
firefox 136.0.4版本离线安装MarkDown插件
前端·firefox
掘金一周38 分钟前
金石焕新程 >> 瓜分万元现金大奖征文活动即将回归 | 掘金一周 4.3
前端·人工智能·后端
三翼鸟数字化技术团队1 小时前
Vue自定义指令最佳实践教程
前端·vue.js
Jasmin Tin Wei1 小时前
蓝桥杯 web 学海无涯(axios、ecahrts)版本二
前端·蓝桥杯
圈圈编码2 小时前
Spring Task 定时任务
java·前端·spring