Я хочу применить Delay On Mouse Out в css
Я пытаюсь применить задержку перед началом перехода 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;
}
Ответы
Ответ 1
Вы можете добавить задержку к переходу, синтаксис выглядит следующим образом:
transition: all 0.5s ease-in-out 3s;
Итак,
transition: <property> <duration> <timing-function> <delay>;
Синтаксис одинаковый для всех префиксных версий.
Я создал демонстрацию этого, потому что вам нужно сделать что-то немного сложное, чтобы сделать элемент без задержки, но задержка перед тем, как он пойдет.
http://jsfiddle.net/pgqM2/
Трюк состоит в том, чтобы переопределить переход, чтобы добавить задержку 3 с, когда нет наведения, но иметь задержку 0 с при наведении:
li ul {
opacity: 0;
transition: all 0.5s ease 3s;
}
li:hover ul {
opacity: 1;
transition: all 0.5s ease 0s;
}
Ответ 2
В CSS есть свойство transition-delay
. Просто добавьте это в свой код, и вы получите желаемый эффект.
transition-delay:3s;
Для целей коротких свойств перехода, вот изображение, которое суммирует его
![transition: <property> || <duration> || <timing-function> || <delay> [, ...];]()
Итак, в вашем случае это будет выглядеть как
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;
}
<div>Hover me. There is a delay!</div>
Ответ 3
Вы не можете использовать переход css при использовании дисплея none, только решение с дисплеем отсутствует js.
Ответ 4
Вы можете использовать свойство css3 transition-delay для задержки выполнения css. Нажмите "Попробовать сами", чтобы увидеть пример.