Переход цвета фона с помощью слайд-анимации
Я пытаюсь изменить цвет фона элемента при наведении, используя CSS-переходы. Я хочу сделать это с помощью прокрутки снизу вверх. Я могу использовать фон, но я бы хотел, чтобы он скользил вверх:
-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;
Еще одна мысль, было бы лучше прокрутить отдельный элемент с примененным к нему фоном?
Ответы
Ответ 1
Чтобы сдвинуть фоновый цвет вверх, вам нужно будет использовать фоновое изображение или какой-то градиент, постепенно настраивая 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%;
}
Вы можете увидеть эту демонстрацию здесь: http://jsfiddle.net/as5ZU/
Ответ 2
Расширение ответа @Sampson, где я рассмотрю более понятные значения, которые легче понять:
.box {
width: 100px;
height: 100px;
display:inline-block;
background-size: 200% 200%;
transition: background-position 1s;
}
.to-top{
background-image: linear-gradient(to top, red 50%, black 0);
background-position: top;
}
.to-top:hover {
background-position: bottom;
}
.to-bottom{
background-image: linear-gradient(to bottom, red 50%, black 0);
background-position: bottom;
}
.to-bottom:hover {
background-position: top;
}
.to-left{
background-image: linear-gradient(to left, red 50%, black 0);
background-position: left;
}
.to-left:hover {
background-position: right;
}
.to-right{
background-image: linear-gradient(to right, red 50%, black 0);
background-position: right;
}
.to-right:hover {
background-position: left;
}
<div class="box to-top"></div>
<div class="box to-bottom"></div>
<div class="box to-left"></div>
<div class="box to-right"></div>