Different CSS transition-delays for hover and mouseout?
Solution 1:
If you want different CSS transition delays on hover
and mouseout
, you have to set them using the relevant selectors. In the example below, when an element is hovered, the initial delay on hover is 0
but on mouseout
the transition is delayed by 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; }
You can find the full CSS in my question's updated demo below. I've used the shorthand transition
property, the order of the values are:
transition:<property> <duration> <timing-function> <delay>;
Answer Demo: http://jsbin.com/lecuna/edit?html,css,output
Solution 2:
Here is a simplified JSFiddle example. Basically you need the transition-delay
property:
#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;
}
Solution 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; }
Just to say that this won't work if you do not enter 's' (seconds) symbol, so:
/* 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" */