Sebastian Olsen
Sebastian Olsen

Reputation: 10888

Infinitely sliding CSS3 gradient

I have this simple animation that pulses back and forth diagonally, I would like it to slide endlessly instead of pulsing back and forth. Here is my code:

body {margin: 0; padding: 0;}

.error-con {
    background: rgba(255, 0, 89, 1);
    background: -moz-linear-gradient(45deg, rgba(255, 0, 89, 1) 0%, rgba(0, 179, 255, 1) 100%);
    background: -webkit-gradient(left bottom, right top, color-stop(0%, rgba(255, 0, 89, 1)), color-stop(100%, rgba(0, 179, 255, 1)));
    background: -webkit-linear-gradient(45deg, rgba(255, 0, 89, 1) 0%, rgba(0, 179, 255, 1) 100%);
    background: -o-linear-gradient(45deg, rgba(255, 0, 89, 1) 0%, rgba(0, 179, 255, 1) 100%);
    background: -ms-linear-gradient(45deg, rgba(255, 0, 89, 1) 0%, rgba(0, 179, 255, 1) 100%);
    background: linear-gradient(45deg, rgba(255, 0, 89, 1) 0%, rgba(0, 179, 255, 1) 100%);
    background-size: 400% 400%;
    -webkit-animation: errorBg 55s ease infinite;
    -moz-animation: errorBg 55s ease infinite;
    animation: errorBg 55s ease infinite;
    height: 100vh;
}

@-webkit-keyframes errorBg {
    0% {
        background-position: 93% 0%
    }
    50% {
        background-position: 0% 100%
    }
    100% {
        background-position: 93% 0%
    }
}

@-moz-keyframes errorBg {
    0% {
        background-position: 93% 0%
    }
    50% {
        background-position: 0% 100%
    }
    100% {
        background-position: 93% 0%
    }
}

@keyframes errorBg {
    0% {
        background-position: 93% 0%
    }
    50% {
        background-position: 0% 100%
    }
    100% {
        background-position: 93% 0%
    }
}
<div class="error-con"></div>

I tried removing the 50% keyframe but that just made the whole thing jump back to the start at the last keyframe. Any ideas?

Upvotes: 2

Views: 7027

Answers (1)

hmak
hmak

Reputation: 3978

The problem is your gradient. For an infinite loop you should have four colors:

I've Fixed Your Code In This Fiddle

background: -webkit-linear-gradient(45deg, rgba(255, 0, 89, 1) 0%, rgba(0, 179, 255, 1) 33%, rgba(255, 0, 89, 1) 66%, rgba(0, 179, 255, 1) 100%);

Upvotes: 3

Related Questions