覆盖所有浏览器中的占位符字体css

use*_*912 3 css placeholder pseudo-element

我试图使用以下代码覆盖我网站上所有标题,输入,选择,文本区域和输入占位符的字体:

h1, h2, h3, h4, h5, h6,
button, input, select, textarea,
:-ms-input-placeholder,
::-moz-placeholder,
:-moz-placeholder,
::-webkit-input-placeholder {
    font-family:some font name;
}
Run Code Online (Sandbox Code Playgroud)

问题是,由于某种原因,它无法在Chrome上运行.如果我删除:-moz:-ms引用,那么chrome工作正常,这让我相信Chrome由于某种原因不喜欢伪类?我很难过,因为我无法理解为什么与Chrome无关的伪类会使它无效!

小智 13

您需要单独声明它才能在所有浏览器中使用,否则冲突将导致不希望的结果.

h1, h2, h3, h4, h5, h6,
button, input, select, textarea {
    font-family: somefont;
}
::-webkit-input-placeholder {
    font-family: somefont;
}
:-moz-placeholder {
    font-family: somefont;
}
::-moz-placeholder {
    font-family: somefont;
}
:-ms-input-placeholder {
    font-family: somefont;
}
Run Code Online (Sandbox Code Playgroud)

  • 原因是无法识别的选择器使整个语句格式错误,因此由于CSS错误处理规则而被跳过:http://www.w3.org/TR/CSS21/syndata.html#parsing-errors (4认同)