firefox的::-moz-placeholder必须显式设置opacity:1,因其默认opacity:0.54会导致颜色发灰;safari不支持rgba()的alpha通道,需拆分为color+opacity;四套前缀缺一不可且::placeholder须置于最后。

Firefox 的 ::-moz-placeholder 必须显式写 opacity: 1
Firefox 默认给 ::-moz-placeholder 加了 opacity: 0.54,哪怕你只设了 color,最终颜色也会发灰、变浅。光靠 color: #999 压不住这个默认值。
必须在每条 ::-moz-placeholder 规则里都带上 opacity: 1,否则上线后 placeholder 突然变淡、看不清,十有八九是它在作怪。
老版本 Firefox(如 50)甚至不认 opacity,所以别省略——写了不一定全生效,但不写一定失效。
Safari 的 ::-webkit-input-placeholder 不支持 rgba() 透明度
如果你按设计稿写了 color: rgba(153, 153, 153, 0.6),Safari(尤其是 iOS 16.3 及更早)可能直接忽略 alpha 值,或者在深色模式下渲染异常,导致文字“突然变黑”或“完全隐形”。
正确做法是拆开:color: #999 + opacity: 0.6,并且确保这条 opacity 同时出现在所有前缀规则中,包括 ::-webkit-input-placeholder。
别用 inherit 或 currentcolor 做 color 值——Safari 有时会继承 input 的 border 色,让 placeholder 文字和边框同色,等于消失。
四个前缀必须同时存在,且 ::placeholder 放最后
只写 input::placeholder 看似简洁,但在 Safari 14、Firefox 49、IE11 这些仍在部分企业内网或旧设备上跑的环境里,整段样式会被跳过。
必须四选一补全:
• input::-webkit-input-placeholder(Chrome/Safari/Edge)
• input::-moz-placeholder(Firefox 19+,注意是双冒号)
• input:-ms-input-placeholder(IE10–11,单冒号)
• input::placeholder(标准语法,放最后)
顺序不能错:标准写法必须放在最后,否则会被前面带前缀的规则覆盖——因为 CSS 是从上到下解析,同权重时后者胜出。
哪些样式属性真能用,哪些只是看着像能用
::placeholder 不是普通元素,它只接受有限的文本类声明。盒模型、背景、滤镜等一律无效,而且各浏览器支持程度还不一致。
可安全用:color、font-size、font-family、opacity、line-height(需配合 padding 微调垂直居中)
慎用:font-style(Safari 有时失效)、text-align(Firefox 表现不稳定)
绝对别试:background、border、padding、margin、transform、filter
本地开发看着好好的,上线后 placeholder 颜色错乱或消失?大概率是某条泛用的 *::placeholder 或第三方 reset.css 把你的规则盖掉了——打开 DevTools 的 Computed 面板,点开 ::placeholder,看哪条规则实际生效。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











