是否可以在“状态”之间使用不同的延迟切换来使用CSS3过渡?例如,我试图在悬停时立即将元素设置为更高,然后在'mouseout'上等待一秒钟,然后再滑回元素的初始高度。
演示页: jsfiddle.net/RTj9K(在右上角悬停黑框)
CSS: #bar { transition:.4s ease-out 0, 1s; }
我认为最后的时间与延迟相关,但似乎并没有像我想象的那样发挥作用。
答案 0 :(得分:101)
如果您希望在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>;
答案 1 :(得分:12)
这是一个简化的JSFiddle example。基本上你需要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;
}
答案 2 :(得分:3)
/* 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; }
只是说,如果你不进入&#39; (秒)符号,所以:
/* 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" */