The @keyframes- why is my left offset not working?

<style>
  div {
    height: 40px;
    width: 70%;
    background: black;
    margin: 50px auto;
    border-radius: 5px;
    position: relative;
  }

#rect {
  animation-name: rainbow;
  animation-duration: 4s;
}

@keyframes rainbow {
  0% {
    background-color: blue;
    top: 0px;
    left: 0px;
  }
  50% {
    background-color: green;
    top: 50px;
    left: 25px;
    
  }
  100% {
    background-color: yellow;
    left: -25px; 
    top: 100px;
  }
}
</style>

<div id="rect"></div>

I tend to get mixed up with CSS, but try this:

#rect {
    position: absolute;
}