14

我正在创建一个 CSS 动态菜单,并希望延迟悬停动作。将鼠标悬停在其链接上时菜单的反应是提供子菜单(下拉)。

我想放慢下拉过程,以便子菜单不会立即出现,但需要 1 秒才能下拉。非常感谢您的帮助。

代码如下:

<html>

<head>
<style>
#navMenu{
    margin:0;
    padding:0;
}
#navMenu ul{
    margin:0;
    padding:0;

}
#navMenu li{
    margin-right:2px;
    padding:0;
    list-style:none;
    float:left;
    position:relative;
    background:#CCC;
}
#navMenu ul li a{
    text-align:center;
    font-family:sans-serif, cursive;
    text-decoration:none;
    height:30px;
    width:150px;
    display:block;
    color:#000;
    border:10px;
  -webkit-transition: background-color 0.1s;
  -moz-transition: background-color 0.1s;
  -o-transition: background-color 0.1s;
  transition: background-color 0.1s;
}
#navMenu ul ul{
        position:absolute;
        visibility:hidden;
  -webkit-transition: background-color 0.1s;
  -moz-transition: background-color 0.1s;
  -o-transition: background-color 0.1s;
  transition: background-color 0.1s;
}

#navMenu ul li:hover ul{
    visibility:visible; 
  -webkit-transition: background-color 0.1s;
  -moz-transition: background-color 0.1s;
  -o-transition: background-color 0.1s;
  transition: background-color 0.1s;
}


</style>
</head>

<body>
<div id="wrapper"><!--beginning of wrapper div-->
<div id="navMenu"><!--Beginning of Nav Menu-->
    <ul><!--Beginning of main UL-->
      <li><a href="#">About Us</a>
            <ul><!--Begining of Internal UL-->
                <li><a href="#">Link item </a></li>
                <li><a href="#">Link item </a></li>
                <li><a href="#">Link item </a></li>
                <li><a href="#">Link item </a></li>
            </ul>
     </li>
     <li><a href="#">Contact Us</a></li>
  </ul><!--End of Main UL --></div>
</div>
<p>&nbsp;</p>

</body>

</html>

提前致谢 :)

问候,

约瑟夫

4

6 回答 6

24

您可以ease在过渡中添加一个。

transition: all .4s ease;
-webkit-transition: all .4s ease;
于 2017-09-05T04:24:10.380 回答
13

您可以使用 css 转换延迟属性,如下所示:

transition-delay: 1s; /* delays for 1 second */
-webkit-transition-delay: 1s; /* for Safari & Chrome */

在此处查找更多信息http://www.w3schools.com/cssref/css3_pr_transition-delay.asp

于 2013-10-19T18:29:01.203 回答
8

您可以为此使用该transition-delay属性。

小提琴

更新

由于您希望动画在一秒钟内完成,您只需将其声明为您的持续时间。例如: transition: background-color 1s linear;

更新的小提琴

于 2013-10-19T18:31:26.300 回答
1

如果您希望子菜单需要 1 秒才能下拉,而不是延迟 1 秒才下拉,那么完全控制加速和移动的一个选项(如果您想花哨的话)是使用CSS 动画@关键帧

这是一个很酷的演示,展示了您对 CSS 动画的控制水平。

于 2013-10-19T18:39:00.310 回答
0

因为您正在使用visibility:hidden,所以它不能像您想象的那样转换......它只有一个开和关状态。

你可以做的是结合它opacity并使用过渡延迟来抵消外观,直到不透明度开始。

这里。http://www.greywyvern.com/?post=337

于 2013-10-19T18:40:45.883 回答
0

检查这个工作演示

.transition{
    transition: all .4s;
    -moz-transition: all .4s;
    -webkit-transition:all .4s;
    -o-transition: all .4s;
    
    margin-top:20px;
    border:1px solid gray;   
    width:80px;
    padding:10px;
    margin-left:50px;
    position:relative; 
    cursor:pointer;
}

.hover_top{ 
    top:0;
}
.hover_top:hover{
    top:-10px;
}

.hover_left{    
    left:0;
}
.hover_left:hover{
    left:-10px;
}

.hover_right{   
    right:0;
}
.hover_right:hover{
    right:-10px;
}
 <div class="hover_top transition"> Hover Top </div>
 <div class="hover_left transition"> Hover Left </div>
 <div class="hover_right transition"> Hover Right </div>

于 2021-12-01T07:21:40.057 回答