css - 将过渡添加到不同的属性

标签 css css-transitions

我有一个包含两个类的元素:

<div class="class1 class2"></div>

.class1 {transition: background-color 0.4s;}
.class2 {transition: top 1s;}

问题是 class2 的转换覆盖了 class1 的转换。

我不能使用 .class2 {transition: all 1s} 因为过渡持续时间必须不同。

我也不想将代码从 class1 复制到 class2 因为 class2 也可以应用于其他元素。

有没有办法在不覆盖现有元素的情况下向元素添加过渡?

最佳答案

不幸的是,不可能在 CSS 的另一个规则中“扩展”属性,无论它是 transition 还是其他属性。 一些替代方案可能是:

为类的组合创建规则

.class1.class2 {transition:background-color 0.4s, top 1s;}

缺点是您必须为每个相关组合创建这样的规则。这也意味着代码重复。

更改 html 以消除组合规则的需要

找到一种正确的方式来表示 html 对象,这样您就不需要扩展规则。在我的例子中是:

<div class="class2">
  <div class="class1">
</div>

缺点是html有点复杂。另一方面,您可以避免重复代码,并使您的 css 更具可重用性。

关于css - 将过渡添加到不同的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23612740/

相关文章:

css - 使用 jquery 减小图像大小?

javascript - 如何改变这个 JS 的速度?

css - 径向渐变背景未正确过渡

html - thead 固定和可滚动页面(不是 tbody)

jquery - 悬停在图像上时显示下拉菜单

CSS:如何使 div block *不*占用其父容器中的空间

javascript - 将字体 ‘Font Awesome’ 升级到版本 5 后图标消失

performance - CSS3 转换会减慢网站速度吗?

javascript - 为什么即使 div 没有高度,transition with translate 也会占用空间?

css - 如何在没有真实 BG 图像的情况下绘制这个背景(使用 canvas/css3?)