【发布时间】:2017-12-28 00:20:46
【问题描述】:
我在 Codepen (Chrome 59.0.3071) 上玩弄 ::placeholder 伪元素时发现了一些奇怪的东西。 (请看我的JSFiddle)
简而言之,此 CSS 不应启用 ::placeholder 颜色超过 2 秒的过渡:
input::placeholder {color:red;transition:2s;}
input:hover::placeholder {color:green}
使用 Firefox,悬停时在 2 秒间隔内没有颜色过渡(根据 W3C 规范的 this section 和不同规范的 this section,这似乎是正确的 - 跟随线程到 ::first-line伪元素),而是立即将颜色转换为绿色;
但是,使用 Chrome 的同一 JSFiddle确实在 2 秒内显示::placeholder 颜色转换,根据规范,这似乎是不正确的。
这是该版本 Chrome 中的错误(如果是,是否已解决?)还是对我对 CSS 缺乏了解的控诉?
【问题讨论】:
-
jsfiddle.net/09gc1wvd 我能够让 FF 54 使用括号而不是
::进行转换,所以也许规格有误? -
@SamuelCook 这些是完全不同的东西!使用括号表示法,您可以选择原始元素,而不是伪元素。选择器
input:hover[placeholder]表示“悬停在和 上的input元素具有placeholder属性”。所以你的例子并不能证明规格是错误的。 占位符伪元素(尽管它们可能是:)。 -
有趣的是,规范声称
::placeholder具有::first-line的所有属性,但是当您对::first-line进行相同的实验时,FF 和Chrome 都没有过渡。请参阅this fiddle 并观察差异。仔细阅读规范,我不清楚::placeholder属性集是::first-line属性的超集 还是完全相等。 -
@Auroratide,虽然它可能不是“公认的答案”,但这条评论 IMO 值得成为一个答案
标签: css css-transitions placeholder