Признаюсь, это поначалу доставило мне некоторые неприятности, но с некоторой настойчивостью я смог вас туда доставить. Lol
Это потому, что вы не даете CSS-переходу отправную точку, с которой нужно связать позиционирование свойства right
. Вы перешли от присвоения элементу свойства right
20px
к свойству left
50%
. Для желаемого эффекта вам нужно задать ему начальную right
позицию 20px
и конечную right
позицию 50%
для .bar
(избавление от left: 50%;
).
Теперь, после того, как вы исправите вышеупомянутую проблему, вам нужно будет обратиться к методу .bar
class transform
, сделав его transform: translate(50%, -50%);
Это потому, что мы перешли на использование right
позиционирования по оси x так что нам нужно, чтобы он шел 50%
справа, а не -50%
(что привело бы к тому, что элемент вышел бы за пределы экрана -50%
пространства от мертвой точки родителя).
Вот ваше новое живое демо . Надеюсь, это имеет смысл :) Логически CSS требует, чтобы все переходы имели начальную точку и действительную сожительственную конечную точку. Некоторые браузеры делают это за вас, но они никогда не должны этого делать, потому что это помешает кроссплатформенной разработке.