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

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

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

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

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

效果如下:

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

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

一、calc-size 函數(shù)

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

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

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

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

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

其實(shí)除了auto,還支持其他尺寸關(guān)鍵詞,比如:

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

也支持混合計(jì)算,如下:

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)存在的項(xiàng)目,可能會(huì)有很多地方需要都要改成這種寫法,有一定的侵入性。

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

interpolate-size: numeric-only;/*默認(rèn)值*/
interpolate-size: allow-keywords;

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

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

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

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

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

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

三、也支持 detail 展開過渡

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

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

效果如下:

當(dāng)然默認(rèn)展開折疊是沒有過渡效果的。

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

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

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

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

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

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

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

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

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

這樣能支持的瀏覽器自然就會(huì)有過渡動(dòng)畫了,完全不用擔(dān)心是否兼容。

總結(jié)一下,其實(shí)就兩點(diǎn):

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

[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。

責(zé)任編輯:姜華 來源: 前端偵探
相關(guān)推薦

2023-02-06 09:31:17

CSSJS 動(dòng)態(tài)

2023-07-24 09:11:43

CSS滾動(dòng)驅(qū)動(dòng)動(dòng)畫

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 過渡動(dòng)畫

2013-01-30 15:59:29

adobeCSS3HTML5

2022-11-16 14:02:44

2023-02-13 09:31:07

CSS前端

2018-09-28 18:26:51

微信朋友圈更新

2024-07-17 10:16:21

2024-05-23 10:34:15

CSS 3CSS技術(shù)

2011-07-29 14:55:25

iPhone開發(fā) 動(dòng)畫過渡

2015-08-03 11:42:27

Swift漢堡式過度動(dòng)畫

2022-08-22 20:10:59

自定義計(jì)數(shù)器CSS

2023-04-10 09:18:42

CSS前端

2021-07-15 07:23:25

React動(dòng)畫頁面
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 九九av | 九一视频在线观看 | 成人精品一区 | 亚洲成人精品久久久 | 日本久久网 | 久草在线青青草 | 久热久草 | 国产在线a | 美女一级黄 | 成人国产在线视频 | 精品国产乱码久久久久久丨区2区 | 久久www免费人成看片高清 | 国产男女猛烈无遮掩视频免费网站 | 国产高清在线精品一区二区三区 | 欧美日韩成人在线 | 欧美成人自拍视频 | 天天影视综合 | 国产91久久久久久久免费 | 精品久久久久久久 | 午夜精品一区 | 成人精品国产 | 免费一区 | 欧美三级在线 | 国产精品成人在线播放 | 国产91在线播放 | 久久精品69 | 精品国产乱码久久久久久蜜柚 | 夜夜爽99久久国产综合精品女不卡 | 国产高清在线精品一区二区三区 | 干干天天 | 久久久久亚洲精品 | 在线播放一区二区三区 | 欧美精品一区二区三区四区 在线 | 日本一区二区不卡 | 成人高清在线 | 99精品国产一区二区三区 | 国产一区二区不卡 | 亚洲综合一区二区三区 | 午夜精品视频在线观看 | 亚洲精品九九 | 天堂一区 |