Use animation-timing-function in your keyframes to make two transitions (rise with fall) parabolic.
To do this correctly (i.e., according to physics), you must first make sure that the scale and time of the “peak” point correspond correctly. Your animation works from 0% to 100%, and the upper part of the parabola (the point of maximum scale) is somewhere between the two, let it be called m%. The scale starts at 0 (at 0%), ends at 1 (at 100%) and peaks, let s say (at m%). Then, using a bit of basic math, the relationship between these two variables:
m = 100 / (1 + sqrt(s-1))
or
s = (100/m - 1)^2 + 1
... so to reach a peak of 80% you need s = 17/16 = 1.0625
alternatively for max. scale s 1.2, you need to reach a peak at m = 69.0983 ...%
Now, to make the transitions right parabolic, you need to use the animation-timing-function parabolic settings. You want to effectively use something like ease-out as your object shoots up, and like ease-in when it starts to fall down ... but the toothless curves associated with these two keywords are not exactly parabolas.
Use instead:
animation-timing-function: cubic-bezier(0.33333, 0.66667, 0.66667, 1)
to "lift" part of the animation and:
animation-timing-function: cubic-bezier(0.33333, 0, 0.66667, 0.33333)
for the fall part. They give you exact parabolas. (See here for mathematics for the derivation of these values; note that ideally you would use 1/3 rather than 0.33333 and 2/3, rather than 0.66667, but CSS does not allow fractions).
Putting it all together, you get this CSS:
.someElement { animation: springIn 1s linear 1s 1 none } @keyframes springIn { 0% { transform: scale(0.0); animation-timing-function: cubic-bezier(0.33333, 0.66667, 0.66667, 1) } 69.0983% { transform: scale(1.2); animation-timing-function: cubic-bezier(0.33333, 0, 0.66667, 0.33333) } 100% { transform: scale(1.0) } }
... and if I correctly executed my sums, this should give you a completely parabolic animation trajectory!
(Note: I changed the animation mode-fill-mode to "none" because for the animation it did not seem necessary to continue the forced execution of transform: scale(1.0) after it was completed. If for some reason it is really necessary, change this value back "forward").