1. 程式人生 > >如何為不定高度(height:auto)的元素新增CSS3 transition-property:height 動畫

如何為不定高度(height:auto)的元素新增CSS3 transition-property:height 動畫

轉自:如何為不定高度(height:auto)的元素新增CSS3 transition-property:height 動畫


當一個元素不設定height時,它的預設值是 auto,瀏覽器會計算出實際的高度。

但如果想給一個 height:auto 的塊級元素的高度新增 CSS3 動畫時,該怎麼辦呢?

從 MDN 的可以查到 CSS 支援動畫的屬性中的 height 屬性如下:

height :yes, as a lengthpercentage or calc(); // 當 height 的值是 length,百分比或 calc() 時支援 CSS3 過渡。

所以當元素 height : auto 時,是不支援 CSS3 動畫的。

除了通過 JS 獲取精確的 height 值的方法外,其實我們可以使用 max-height 代替 height

只要我們設定一個肯定比元素自增長大的高度值就可以了。當然,因為是根據 max-height 值進行過渡效果,所以最好不要大得離譜,否則動畫效果不理想。

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <style>
            *{
                margin: 0;
                padding:0;
            }
            div{
                
                display: inline-block;
                overflow: hidden;
                background-color: orange;
                max-height: 20px;
                -webkit-transition: max-height 1s;
                transition: max-height 1s;
            }
            div:hover{
                max-height:200px;
            }
        </style>
    </head>
    <body>
        <div>
            <p>我不是height,是max-height</p>
            <p>我不是height,是max-height</p>
            <p>我不是height,是max-height</p>
            <p>我不是height,是max-height</p>
            <p>我不是height,是max-height</p>
            <p>我不是height,是max-height</p>
        </div>
    </body>
</html>