使用 CSS3 过渡延迟鼠标悬停/悬停

Posted

技术标签:

【中文标题】使用 CSS3 过渡延迟鼠标悬停/悬停【英文标题】:Delay mouseout/hover with CSS3 transitions 【发布时间】:2012-03-12 16:22:25 【问题描述】:

我有一个在悬停时会改变大小的框。但是,我想延迟 mouseout 阶段,以便盒子在恢复旧尺寸之前保持新尺寸几秒钟。

div 
    width: 70px;
    -webkit-transition: .5s all;    


div:hover 
    width:130px;

在没有 javascript 而只有 CSS3 的情况下可以做到这一点吗?我只需要关心支持 webkit

【问题讨论】:

你试过css3动画属性吗?我已经尝试了一些动画属性的东西,但我不确定这是你想要的。但如果你愿意,我可以给你。 【参考方案1】:
div 
    width: 70px;
    -webkit-transition: .5s all;   
    -webkit-transition-delay: 5s; 
    -moz-transition: .5s all;   
    -moz-transition-delay: 5s; 
    -ms-transition: .5s all;   
    -ms-transition-delay: 5s; 
    -o-transition: .5s all;   
    -o-transition-delay: 5s; 
    transition: .5s all;   
    transition-delay: 5s; 


div:hover 
    width:130px;
    -webkit-transition-delay: 0s;
    -moz-transition-delay: 0s;
    -ms-transition-delay: 0s;
    -o-transition-delay: 0s;
    transition-delay: 0s;

这将立即触发 mouseover 状态,但等待 5 秒直到触发 mouseout。

Fiddle

【讨论】:

已编辑以添加非 webkit 前缀 - 这只是一个好习惯 在“div”标签定义中,指定“transition:”和“transition-delay”本质上不是重复的吗?转换规范的第一个值是延迟值,不是吗? @Screenack 不,第一个值是过渡的持续时间 - 完成后需要多长时间。 转换的真棒使用,patad。【参考方案2】:

转换可以声明为

transition: .5s all 5s

(简写,第一个数字是持续时间,第二个数字是延迟) 那么你就不需要单独的转换延迟

抱歉,积分不足,无法添加评论

【讨论】:

以上是关于使用 CSS3 过渡延迟鼠标悬停/悬停的主要内容,如果未能解决你的问题,请参考以下文章

如何使 CSS3 悬停过渡只运行一次,而不是在用户“取消悬停”后“倒带”?

CSS3 过渡/悬停效果在 Firefox 中不起作用; Firefox 错误?

CSS3菜单展开,悬停消失

快速鼠标悬停/鼠标悬停的完整悬停动画持续时间?

CSS 过渡 - 仅在悬停时淡入淡出元素

当鼠标离开元素时如何设置悬停过渡[重复]