- will-change тут скорее должен быть с opacity
- Очень правильно подсказали про translate3d, но вцелом обе эти поправки не должны дать кардинальных изменений
- Вы зачем-то меняете весть translate, т.е. и по X и по Y. В то время, как значение Y не меняется. Юзайте
transform: translateX(200px);
...
transform: translateX(0px);
Конечно, это можно оформить и на чистом css со скрытым инпутом-радио (крестик "закрыть" - label for=""), но это уж совсем крайняя мера) Всё таки такой интерактив правильнее писать на JS