I have a 2x2 grid that contains three divs: #blue (2x1), #red (1x1) and #yellow (1x1) (see JSFiddle). This is what the grid looks like initially:
NOTE: #red is overlapped by #blue and hence not visible. To make it visible, the user must click Show. This is what the grid looks like after Show has been clicked:
In my current setup, clicking the Show button adds the .expanded class to #red, which changes the line placement of #red from grid-column: 1/2 to grid-column: 1/span2 and makes #red visible.
This works fine, however, I don't like the abruptness of the change and would like to give #red the appearance of sliding out from under #blue when Show is clicked. The problem is that since grid-column has a discrete animation type, it cannot be tween-transitioned in the way that a continuous property like width can.
My attempt at a work-around:
I tried specifying a width property for #red. It is initially set to 100px and transitioned to 200px when Show is clicked.
This almost gives me the desired result in that #red slides smoothly when Show is clicked but not when Hide is clicked. My guess is that grid-column does not wait for the transition to complete and I also don't like having to hardcode the values of width.
I also tried using translateX with transition but once again grid-column is set before the transition finishes.
Is there a solution to this problem that uses pure CSS? (I don't mind using JS but it is a last resort and do not want to use anything that involves setTimeout or jQuery.)

