导航

萌即是正义!时不时分享一些ACG活动记录与有趣代码的小站!

侧边栏
热门文章
1页面
程序员老黄历&求签
热度
481
2推文
一开始还以为是2.5次元的舞台剧,结果仔细一看是音乐剧!?有一丢丢的兴趣,到时候看看能不能搞到门票。 《FateZero》真人音乐剧 定妆照预告:https://www.bilibili.com/video/BV1RqSoYmEzJ
热度
207
3博文
探访《蜡笔小新》老家——春日部游记
热度
104
4博文
《孤独摇滚》圣地巡礼——下北泽&下北泽咖喱节2023
热度
104
5推文
知道这套道具的人年纪应该都不小了吧。
热度
65
6博文
Live2d模型合集分享 | FaceRig | 海王星系列 | 初音未来 | 雷姆 | 凉风青叶 | 尼禄 | 薇尔莉特 | 小埋 | 樱花庄 | 玉藻前
热度
65
7推文
刚发完对《冒险岛Online》R区的遗憾没多久,韩服那边又开始搞事情了,做出了如下的修改: 1、删除持有金币,主要消耗、其他道具; 2、可使用拍卖、个人件交易、金币市场功能; 3、装备卷轴强化和可用附加潜能,但是该效果在3个月内不生效,R区的终伤BUFF仍旧保存3个月; 4、删除R区被动中BOSS装备掉率增加属性等全部属性; 5、现有装备道具均变为永久不可交易道具。 ※主要删除道具:金币、红魔方、黑魔方、痕迹、强大火花、核心宝石、可获得装备的部分消耗道具、可通过金币购买的道具等。 这可真是至R区于死地啊...要说修改游戏的模式也就算了,现在不仅没有任何补充,还把先前的劳动成果给删除了是不是太过分了!? 日服到时候肯定二话不说跟进,国际服那边如果没了韩服对R区的技术支持,个人觉得服软也是时间的问题。
热度
52
8博文
谈谈这次《冒险岛Online》日服R区的削弱事件
热度
52
9博文
如何使用ffmpeg.wasm在浏览器前端实现视频压缩和剪辑
热度
52
10博文
文石BOOX Leaf2使用感想
热度
52
最新评论
广树
2024-11-21 16:04
@hikari:BGM也许是吧,歌曲部分感觉不一定
hikari
2024-11-21 09:52
居然是音乐剧!真是没想到,难道说会用梶浦大妈的配乐吗?看预告片里就用的是fz里最扣人心弦的bgm。🥰
广树
2024-11-20 08:18
@石樱灯笼:这应该是受众的年龄层的问题吧
石樱灯笼
2024-11-20 06:57
@广树:承太郎抽根烟,整张嘴都被打码。
广树
2024-11-20 06:48
@石樱灯笼:不是挺符合人设吗?为什么会离谱?
正在攻略

logo_kai.jpg


PSN奖杯卡

PSN奖杯卡

赞助商广告

让宽高自动过渡动画不再那么繁琐!CSS新功能 interpolate-size 和 calc-size()

作者:广树时间:2024-07-21 10:51:23分类:CSS/HTML

在 CSS 动画中从 height: 0 过渡到 height: auto 看起来应该很简单,但实际上 CSS 无法从 任何数值 过渡到 height: auto ,因为它需要一个具体的高度值来运行任何动画或过渡。在过去,开发者只能使用 JavaScript 来计算元素的高度并进行动画处理,这显然不是理想的解决方案。因此,CSS 终于引入了全新的 interpolate-size属性 和 calc-size() 函数,使这种类型的动画变得非常简单。


概述

CSS 新增的 interpolate-size 属性和 calc-size() 函数极大地增强了对内在尺寸关键字(如 auto、min-content、fit-content 等)的动画和过渡能力。这些工具的出现,使得不同尺寸之间的平滑动画成为可能,解决了网页开发者长期以来的痛点。


calc-size() 函数

calc-size() 函数的工作原理与 calc() 函数相同,但它增加了基于浏览器自动计算尺寸的能力。这些值包括:

  • auto
  • min-content
  • max-content
  • fit-content
  • stretch
  • contain

基本上,calc-size() 函数将诸如 auto 之类的值转换为特定的像素值,然后与其他值一起进行计算。这在动画自动调整大小的元素时特别有用。

例子:

.element {
  height: 0;
  overflow: hidden;
  transition: height 0.3s;
}

.element.open {
  height: calc-size(auto);
}

通过在 calc-size() 函数中包装 auto 值,可以在不使用任何 JavaScript 的情况下,从 0 过渡到 auto 高度。

需要注意的是,不能在两个自动计算的值之间进行动画,例如 auto 和 min-content 之间。

另一个有趣的方面是,只要在动画的某一个具体数值上使用 calc-size(),也能使动画生效。

比如:

.element {
  height: calc-size(0px);
  overflow: hidden;
  transition: height 0.3s;
}

.element.open {
  height: auto;
}


interpolate-size 属性

interpolate-size 属性允许对内在尺寸关键字进行动画和过渡。通过在根元素中指定 interpolate-size: allow-keywords,可以启用整个页面的新行为。这意味着可以不再依赖calc-size,全局使用新的过渡动画。

例子:

:root {
  interpolate-size: allow-keywords;
}
.element {
  height: 0px;
  overflow: hidden;
  transition: height 0.3s;
}
.element.open {
  height: auto;
}


计算

尽管上述情况是最常见的用例,但由于该函数与 calc() 函数的工作方式相同,它实际上可以用于进行以前在 CSS 中不可能进行的某些计算。

比如:

.element {
  width: calc-size(min-content, size + 50px);
}

上述 CSS 将元素的宽度设置为最小内容大小加 50 像素。语法可能有点复杂,所以进行解释:

calc-size() 接受两个参数,第一个是要计算的大小,第二个是要执行的计算。在这个例子中,计算元素的最小内容大小,然后加上 50 像素。关键字 size 始终表示传递给 calc-size 的第一个属性的当前大小。这意味着在这个例子中,size 等于元素的最小内容大小。

甚至可以嵌套多个 calc-size() 函数以进行更复杂的计算:

.element {
  width: calc-size(calc-size(min-content, size + 50px), size * 2);
}

这将计算元素的最小内容大小,加上 50 像素,然后将结果乘以 2。


浏览器支持

截至目前,calc-size() 仅在启用了 #enable-experimental-web-platform-features 标志的 Chrome 中受支持。还没有出现在 caniuse.com 上。

其他主流浏览器,例如火狐、Safari也已经开放了相应的Issues:

火狐: https://github.com/mozilla/standards-positions/issues/1022

Safari: https://github.com/WebKit/standards-positions/issues/348

相信明年的这个时候,主流浏览器应该都会支持吧。


相关链接

W3C: https://drafts.csswg.org/css-values-5/#calc-size

donate.png

1210 x 50(蓝底).png

cloudcone