「transition」を利用する事で簡単に実現できます。
少し面倒なのは縦の領域を表示させる内容に対してぴったりの長さになるようにするには「max-height」を利用したひと手間が必要です。表示させる際(「.base:hover .content」)の「max-height」については実際のコンテンツが超えない高さを指定する必要があります。(例では300pxを指定)
こういったひと手間が必要な理由としては「transition」が「height」対象とした場合「auto」の値が利用できない為です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<style> .content{ max-height: 0; overflow: hidden; transition: max-height 3s; background-color: red; } .base:hover .content{ max-height: 300px; } </style> <div class="base"> hover <div class="content"> content<br /> content </div> </div> |
サンプル