recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment créer une animation dégradée en utilisant CSS

Je souhaite déplacer mon dégradé avec plusieurs couleurs en douceur, mais le problème est que l'animation n'est pas fluide. Il change simplement de position à chaque étape.

<style>
  .animated {
    width: 300px;
    height: 300px;
    border: 1px solid black;
    animation: gra 5s infinite;
    animation-direction: reverse;
    -webkit-animation: gra 5s infinite;
    -webkit-animation-direction: reverse;
    animation-timing-function: linear;
    -webkit-animation-timing-function: linear;
  }
  
  @keyframes gra {
    0% {
      background: -webkit-gradient(linear, left top, right bottom, color-stop(0%, #ff670f), color-stop(21%, #ff670f), color-stop(56%, #ffffff), color-stop(88%, #0eea57));
      background: -webkit-linear-gradient(-45deg, #ff670f 0%, #ff670f 21%, #ffffff 56%, #0eea57 88%);
      background: linear-gradient(135deg, #ff670f 0%, #ff670f 21%, #ffffff 56%, #0eea57 88%);
    }
    50% {
      background: -webkit-gradient(linear, left top, right bottom, color-stop(0%, #ff670f), color-stop(10%, #ff670f), color-stop(40%, #ffffff), color-stop(60%, #0eea57));
      background: -webkit-linear-gradient(-45deg, #ff670f 0%, #ff670f 10%, #ffffff 40%, #0eea57 60%);
      background: linear-gradient(135deg, #ff670f 0%, #ff670f 10%, #ffffff 40%, #0eea57 60%);
    }
    100% {
      background: -webkit-gradient(linear, left top, right bottom, color-stop(0%, #ff670f), color-stop(5%, #ff670f), color-stop(10%, #ffffff), color-stop(40%, #0eea57));
      background: -webkit-linear-gradient(-45deg, #ff670f 0%, #ff670f 5%, #ffffff 10%, #0eea57 40%);
      background: linear-gradient(135deg, #ff670f 0%, #ff670f 5%, #ffffff 10%, #0eea57 40%);
    }
  }
</style>
<div class="animated">
  <h1>你好</h1>
</div>

Est-il possible d'y parvenir sans utiliser jQuery ?

Mon lien jsfiddle est https://jsfiddle.net/bAUK6

P粉909476457P粉909476457436 Il y a quelques jours747

répondre à tous(2)je répondrai

  • P粉308089080

    P粉3080890802023-09-19 00:57:19

    Mise en œuvre dynamiqueRéponse de Dave :

    :root{
        --overlay-color-1: #ff0000;
        --overlay-color-2: #0000ff;
        --anim-duration: 2s;
    }
    
    #gradient {
        opacity: 0.8;
        background: none;
    }
    
    #gradient:after,
    #gradient:before {
        content: '';
        display: block;
        position: absolute;
        top: 0; bottom: 0; left: 0; right: 0;
    }
    
    #gradient:before {
        background: linear-gradient(135deg, var(--overlay-color-2) 0%, var(--overlay-color-1) 100%);
        animation: OpacityAnim var(--anim-duration) ease-in-out 0s infinite alternate;
    }
    
    #gradient:after {
        background: linear-gradient(135deg, var(--overlay-color-1) 0%, var(--overlay-color-2) 100%);
        animation: OpacityAnim var(--anim-duration) ease-in-out calc(-1 * var(--anim-duration)) infinite alternate;
    }
    
    @keyframes OpacityAnim {
        0%{opacity: 1.0}
        100%{opacity: 0.0}
    }
    <div id="gradient"></div>

    répondre
    0
  • P粉785905797

    P粉7859057972023-09-19 00:05:38

    Veuillez essayer le code suivant :

    #gradient
    {
        height:300px;
        width:300px;
        border:1px solid black;
        font-size:30px;
        background: linear-gradient(130deg, #ff7e00, #ffffff, #5cff00);
        background-size: 200% 200%;
    
        -webkit-animation: Animation 5s ease infinite;
        -moz-animation: Animation 5s ease infinite;
        animation: Animation 5s ease infinite;
    }
    
    @-webkit-keyframes Animation {
        0%{background-position:10% 0%}
        50%{background-position:91% 100%}
        100%{background-position:10% 0%}
    }
    @-moz-keyframes Animation {
        0%{background-position:10% 0%}
        50%{background-position:91% 100%}
        100%{background-position:10% 0%}
    }
    @keyframes Animation { 
        0%{background-position:10% 0%}
        50%{background-position:91% 100%}
        100%{background-position:10% 0%}
    }
    <html>
    <div id="gradient">
      Hello
    </div>
    </html>

    répondre
    0
  • Annulerrépondre