I have tried the solutions here and the other duplicate here, but those questions are 4 years old and the solutions do not work on newer versions of Firefox. Also, the bug linked in the latter has status: VERIFIED FIXED.
I have tried using only the transition prefix matching the placeholder prefix along with the transition fallback with no luck. ex:
&::-moz-placeholder {
-moz-transition: $transition;
transition: $transition;
}
What's below works on chrome but not Firefox or Edge. The opacity changes fine but there is no transition. Am I missing something to support both Firefox and Edge placeholder transitions?
@mixin transition($transition...) {
-webkit-transition: $transition;
-moz-transition: $transition;
-o-transition: $transition;
transition: $transition;
}
@mixin placeholderOpacity($opacity) {
&:-moz-placeholder {opacity: $opacity}
&:-ms-input-placeholder {opacity: $opacity}
&::-webkit-input-placeholder {opacity: $opacity}
&::-moz-placeholder {opacity: $opacity}
&::placeholder {opacity: $opacity}
}
@mixin placeholderTransition($transition) {
&:-moz-placeholder {@include transition($transition);}
&:-ms-input-placeholder {@include transition($transition);}
&::-webkit-input-placeholder {@include transition($transition);}
&::-moz-placeholder {@include transition($transition);}
&::placeholder {@include transition($transition);}
}
input {
@include placeholderOpacity(0);
@include placeholderTransition(opacity 500ms ease-in-out);
}
input:focus {
@include placeholderOpacity(1);
}