CSS3 one-way transition?

HtmlCss

Html Problem Overview


Using CSS3 transitions, it's possible to have a 'smooth up' and 'smooth down' effect to whatever property.

Can I have it setup to have only a 'smooth down' effect? I'd like the solution to be in CSS only, avoiding JavaScript if possible.

Logic flow:

  • User clicks element
  • Transition takes 0.5s to change background color from white to black
  • User lets go of the mouse left button
  • Transition takes 0.5s to change background color from black to white

What I want:

  • User clicks element
  • Transition takes 0s to change
  • User lets go of mouse button
  • Transition takes 0.5s to change...

There's no 'transition-in' time, but there's a 'transition-out' time.

Html Solutions


Solution 1 - Html

I tried the following in the CSS3 Tryit Editor and it worked in Chrome (12.0.742.60 beta-m).

/* transition out, on mouseup, to white, 0.5s */
input
{
  background:white;
  -webkit-transition:background 0.5s;
  -moz-transition:background 0.5s;
  -ms-transition:background 0.5s;
  -o-transition:background 0.5s;
  transition:background 0.5s;
}

/* transition in, on click, to black, 0s */
input:active
{
  background:black;
  -webkit-transition:background 0s;
  -moz-transition:background 0s;
  -ms-transition:background 0s;
  -o-transition:background 0s;
  transition:background 0s;
}

<input type="button" value="click me to see the transition effect!">

Solution 2 - Html

using "transition:none" works also :

div{
  height: 40px;
  width: 40px;
  padding: 40px;
  background: tomato;
  transition: background 0.3s ease-in;
}
div:active{
  background: blue;
  transition: none;
}

<div>click me</div>

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAbhishekView Question on Stackoverflow
Solution 1 - HtmlMatty KView Answer on Stackoverflow
Solution 2 - HtmlNicolas GuidettiView Answer on Stackoverflow