I saw CSS3 in tags, so here is a pure CSS3 example:
.block {
    transition: opacity 0.5s linear, transform 0.5s linear;
    opacity: 1;
}
.block.hidden {
    opacity: 0;
    transform: scaleY(0);
}
Here's the fiddle: http://jsfiddle.net/andunai/1e21endf/
However, in this case the element will just disappear visually and won't free the place which it takes, so you'll have to end up with either making this element have position: absolute or animage padding, margin and max-height as well - note that transition of height is still having problems: How can I transition height: 0; to height: auto; using CSS?
.block {
    transition: opacity 0.5s linear, transform 0.5s linear, max-height 0.5s linear, padding 0.5s linear;
    opacity: 1;
    max-height: 30px; /* This one must be approximately of the
                         height of element, not less */
}
.block.hidden {
    opacity: 0;
    max-height: 0;
    padding: 0;
    transform: scaleY(0);
}
Here's an example of adding almost true scaling: http://jsfiddle.net/andunai/1e21endf/1/