是否可以在"状态"之间使用不同的延迟来切换CSS3过渡效果?例如,我正在尝试在悬停时立即使元素变高,然后在'mouseout'上等待一秒钟,然后滑动回元素的初始高度。
演示页面:jsfiddle.net/RTj9K(悬停在右上角的黑色框中)
CSS:#bar { transition:.4s ease-out 0, 1s; }
我认为末尾的时间是关于延迟的,但它似乎没有按照我想象的方式工作。
是否可以在"状态"之间使用不同的延迟来切换CSS3过渡效果?例如,我正在尝试在悬停时立即使元素变高,然后在'mouseout'上等待一秒钟,然后滑动回元素的初始高度。
演示页面:jsfiddle.net/RTj9K(悬停在右上角的黑色框中)
CSS:#bar { transition:.4s ease-out 0, 1s; }
我认为末尾的时间是关于延迟的,但它似乎没有按照我想象的方式工作。
如果您希望在 hover
和 mouseout
上设置不同的CSS过渡延迟时间,您需要使用相应的选择器进行设置。在下面的示例中,当一个元素被悬停时,初始延迟时间为 0
,但在 mouseout
上过渡效果需要延迟 1s
。
/* These transition properties apply on "mouseout" */
#bar { transition:height .5s ease-out 1s; }
/* These transition properties apply on hover */
#bar:hover { transition:height .5s ease-out 0s; }
您可以在我更新的演示中找到完整的CSS。我使用了简写的transition
属性,值的顺序如下:
transition:<property> <duration> <timing-function> <delay>;
这里有一个简化的JSFiddle示例。基本上,你需要使用transition-delay
属性:
#transform {
height:40px;
width:40px;
background-color:black;
transition: .4s ease-out;
transition-delay: 2s;
/*or shorthand: transition: .4s ease-out 2s;*/
}
#transform:hover {
transition: .4s ease-out;
width:400px;
}
/* These transition properties apply on "mouseout" */
#bar { transition:height .5s ease-out 1s; }
/* These transition properties apply on hover */
#bar:hover { transition:height .5s ease-out 0; }
请注意,如果您没有输入“s”(秒)符号,则此方法将无法正常工作:
/* These transition properties apply on "mouseout" */
#bar { transition:height .5s ease-out 1s; }
/* These transition properties apply on hover */
#bar:hover { transition:height .5s ease-out 0s; } /* note "0s" */