如何仅将 CSS 过渡应用于 transform 属性

Posted

技术标签:

【中文标题】如何仅将 CSS 过渡应用于 transform 属性【英文标题】:How to apply a CSS transition only to the transform property 【发布时间】:2014-02-14 21:32:14 【问题描述】:

我目前有一个transform: rotate(45deg),它使用复选框:checked 值应用,我正在寻找一种解决方案,以便CSS 过渡仅适用于转换值。现在我的设置如下:transition: all 1s ease。我不希望它适用于 all,只是转换。现在它正在将转换应用到 color: 更改,我想摆脱它。

我觉得这应该很容易找到答案,但事实证明它比我想象的要困难。如果您有任何问题,请告诉我。谢谢。

这是我的 code pen。有问题的代码是 CSS 第 25-28 行

【问题讨论】:

使用transform 代替all 但是,为了更好地用于前缀,它有点烦人。 bit.ly/1blrJOR @Markasoftware 我已经尝试过您的建议,但它只是完全删除了过渡。 codepen.io/mtthwbckmn/pen/ByFnj @MattBeckham 大声笑,这是因为 Chrome 支持不带前缀的 transition,但它需要 transform 的前缀,如果它不带前缀,它支持 transition。但是,您的 transition CSS 仅适用于 transforms,而不是 -webkit- 前缀,所以...是的 【参考方案1】:

你可以使用transition: transform 1s;

这是以下的简写:

transition-property: transform;
transition-duration: 1s;

对于前缀,您需要:

-webkit-transition: -webkit-transform 1s;
/* etc, for each possibility */

【讨论】:

我已经进行了更改,尝试了速记和速记 CSS,但它完全删除了过渡。 codepen.io/mtthwbckmn/pen/ByFnj @MattBeckman - 我使用的是 chrome,你的链接和动画效果很好。 @MattBeckman 我现在看到了,看到我的更新。您还必须为实际转换添加前缀。如果您需要支持前缀,则有很多内容:( @m59 我正在使用 Safari,但我只是在 Chrome 中尝试了那个代码笔,它做同样的事情。它会旋转,但它会立即旋转,它没有应用“1s ease”。 @MattBeckman 在 Chrome 中完美地为我工作(我只是在这里使用了 chrome 前缀)codepen.io/anon/pen/LfiFu

以上是关于如何仅将 CSS 过渡应用于 transform 属性的主要内容,如果未能解决你的问题,请参考以下文章

如何仅将特定的 CSS 规则应用于 Chrome?

如何仅将 CSS 样式应用于文本

如何仅将悬停应用于 X 而不是圆圈

如何仅将样式应用于父元素?

如何仅将 css 样式应用于特定的 Vue 组件及其子组件?

仅将 CSS 样式表应用于单个 UserControl