I'm using a CSS parent class to define multiple layouts for some data. When I change the parent class, the layout changes perfectly as desired, however I thought it may be fun to add some CSS animations (transitions). I can't seem to get it to work though. I found one other similar question, but it has no answer, and it's not exactly the same (or as straightforward).
Here is the fiddle: http://jsfiddle.net/scottbeeson/wmK2F/1/
I don't really care what transitions right now; height, width, color, whatever. Once someone shows me what I'm doing wrong I can tweak it.
HTML:
<div id="toggleLayout">Click To Toggle</div>
<div class="layout layoutCards">
    <span class="entity">
        Test
    </span>
    <span class="entity">
        Test
    </span>    
    <span class="entity">
        Test
    </span>    
    <span class="entity">
        Test
    </span>    
</div>
CSS:
.entity { /* animate */
  -webkit-transition: height .5s linear;
  -moz-transition: height .5s linear;
}
.layoutCards .entity {
    display: inline-block;
    border: 1px solid blue;
    margin: 5px;
    height: 100px;
    width: 100px;
}
.layoutList .entity {
    display: block;
    border: 1px solid blue;
    margin: 5px;
    height: 20px;
}
                You are changing the display of the element from inline-block to block. You cannot transition such a change. You could easily just make the display of both the same; however, that eliminates the desired behavior.
As opposed to manipulating the elements via the display property, you could swap display:inline-block out for float:left, set float:none, on the second element, and keep display:block. This seems to work. jsFiddle here, but it doesn't produce a nice animation due to the radical changes..
.layoutCards .entity {
    float: left;
}
.layoutList .entity {
    float: none;
    display:block;
}
Alternatively, you could also just set display:block on both. Producing this - example here.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With