成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

CSS 現(xiàn)在終于支持高度 Auto 過渡動畫了

開發(fā) 前端
calc-size可以將非數(shù)值類型的單位轉換成支持過渡的尺寸單位,包括auto,interpolate-size可以從全局范圍允許任意關鍵詞支持過渡。

眾所周知,有些屬性是不支持過渡動畫的,比如高度auto。

div{
  height: 0;
  transition: 1s
}
.wrap:hover div{
  height: auto
}

效果如下:

要實現(xiàn)過渡效果,之前提供過一個grid布局方式,原理是利用grid的尺寸單位1fr支持過渡的特性。

不過到了現(xiàn)在,一切都變簡單了,Chrome 129支持了auto的過渡效果,快速了解一下吧!

一、calc-size 函數(shù)

現(xiàn)在要實現(xiàn)auto的過渡效果,需要用到一個全新的calc-size函數(shù)。

看到這個函數(shù),是不是和calc比較類似?沒錯,這是一個可以將一些關鍵詞轉換成具體尺寸的函數(shù)。

回到上面這個例子,只需要將高度改成calc-size(auto),如下:

div{
  height: 0;
  transition: 1s
}
.wrap:hover div{
  height: calc-size(auto)
}

現(xiàn)在就有過渡效果了(Chrome 129+ 或者 Chrome 127+開啟實驗屬性)。

其實除了auto,還支持其他尺寸關鍵詞,比如:

height: calc-size(min-content)
height: calc-size(max-content)
height: calc-size(fit-content)

也支持混合計算,如下:

height: calc-size(auto + 10px)
height: calc-size(max-content - 10px)

二、interpolate-size 屬性

前面的例子,為了兼容之前的瀏覽器,還必須保留height: auto的寫法。

div{
  height: 0;
  transition: 1s
}
.wrap:hover div{
  height: auto;
  height: calc-size(auto)
}

如果是已經(jīng)存在的項目,可能會有很多地方需要都要改成這種寫法,有一定的侵入性。

為此,瀏覽器還提供了一個interpolate-size屬性,這個屬性可以設置插值計算的規(guī)則,有兩個關鍵詞。

interpolate-size: numeric-only;/*默認值*/
interpolate-size: allow-keywords;

其中第一個numeric-only,表示僅限數(shù)值,也就是只有真實的數(shù)值才會有過渡效果(目前瀏覽器的默認效果),第二個allow-keywords表示允許所有關鍵詞,當然包括auto屬性。

有了這個屬性,要做的事情就更簡單了,只需要在全局:root加上這個屬性。

:root{
  interpolate-size: allow-keywords;
}
div{
  height: 0;
  transition: 1s
}
.wrap:hover div{
  height: auto;
}

這樣就全局生效了,無需在每個地方就加上calc-size(auto),是不是非常方便呢?

你也可以訪問以下鏈接查看實際效果。

  • CSS calc-size (codepen.io)[1]
  • CSS calc-size (juejin.cn)[2]

三、也支持 detail 展開過渡

大家可能都知道,detail配合summary可以實現(xiàn)展開折疊效果。

<div class="con">
  <details name="a">
    <summary>分組A</summary>
    <p>這是第一個分組 name="a"</p>
  </details>
  <details name="a">
    <summary>歡迎</summary>
    <p>最近 details元素新增了一個name屬性</p>
  </details>
  <details name="a">
    <summary>關注</summary>
    <p>別看這只是一個普普通通的屬性,這可是帶來了一個全新的模式,一起了解一下吧</p>
  </details>
</div>

效果如下:

當然默認展開折疊是沒有過渡效果的。

利用calc-size或者interpolate-size也可以很輕松的實現(xiàn)過渡動畫,關鍵實現(xiàn)如下:

:root {
  interpolate-size: allow-keywords;
}
::details-content{
  content-visibility: visible;
  height: 0;
  transition: .3s;
  overflow: hidden;
}
details[open]::details-content{
  height: auto;
}

這樣就有過渡效果了,非常絲滑。

這是一段通用代碼,可以用在任何地方。

你也可以訪問以下鏈接查看實際效果。

  • CSS details transition (codepen.io)[3]
  • CSS details transition (juejin.cn)[4]

四、現(xiàn)在其實可以用起來了

雖然說兼容性很差(Chrome 129+),但這是一個漸進增強屬性,不會影響現(xiàn)有功能,也無需修改已有結構,只需要全局增加這樣一行就行了。

:root {
  interpolate-size: allow-keywords;
}

這樣能支持的瀏覽器自然就會有過渡動畫了,完全不用擔心是否兼容。

總結一下,其實就兩點:

  • calc-size可以將非數(shù)值類型的單位轉換成支持過渡的尺寸單位,包括auto。
  • interpolate-size可以從全局范圍允許任意關鍵詞支持過渡。

[1]CSS calc-size (codepen.io): https://codepen.io/xboxyan/pen/NWQKjGo。

[2]CSS calc-size (juejin.cn): https://code.juejin.cn/pen/7416950104911216675。

[3]CSS details transition (codepen.io): https://codepen.io/xboxyan/pen/KKOPmVO。

[4]CSS details transition (juejin.cn): https://code.juejin.cn/pen/7416957616628170789。

責任編輯:姜華 來源: 前端偵探
相關推薦

2023-02-06 09:31:17

CSSJS 動態(tài)

2023-07-24 09:11:43

CSS滾動驅動動畫

2020-10-22 08:50:04

Cascading S

2021-05-28 10:22:15

AI 數(shù)據(jù)人工智能

2015-12-15 10:32:44

chromecss開發(fā)

2025-05-30 03:20:00

2024-06-13 10:17:57

2024-03-28 09:11:24

CSS3TransitionCSS屬性

2021-05-21 07:41:15

Vue 過渡動畫

2013-01-30 15:59:29

adobeCSS3HTML5

2022-11-16 14:02:44

2023-02-13 09:31:07

CSS前端

2024-07-17 10:16:21

2018-09-28 18:26:51

微信朋友圈更新

2024-05-23 10:34:15

CSS 3CSS技術

2011-07-29 14:55:25

iPhone開發(fā) 動畫過渡

2015-08-03 11:42:27

Swift漢堡式過度動畫

2022-08-22 20:10:59

自定義計數(shù)器CSS

2023-04-10 09:18:42

CSS前端

2021-07-15 07:23:25

React動畫頁面
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91成人午夜性a一级毛片 | 中文字幕不卡一区 | 日韩高清中文字幕 | 精品视频久久久久久 | 色在线看 | 日日摸天天添天天添破 | 偷派自拍 | 日韩成人精品在线观看 | 日本一道本视频 | av香港经典三级级 在线 | 日韩视频在线免费观看 | 婷婷色婷婷 | www.黄色在线观看 | 天天干天天爱天天操 | 色悠悠久 | 日韩欧美国产一区二区三区 | 99re99 | 草久久 | 在线视频一区二区 | 久久综合久 | 日韩免费高清视频 | 嫩草国产| 91中文字幕在线 | 国产一区二区三区网站 | 中文字幕在线一区 | 久久av一区二区三区 | 国产内谢| 二区在线观看 | 99国产精品一区二区三区 | 欧美一区二区三区视频在线播放 | 亚洲传媒在线 | 国产午夜精品久久 | 久久毛片| 国产亚洲一区二区在线观看 | 成人av一区二区三区 | 999久久久 | 精品亚洲一区二区三区四区五区高 | 一区二区av在线 | 欧美日韩亚洲国产 | 性一交一乱一透一a级 | 成人日韩|