最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

CSS 動態(tài)高度過渡動畫效果的實現(xiàn)

  發(fā)布時間:2021-01-15 16:29:30   作者:ChokCoco   我要評論
這篇文章主要介紹了CSS 動態(tài)高度過渡動畫效果的實現(xiàn),本文通過實例代碼給大家介紹的非常想詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

這個問題源自于掘金上的一個留言,一個朋友問到,為什么我下面這段代碼的高度過渡動畫失效了?

偽代碼大概是這樣:

{
    height: unset;
    transition: all 0.3s linear;
    will-change: height;
 
    &.up {
        height: 0;
    }
    &.down {
        height: unset;
    }
}

把它還原成一個實際的 Demo,效果大概是這樣(本質(zhì)想的想法是通過給元素切換它的.up,.down類,讓它實現(xiàn)展開、合上的動畫 ):

嗯哼?很奇怪,明明給height屬性設(shè)置了transition,為什么過渡動畫沒有觸發(fā),而是直接一步到位展開了呢?

我們期待的效果是這樣的:

transition 不支持 height: auto

當上述代碼設(shè)置成height: unset時,實際等同于設(shè)置了height: auto,我們的想法是希望這段代碼能夠容器支持文本的動態(tài)高度。每次展開的時候,過渡展開到容器本身的高度即可。

查看規(guī)范,究其原因,在于CSS transtion 不支持元素的高度為 auto 的變化。

如果把上述的height: unset替換成一個具體的高度值,則動畫是生效的,譬如:

{
    &.up {
        height: 0;
    }
    &.down {
      - height: unset;
      + height: 500px;
    }
}

但是,我們又希望能夠做到動態(tài)高度的過渡轉(zhuǎn)換,是不是就沒有辦法了么?

巧用max-height適配動態(tài)高度

嘿嘿,這里有一個非常有意思的小技巧。既然不支持height: auto,那我們就另辟蹊徑,利用max-height的特性來做到動態(tài)高度的伸縮。

我們改造一下上述代碼,將height: 0替換為max-height: 0,將height: auto替換成max-height: 1000px,偽代碼大概是這個意思:

{
    max-height: 0;
    transition: max-height 0.3s linear;
 
    &.up {
        max-height: 0;
    }
    &.down {
        max-height: 1000px;
    }
}

我們估算一下實際容器的最大高度,這里的1000px只需要比最大高度高即可。但是這里不能設(shè)置的太高,最高是貼近最大的使用高度即可,后面會聊到為什么。

由于max-height只是限制文本的最大高度,當容器的實際高度沒有達到限制的最大高度,將不會繼續(xù)變高,看看效果:

CodePen Demo -- the height property transition unwork

小缺陷

整體效果還是非常的 Nice 的,當然,可能有兩個小缺陷,

  1. 如果實際場景中max-height需要用到并且有其它作用,那么可能這種方法就無法滿足需求了
  2. 另一個缺點就是視覺上有延遲,和實際高度相差越大越明顯。也就是說,如果容器實際高度只有 200px,max-height為 1000px,動畫時間為 1s,緩動函數(shù)為 linear。實際動畫從 0 到 200px 的高度過渡時間只有 0.2s,這一點需要非常注意~

因為本來展開動畫是期望將容器的高度用 1s 的時間拉伸至 1000px,實際在 200px 的時候就停止了,所以動畫時間只有 0.2 秒。綜上,方法是好方法,但是具體使用的時候要需要具體分析。

到此這篇關(guān)于CSS 動態(tài)高度過渡動畫效果的實現(xiàn)的文章就介紹到這了,更多相關(guān)css高度過渡動畫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

相關(guān)文章

  • CSS實現(xiàn)漂亮的時鐘動畫效果的實例代碼

    這篇文章主要介紹了CSS實現(xiàn)漂亮的時鐘動畫效果的實例代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-29
  • css3動畫鼠標放上圖片逐漸變大鼠標離開圖片逐漸縮小效果

    這篇文章主要介紹了css3動畫鼠標放上圖片逐漸變大鼠標離開圖片逐漸縮小,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-27
  • CSS 奇思妙想邊框動畫效果的實現(xiàn)

    這篇文章主要介紹了CSS 奇思妙想邊框動畫效果的實現(xiàn),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-18
  • 使用CSS3制作版頭動畫效果

    這篇文章主要介紹了使用CSS3制作版頭動畫效果,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-24
  • CSS3分享圖標按鈕動畫特效代碼

    CSS3分享圖標按鈕動畫特效代碼是一款社會分享圖標動畫特效,鼠標移上去會有一個膠囊閃動的效果。
    2020-12-15
  • CSS3通過var()和calc()函數(shù)實現(xiàn)動畫特效

    這篇文章主要介紹了CSS3通過var()和calc()函數(shù)實現(xiàn)動畫特效,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-29

最新評論

沈阳市| 郸城县| 宝清县| 左云县| 桂阳县| 滨州市| 阿城市| 古浪县| 建昌县| 周口市| 安阳县| 乃东县| 襄汾县| 循化| 安岳县| 乌兰浩特市| 吉水县| 虎林市| 高清| 视频| 泸州市| 卫辉市| 方城县| 阿鲁科尔沁旗| 定西市| 九龙坡区| 鹰潭市| 曲麻莱县| 许昌县| 都兰县| 湘潭县| 定日县| 麻城市| 安龙县| 望都县| 武平县| 韶山市| 德安县| 甘洛县| 景洪市| 新竹市|