Transition background-color via slide up animation

David Jones picture David Jones · Dec 23, 2013 · Viewed 54.9k times · Source

I am trying to change the background-color of an element on hover by using CSS transitions. I want to do this by having it scroll up from the bottom. I can fade the background in using this, but I would like it to slide up:

-webkit-transition: background-color 0.5s linear;
-moz-transition: background-color 0.5s linear;
-o-transition: background-color 0.5s linear;  
transition: background-color 0.5s linear;

One other thought, would it be better to scroll up a separate element with the background applied to it?

Answer

Sampson picture Sampson · Dec 23, 2013

In order to slide the background color up you would need to use a background image, or a gradient of some sort, while gradually adjusting the background-position:

.box {
    width: 200px; height: 100px;
    background-size: 100% 200%;
    background-image: linear-gradient(to bottom, red 50%, black 50%);
    transition: background-position 1s;
}

.box:hover {
    background-position: 0 -100%;
}

You can see this demo here: http://jsfiddle.net/as5ZU/