代码之家  ›  专栏  ›  技术社区  ›  CodeThing

用于创建动画渐变按钮背景的css

  •  2
  • CodeThing  · 技术社区  · 7 年前

    我在找一个 CSS 可以创建 CSS 动画 button's colored gradient background 是的。

    我只是想玩玩它然后做了这个: https://codepen.io/prashant-nadsoftdev/pen/bKzOrB 是的。

    .custom-btn {
      background: linear-gradient(105deg, #f6d365, #fda085, #f6d365, #ff2400, #e81d1d, #e8b71d, #e3e81d, #1de840, #1ddde8, #2b1de8, #dd00f3, #dd00f3);
      background-size: 200% 200%;
      -webkit-animation: rainbow 5s ease infinite;
      -z-animation: rainbow 5s ease infinite;
      -o-animation: rainbow 5s ease infinite;
      animation: rainbow 5s ease infinite alternate;
      border: 0;
      padding: 25px;
      font-size: 40px;
      color: #fff;
    }
    @-webkit-keyframes rainbow {
      0%{background-position:0% 100%}
      100%{background-position:100% 0%}
    }
    @-moz-keyframes rainbow {
      0%{background-position:0% 100%}
      100%{background-position:100% 0%}
    }
    @-o-keyframes rainbow {
      0%{background-position:0% 100%}
      100%{background-position:100% 0%}
    }
    @keyframes rainbow { 
      0%{background-position:0% 100%}
      100%{background-position:100% 0%}
    }
    <body style="text-align:center;">
      <button class="custom-btn">My Button</button>
    </body>

    我需要颜色在一个方向上一个接一个(从左到右)。我的代码很接近,但我仍然需要两件事:

    1. 方向不对(换颜色时需要完全相反的方向)。
    2. 它不应该停止。在最后一种颜色之后,它应该取第一种颜色,然后继续。
    1 回复  |  直到 7 年前
        1
  •  3
  •   mfluehr fermar    7 年前

    要使渐变动画在一个方向上无限重复,您需要做的主要事情是调整渐变中的颜色停止:

    1. 重复你的梯度停止两次。(这使渐变的结尾看起来像开始,允许在动画的每个重复之间平滑过渡。)
    2. 重复你的第一次梯度停止在最后。(这使得最后一站与第一站混合。)

    您还需要调整关键帧,使它们朝您想要的方向移动(请参见下面的代码)。

    .custom-btn {
      background: linear-gradient(105deg,
        /* Base gradient stops */
        #f6d365, #fda085, #f6d365, #ff2400, #e81d1d, #e8b71d, #e3e81d, #1de840, #1ddde8, #2b1de8, #dd00f3, #dd00f3,
        /* Repeat your base gradient stops */
        #f6d365, #fda085, #f6d365, #ff2400, #e81d1d, #e8b71d, #e3e81d, #1de840, #1ddde8, #2b1de8, #dd00f3, #dd00f3,
        /* Repeat your first gradient stop */
        #f6d365);
      
      background-size: 200% 200%;
      animation: rainbow 5s linear infinite;
      border: 0;
      padding: 25px;
      font-size: 40px;
      color: #fff;
    }
    
    @keyframes rainbow {
        0% { background-position: 100% 100% }
      100% { background-position: 0% 0% }
    }
    <body style="text-align:center;">
      <button class="custom-btn">My Button</button>
    </body>