首页 > 其他分享 >css实现向上滚动动画

css实现向上滚动动画

时间:2023-06-13 10:12:17浏览次数:31  
标签:opacity 动画 滚动 top 140px animation 0% 0px css

<!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>Document</title>
    <style>
      body {
        background: #f6f6f6;
      }

      .box {
        position: relative;
      }

      .r1,
      .r2,
      .r3 {
        display: flex;
        align-items: center;
        margin-top: 10px;
        /* 无限循环动画 */
        animation-iteration-count: infinite;
        /* 进入页面时停顿一秒才开始执行动画(更符合需求) */
        animation-delay: 1s;
      }

      .r1 {
        margin-top: 0;
        animation-name: r1Fn;
        animation-duration: 10s;
        position: relative;
      }

      .r2 {
        animation-name: r2Fn;
        animation-duration: 10s;
        position: relative;
      }

      .r3 {
        animation-name: r3Fn;
        animation-duration: 10s;
        position: relative;
      }

      .item {
        /* 高度 130 + marginTop: 10 = 140, 后续 如果元素高度修改,可从 百分比 100%往前根据规律修改 */
        width: 340px;
        height: 130px;
        background: #fff;
        border-radius: 4px;
        text-align: center;
        line-height: 130px;
      }

      .item:not(:first-child) {
        margin-left: 10px;
      }

      /*
      帧动画逻辑:
      一:
      0%起始状态、位置
      消失
      不变化
      在末行显示出来
      不变化
      上
      不变化
      不变化
      上
      100%不变化


      二:
      0%起始状态、位置
      不变化
      上
      不变化
      消失
      不变化
      在末行显示出来
      不变化
      上
      不变化

      三:
      0%起始状态、位置
      不变化
      上
      不变化
      不变化
      上
      不变化
      消失
      不变化
      在末行显示出来

      三行各自共9帧动画,每帧间隔:100 / 9 = 10%。
    */
      @keyframes r1Fn {
        0% {
          opacity: 1;
          top: 0px;
        }

        11.11% {
          opacity: 0;
          top: 0px;
        }

        22.22% {
          opacity: 0;
          top: 0px;
        }
        /* 在隐藏的状态下位移到下一次出现的位置的下方80px,以制造上移显示效果(如果要消除位移效果,就设为出现的坐标点) */
        22.23% {
          opacity: 0;
          top: 360px;
        }

        33.33% {
          opacity: 1;
          top: 280px;
        }

        44.44% {
          opacity: 1;
          top: 280px;
        }

        55.55% {
          opacity: 1;
          top: 140px;
        }

        66.66% {
          opacity: 1;
          top: 140px;
        }

        77.77% {
          opacity: 1;
          top: 140px;
        }

        88.88% {
          opacity: 1;
          top: 0px;
        }

        100% {
          opacity: 1;
          top: 0px;
        }
      }

      @keyframes r2Fn {
        0% {
          opacity: 1;
          top: 0px;
        }

        11.11% {
          opacity: 1;
          top: 0px;
        }

        22.22% {
          opacity: 1;
          top: -140px;
        }

        33.33% {
          opacity: 1;
          top: -140px;
        }

        44.44% {
          opacity: 0;
          top: -140px;
        }

        55.55% {
          opacity: 0;
          top: -140px;
        }

        55.56% {
          opacity: 0;
          /* 在隐藏的状态下位移到下一次出现的位置的下方80px,以制造上移显示效果(如果要消除位移效果,就设为出现的坐标点) */
          top: 220px;
        }

        66.66% {
          opacity: 1;
          top: 140px;
        }

        77.77% {
          opacity: 1;
          top: 140px;
        }

        88.88% {
          opacity: 1;
          top: 0px;
        }

        100% {
          opacity: 1;
          top: 0px;
        }
      }

      @keyframes r3Fn {
        0% {
          opacity: 1;
          top: 0px;
        }

        11.11% {
          opacity: 1;
          top: 0px;
        }

        22.22% {
          opacity: 1;
          top: -140px;
        }

        33.33% {
          opacity: 1;
          top: -140px;
        }

        44.44% {
          opacity: 1;
          top: -140px;
        }

        55.55% {
          opacity: 1;
          top: -280px;
        }

        66.66% {
          opacity: 1;
          top: -280px;
        }

        77.77% {
          opacity: 0;
          top: -280px;
        }

        88.88% {
          opacity: 0;
          top: -280px;
        }

        88.89% {
          opacity: 0;
          /* 在隐藏的状态下位移到下一次出现的位置的下方80px,以制造上移显示效果(如果要消除位移效果,就设为出现的坐标点) */
          top: 80px;
        }

        100% {
          opacity: 1;
          top: 0px;
        }
      }
    </style>
  </head>

  <body>
    <div class="box">
      <div class="r1">
        <div class="item">1</div>
        <div class="item">2</div>
        <div class="item">3</div>
      </div>
      <div class="r2">
        <div class="item">4</div>
        <div class="item">5</div>
        <div class="item">6</div>
      </div>
      <div class="r3">
        <div class="item">7</div>
        <div class="item">8</div>
        <div class="item">9</div>
      </div>
    </div>
  </body>
</html>

 

标签:opacity,动画,滚动,top,140px,animation,0%,0px,css
From: https://www.cnblogs.com/rachelch/p/17476719.html

相关文章

  • antd 5.0 定制主题如此酷炫,我决定开启 @ant-design/cssinjs 阅读之旅
    前言antd5.0正式发布已经有一段时间了,发布当天,一心二用的看完直播。很喜欢整个设计,有种简约快乐工作的感觉,某些功能设计初衷也给了我一些启发。antd5.0提供的主题定制挺酷炫的,加之我最近对「CSS-in-JS」很感兴趣。于是迫不及待的打开了它的源码,准备研究一番。我大部分情况下都......
  • 弹性动画
    制作原理:绘制基本图形+万能弹性公式1、摄像机 2、射箭 3、时钟 ......
  • 转场动画
    1、通过矩形+蒙版,构成简单的转场。 2、通过色条的错位,时间轴的设置,构成基本的转场。 3、通过图形的放大缩小之间的转换及图形的基本错位,构成基本的转场。4、通过图形+蒙版,构成基本的转场。 ......
  • 前端-CSS生成器
    按钮https://uiverse.io/buttons有好看的button、卡片、输入框等https://markodenic.com/tools/buttons-generator/玻璃态https://hype4.academy/tools/glassmorphism-generator调色板https://mycolor.space/滚动条https://scrollbar.jason-liang.com/......
  • element table表格 滚动条错位
    可能是element的版本的原因element官网上el-table在header中会生成一个class名为gutter的th元素,并设置宽度为滚动条的宽度进行占位,但目前使用版本并未生成此元素手动修改tableheader样式就可以了.el-table--scrollable-y{ .el-table__header-wrapper{  .el-tabl......
  • 前端vue可以左右滚动的切换的tabs tabs选项卡 滑动动画效果 自动宽度
    前端vue可以左右滚动的切换的tabstabs选项卡滑动动画效果自动宽度, 下载完整代码请访问https://ext.dcloud.net.cn/plugin?id=13003效果图如下:     ####使用方法```使用方法swiperTabList:["2023-06-10","2023-06-11","2023-06-12","2023-06-13","20......
  • vue实现简单的鼠标拖拽横向滚动 和 鼠标滚轮横向滚动
    一.鼠标拖拽滚动以下代码项目中直接使用即可,此种方法是通过鼠标拖拽进行滚动,滑动滚轮无效果。当然快捷键,shift+鼠标滚轮可以控制横向滚动,对用户来说体验不友好。<divclass="tab-listid="nav"><divclass="tab-item"v-for="(item,index)inlist":key=""></div></d......
  • 直播系统搭建,vue插件之vue-seamless-scroll 无缝滚动
    直播系统搭建,vue插件之vue-seamless-scroll无缝滚动使用 importvueSeamlessScrollfrom'vue-seamless-scroll' //注册组件 components:{  vueSeamlessScroll}  //template  <vue-seamless-scroll:data="Top10GatewayLog":class-option="optionSingleHeigh......
  • CSS(精灵图、字体图标、三角、用户界面样式、vertical-align、溢出省略号、常用布局技
    一.精灵图(重点)1.1为什么需要精灵图一个网页中往往会应用很多小的背景图像作为修饰,当网页中的图像过多时,服务器就会频繁地接收和发送请求图片,造成服务器请求压力过大,这将大大降低页面的加载速度。为什么使用精灵图(目的):·为了有效地减少服务器接收和发送请求的次数,提高......
  • 你不知道的 CSS 居中方案
    水平居中内联元素要使内联元素(如链接,span或img)居中,使用text-align:center足够了。<divclass="desk"><spanclass="plate"></span></div>.desk{text-align:center;} 对于多个内联元素,也可以使用text-align:center:<divclass="desk">......