为啥这个 CSS 过渡速记不再起作用了?

Posted

技术标签:

【中文标题】为啥这个 CSS 过渡速记不再起作用了?【英文标题】:Why does this CSS transition shorthand not work anymore?为什么这个 CSS 过渡速记不再起作用了? 【发布时间】:2016-04-30 04:55:35 【问题描述】:

我的基本工作示例代码:

div 
    width: 100px;
    height: 100px;
    background: red;
    -webkit-transition: all 0.25s ease 0s;
    -moz-transition: all 0.25s ease 0s;
    transition: all 0.25s ease 0s;

Demo

如果我在转换持续时间之前删除0,在转换延迟之后删除s,则它不起作用:

div 
    width: 100px;
    height: 100px;
    background: red;
    -webkit-transition: all .25s ease 0;
    -moz-transition: all .25s ease 0;
    transition: all .25s ease 0;

我问这个问题是因为我的转换正在使用后一个代码,但突然 Chrome 给了我错误“未知属性名称”,我需要将其更改为前一个版本以使我的转换再次工作。由于我有很多第二种格式的代码,我该如何解决这个问题。

【问题讨论】:

那么0 应该是哪个属性? @Mr Lister:转换延迟(第一个 @Mr Lister:规范告诉实现如何解释声明。它说第一个 因为它无效?这是个什么样的问题?通过CSS validator 运行代码会给你答案。 @cimmanon:每当出现类似情况时,我都会很乐意链接回this comment。 【参考方案1】:

CSS never permitted unitless zeroes for time values. 不幸的是,您一直依赖 Chrome 中的一个错误。幸运的是,他们似乎终于可以修复它了。

您包含其他前缀的事实意味着您应该在开发的早期发现其他前缀由于无单位零而无法在任何其他浏览器上工作,并且您永远不应该在第一次保留无单位零次地点。

必须更新所有代码,因为现在它只是无效的 CSS。这里的教训是在多个浏览器上进行测试。特别是如果您要为它们编写前缀。

【讨论】:

【参考方案2】:

即使值 0 的所有单位表示相同的时间,在这种情况下也不能省略该单位,因为它不是 <length>:0 无效并且不表示 0s、0ms。

//developer.mozilla.org/en-US/docs/Web/CSS/time

您的代码从未有效,并且从未在 Chrome 以外的其他浏览器中运行过。看起来他们现在正在尊重标准。如果你想让它工作,你需要验证你的代码。

【讨论】:

以上是关于为啥这个 CSS 过渡速记不再起作用了?的主要内容,如果未能解决你的问题,请参考以下文章

CSS3:为啥这个过渡不起作用,我该如何解决?

为啥速记参数名称在这个 Swift 闭包中不起作用?

为啥我的 Javascript 弹出窗口不再起作用?

为啥自动布局在 xcode 7.2 中不再起作用?

为啥预编译资产不再起作用?

为啥将 iOS 升级到 10.3 后 firebase 通知不再起作用?