📜  颤动滚动到结束 (1)

📅  最后修改于: 2023-12-03 15:28:56.539000             🧑  作者: Mango

颤动滚动到结束

如果你是一位程序员,你一定经历过让用户等待的尴尬情境。为解决这个问题,我们通常会加入一个进度条来让用户知道程序正在运行,但是,仅有进度条还不能完全解决问题。因为一些运行时间较长的程序,进度条也会让用户感到乏味,需要更加丰富有趣的交互设计。

这时,颤动滚动至结束(Shake & Scroll Till Done)这一设计模式应运而生,它可以为用户提供更好的交互体验。

首先我们考虑一个标准的进度条与传统的等待界面交互。一般情况下一个进度条由一个或多个矩形组成,动态改变矩形的长度或宽度,从而表现出进度值的变化。这种方式实际上是不够精彩的,因为它仅仅是单调的从左到右、从上到下的动画,并没有给用户提供任何额外的信息。

现在我们就可以尝试一种新的交互方式——颤动滚动到结束。这种方式不仅可以提示用户程序正在运行,同时也可以通过颤动和滚动的动画方式对操作过程进行描述。

下面是一个使用CSS和HTML实现颤动滚动到结束动画效果的代码片段:

<!DOCTYPE html>
<html>
  <head>
    <title>Shake & Scroll Till Done</title>
    <style>
      @keyframes shake {
        10%, 90% {
          transform: translateX(-10px);
        }
      
        20%, 80% {
          transform: translateX(10px);
        }
      
        30%, 50%, 70% {
          transform: translateX(-10px);
        }
      
        40%, 60% {
          transform: translateX(10px);
        }
      }

      .progress {
        background-color: #f5f5f5;
        border-radius: 13px;
        height: 26px;
        overflow: hidden;
        width: 100%;
      }

      .progress-bar {
        animation: shake 2s linear infinite;
        background-color: #5cb85c;
        height: 100%;
        transition: width 0.5s ease-in-out;
      }
    </style>
  </head>
  <body>
    <div class="progress">
      <div class="progress-bar"></div>
    </div>
  </body>
</html>

在这段代码中,我们首先定义了一个名为“shake”的关键帧动画,通过连续的变化实现颤动的效果。接下来,我们创建了一个进度条容器,其中包含了一个进度条元素。我们将进度条元素的宽度属性从0%到100%的变换改变为0%到85%,以模拟程序的运行过程。最后我们添加了 .progress-bar 元素的过渡属性,使进度条元素变化更加平滑。

通过这种交互方式,不仅可以让用户更好地了解程序的运行状态,同时也可以通过动画和颤动的形式使等待过程更加生动和有趣。

参考文献:

  • https://www.smashingmagazine.com/2017/12/shake-scroll-till-done-current-state-user-experience-animation-2018/
  • https://www.sitepoint.com/10-css3-text-animation-snippets/