如何组合多个“过渡”规则?

Posted

技术标签:

【中文标题】如何组合多个“过渡”规则?【英文标题】:How to combine multiple "transition" rules? 【发布时间】:2014-09-01 20:14:27 【问题描述】:

我希望有 CSS 轻量级类,每个类都意味着一件事。 所以我想要一个类说当鼠标悬停在一个项目上时它会变得更高,而另一个类说如果父项不活动,该项目应该变得不可见。 问题是这些方面的每一个都应该是动画的,所以我在第一类中定义了transition: height 1s,在另一类中定义了transition: opacity 2s

这是我尝试的简化版本,这似乎与我预期的完全不同:规则不会合并,而只是相互覆盖。

.active_only 
  opacity: 0;
  transition: opacity 1s;

.activator:hover .active_only 
  opacity: 1;

.elastic 
  height: 20px;
  transition: height 2s;

.elastic:hover 
  height: 40px;

li 
  border: 1px solid red;
<div class="activator">
  Here's a magic list
  <ul>
    <li class="elastic active_only">item one
      <li class="elastic active_only">item two
  </ul>
</div>

如何在同一个元素上应用多个过渡规则?

【问题讨论】:

用户transition: all 1s 你找到解决办法了吗? 【参考方案1】:

转场是在相同的元素上声明的,因此即使您使用不同的类来声明它们,转场属性也会被第二个转场声明覆盖

如果您使用以下语法 (check w3.org for reference) 在一个以逗号分隔的声明中声明它们,则可以转换多个属性,例如高度和不透明度:

transition: opacity 1s, height 2s;

您的代码应如下所示:

.active_only 
    opacity:0;
    transition:opacity 1s, height 2s;

.activator:hover .active_only 
    opacity:1;

.elastic 
    height:20px;

.elastic:hover 
    height:40px;

li 
    border:1px solid red;
<div class="activator">Here's a magic list
    <ul>
        <li class="elastic active_only">item one</li>
        <li class="elastic active_only">item two</li>
    </ul>
</div>

【讨论】:

【参考方案2】:

您可以使用all 使所有正在更改的属性都具有过渡效果,或者如果您只想选择(但多个)属性具有过渡效果,则可以使用逗号分隔值。

.active_only 
    opacity: 0;
    -webkit-transition: height 1s, opacity 1s;
    -moz-transition: height 1s, opacity 1s;
    transition: height 1s, opacity 1s;

.active_only 
    opacity: 0;
    -webkit-transition: all 1s;
    -moz-transition: all 1s;
    transition: all 1s;

.active_only 
  opacity: 0;
  -webkit-transition: height 1s, opacity 1s;
  -moz-transition: height 1s, opacity 1s;
  transition: height 1s, opacity 1s;

.activator:hover .active_only 
  opacity: 1;

.elastic 
  height: 20px;

.elastic:hover 
  height: 40px;

li 
  border: 1px solid red;
<div class="activator">
  Here's a magic list
  <ul>
    <li class="elastic active_only">item one</li>
    <li class="elastic active_only">item two</li>
  </ul>
</div>

Using CSS Transitions - MDN Guide

【讨论】:

以上是关于如何组合多个“过渡”规则?的主要内容,如果未能解决你的问题,请参考以下文章

CSS如何实现动画?

如何在python中绘制多个组之间的过渡

如何正确地将多个片段添加到片段过渡?

如何popToRootViewController在navigationController堆栈上有多个viewController,并且只显示一个过渡?

多个 css3 过渡类型不使用“全部”

如何在从单体架构过渡到微服务架构之间管理多个暂存环境