Bedziesz musial pobawic sie linear-gradient.
background: linear-gradient(to right, red 50%, blue 50%);
background-size: 200% 100%; //tutaj podkerslasz aby background w przypadku 1 koloru zajmowal obszar przycisku.
background-position: left bottom;
:hover { background-position: right bottom; }
i wiadomo, ze powinienes ogarnac jeszcze
transition: all 0.6s ease;