【发布时间】:2017-12-07 01:54:20
【问题描述】:
我已经尝试了here 和其他重复的here 的解决方案,但这些问题已有 4 年历史,并且这些解决方案不适用于较新版本的 Firefox。此外,后者中链接的错误状态为:VERIFIED FIXED。
我尝试只使用与占位符前缀匹配的转换前缀以及转换回退,但没有运气。例如:
&::-moz-placeholder {
-moz-transition: $transition;
transition: $transition;
}
以下内容适用于 chrome,但不适用于 Firefox 或 Edge。不透明度变化很好,但没有过渡。我是否缺少支持 Firefox 和 Edge 占位符转换的内容?
@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);
}
【问题讨论】:
-
对于跨浏览器解决方案,也许我的这个答案会很有趣:stackoverflow.com/questions/44333727/…
-
嗯,我的答案 :) 我刚刚尝试了最新的 Firefox,是的,它失败了.. 你能给我一天的时间来解决它吗?我会看看是否可以找到另一种方法来为占位符设置动画。
-
@LGSon 谢谢,如果不能使用 CSS,我不反对 javascript 解决方案。
-
好吧,脚本实际上与动画本身无关,它解决了输入元素存在的问题,当向输入添加值时,您无法使用 CSS @ 检测987654326@是否有值,作为选择器检查
inputs属性value,与你在字段中输入的不一样 -
@LGSon 我明白了,我之前只是快速浏览了一下。我已经有一个标签效果,就像你的答案中列出的那样,但现在我正试图在标签转换到顶部时将占位符转换为视图。由于我已经有了与您的答案非常相似的东西,因此很容易在另一个元素上做同样的事情。在我的具体情况下,它需要更多的 JS,所以如果可能的话,我更喜欢纯 CSS 解决方案。
标签: css sass placeholder