悬停和鼠标移动的不同CSS转换延迟?

时间:2011-05-07 12:34:34

标签: css css3 transitions css-transitions

是否可以在“状态”之间使用不同的延迟切换来使用CSS3过渡?例如,我试图在悬停时立即将元素设置为更高,然后在'mouseout'上等待一秒钟,然后再滑回元素的初始高度。

演示页: jsfiddle.net/RTj9K(在右上角悬停黑框)

CSS: #bar { transition:.4s ease-out 0, 1s; }

我认为最后的时间与延迟相关,但似乎并没有像我想象的那样发挥作用。

3 个答案:

答案 0 :(得分:101)

如果您希望在hovermouseout上有不同的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>;

回答演示:http://jsbin.com/lecuna/edit?html,css,output

答案 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" */