Как анимировать блок так, чтобы он раскрывался равномерно?
Можно еще так. Только у меня по ховеру
need code!, а вообще , возможно, надо менять только размеры , а позицию оставлять как есть , то есть 50%. 
+ transition для плавности.
попробуйте менять размеры через свойство transform:scale(1); -> transform:scale(1.5); transfrom-origin:center center; как-то так ...