【问题标题】:I Want To Apply Delay On Mouse Out in css我想在 CSS 中应用鼠标移出延迟
【发布时间】:2013-04-18 16:02:12
【问题描述】:

我正在尝试在鼠标移出事件开始 CSS 转换之前应用延迟。我的 CSS 代码如下,请让我知道如何在鼠标移出的 CSS 过渡开始之前应用时间延迟。

我想在用户将鼠标指针移出菜单后使菜单保持稳定一段时间(例如 3 秒)。

.timnav li .dropdown {
    width: auto;
    min-width: 0px;
    max-width: 230px;
    height: 0;
    position: absolute;
    overflow: hidden;
    z-index: 999;
    background:rgba(255, 255, 255, 0.8);
    }

.timnav li:hover .dropdown {
    min-height: 60px;
    max-height: 500px;
    height: auto;
    width: 100%;
    padding: 0;
            -webkit-transition: delay .5s ease-in-out;
        -moz-transition: delay .5s ease-in-out;
        -o-transition: delay .5s ease-in-out;
}

.timnav li .dropdown ul {
    margin: 0;
    margin-top:7px;


}

.timnav li .dropdown ul > li {
    display: block;
    width: 100%;
    float: left;
    text-align: left;
    height: auto;
    border-radius: none;
    padding-bottom:2px;
}


    .timnav li .dropdown  .dropdown2{
    display: none;
    width: 100%;
    float: left;
    text-align: left;
    height: auto;
    border-radius: none; 
}

    .timnav li .dropdown ul > li:hover .dropdown2{
    display: block;
    width: 100%;
    float: left;
    text-align: left;
    height: auto;
    border-radius: none;

}

    .timnav li .dropdown .dropdown2:hover {
    display: block;
    width: 100%;
    float: left;
    text-align: left;
    height: auto;
    border-radius: none;


}


    .timnav li .dropdown .dropdown2 li a {
    display: block;
    padding-left:7px !important;
    height:6 !important;
    padding-top:8px;
    background: url(../images/nav-bg.jpg) repeat; color:#fff;

}


.timnav li .dropdown ul > li a {
    display: block;
    line-height: 26px;
    height: 22px;
    padding: 10px;
    background: url(../images/nav-crrent.jpg) repeat; color:#FFFFFF;

}

.timnav ul .dropdown ul li:first-child a {
    border-radius: 0;
}

.timnav li .dropdown li a:hover {
    background: url(../images/nav-bg.jpg) repeat; color:#000;
}

【问题讨论】:

    标签: html css css-transitions


    【解决方案1】:

    可以给转场加延迟,语法如下:

    transition: all 0.5s ease-in-out 3s;
    

    所以

    transition: <property> <duration> <timing-function> <delay>;
    

    所有前缀版本的语法也相同。

    我为此创建了一个演示,因为您需要做一些棘手的事情才能使该项目立即出现,但在它消失之前有延迟。

    http://jsfiddle.net/pgqM2/

    诀窍是重新定义过渡以在没有悬停时添加 3s 延迟,但在有悬停时具有 0s 延迟:

    li ul {
        opacity: 0;
        transition: all 0.5s ease 3s;
    }
    
    li:hover ul {
        opacity: 1;
        transition: all 0.5s ease 0s;
    }
    

    【讨论】:

    • 谢谢,但它不起作用,你能告诉我应该在哪里嵌入 webkit 延迟,请检查我的 css cods。你想要实时链接然后我会在这里发布。
    • 我添加了一个简单 JSFiddle 演示的链接。所有前缀的语法都是相同的,无论是-o 还是-webkit 等。
    • 感谢 Steve Fenton,它正在工作,但整体上没有附加,下拉菜单隐藏得很快。并在 chrome on mouse out 下拉菜单中切入 peice。没有显示完整。如果你能帮助我,我会把网站 URL 发给你。
    【解决方案2】:

    CSS 中有一个transition-delay 属性。只需将其添加到您的代码中,您就会得到想要的效果。

    transition-delay:3s;
    

    为了简写转场属性,这里放一张图总结一下

    所以在你的情况下它看起来像这样

    div:hover {
      -webkit-transition: .5s ease-in-out 3s;
      -moz-transition: .5s ease-in-out 3s;
      -o-transition: .5s ease-in-out 3s;
      transition: .5s ease-in-out 3s;
      color: red;
      cursor: pointer;
    }
    &lt;div&gt;Hover me. There is a delay!&lt;/div&gt;

    这里有一个fiddle 来演示

    【讨论】:

    • 谢谢,但它不起作用,你能告诉我应该在哪里嵌入 webkit 延迟,请检查我的 css cods。你想要实时链接然后我会在这里发布。
    • 请确保也使用无前缀版本(这也增加了 IE 支持)。 (请注意,Chrome 26、Firefox 16 和 Opera 12.1 都没有前缀 transition,所以至少 -moz- 可能不再需要了。)
    【解决方案3】:

    使用无显示时不能使用css过渡,只有显示无的解决方案是js。

    【讨论】:

      【解决方案4】:

      您可以使用 css3 属性 transition-delay 来延迟执行 css。点击“自己尝试”查看示例。

      【讨论】:

      • 谢谢,但它不起作用,你能告诉我应该在哪里嵌入 webkit 延迟,请检查我的 css cods。你想要实时链接然后我会在这里发布。
      猜你喜欢
      • 2012-01-15
      • 1970-01-01
      • 2016-02-28
      • 2018-07-06
      • 1970-01-01
      • 2015-08-23
      • 2012-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多