使用 CSS 更改 HTML 输入的占位符颜色

Change an HTML input's placeholder color with CSS

提问人: 提问时间:4/10/2010 最后编辑:30 revs, 21 users 23%TylerH 更新时间:6/24/2023 访问量:1989481

问:

Chrome v4 支持元素的占位符属性(其他人可能也支持)。input[type=text]

但是,以下 CSS 不会对占位符的值执行任何操作:

input[placeholder], [placeholder], *[placeholder] {
    color: red !important;
}
<input type="text" placeholder="Value">

Value仍将保留,而不是 .greyred

有没有办法更改占位符文本的颜色?

CSS 占位符 HTML 输入

评论

403赞 pinkgothic 4/10/2010
快速提醒(不是解决方案,仅供参考):如果我没记错的话,input[placeholder] 只匹配具有占位符属性的 <input> 标签,它与占位符属性本身不匹配。
8赞 HEX 1/18/2016
@MathiasBynens :p laceholder-shown 伪类与显示此类占位符文本的输入元素匹配。所以它匹配标签,就像选择器一样,但刚才显示占位符文本。它也与占位符属性本身不匹配。<input>input
6赞 Mathias Bynens 1/19/2016
@HEX 它不像选择器,因为它选择所有元素。 仅选择当前显示占位符的元素,从而允许您仅设置这些元素的样式,并有效地设置占位符文本的样式。你想说什么?inputinput:placeholder-showninput
3赞 Mathias Bynens 1/21/2016
@HEX(当然,它还选择了显示占位符文本的元素。textarea
5赞 Lloyd Dominic 5/24/2017
我在这里看不出有什么问题......占位符的文本颜色现在为红色。也许其他现代浏览器现在支持它。

答:

5128赞 fuxia 4/10/2010 #1

实现

有三种不同的实现:伪元素、伪类和无。

  • WebKit,Blink(Safari,Google Chrome,Opera 15+)和Microsoft Edge正在使用伪元素。[参考]::-webkit-input-placeholder
  • Mozilla Firefox 4 到 18 使用伪类:(一个冒号)。[参考]:-moz-placeholder
  • Mozilla Firefox 19+ 正在使用伪元素: ,但旧的选择器仍然可以工作一段时间。[参考]::-moz-placeholder
  • Internet Explorer 10 和 11 使用的是伪类:。[参考]:-ms-input-placeholder
  • 2017 年 4 月:大多数现代浏览器都支持简单的伪元素 ::p laceholder [参考]

Internet Explorer 9 及更低版本根本不支持该属性,而 Opera 12 及更低版本不支持任何占位符的 CSS 选择器。placeholder

关于最佳实现的讨论仍在进行中。请注意,伪元素的行为类似于 Shadow DOM 中的真实元素。上的 A 不会获得与伪元素相同的背景颜色。paddinginput

CSS 选择器

用户代理需要忽略具有未知选择器的规则。请参阅选择器级别 3

包含无效选择器的一组选择器无效。

因此,我们需要为每个浏览器制定单独的规则。否则,所有浏览器都将忽略整个组。

::-webkit-input-placeholder { /* WebKit, Blink, Edge */
    color:    #909;
}
:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
   color:    #909;
   opacity:  1;
}
::-moz-placeholder { /* Mozilla Firefox 19+ */
   color:    #909;
   opacity:  1;
}
:-ms-input-placeholder { /* Internet Explorer 10-11 */
   color:    #909;
}
::-ms-input-placeholder { /* Microsoft Edge */
   color:    #909;
}

::placeholder { /* Most modern browsers support this now. */
   color:    #909;
}
<input placeholder="Stack Snippets are awesome!">

使用说明

  • 注意避免不良的对比。Firefox 的占位符似乎默认为不透明度降低,因此需要在此处使用。opacity: 1
  • 请注意,如果占位符文本不适合,它就会被截断 - 调整输入元素的大小,并使用较大的最小字体大小设置对其进行测试。不要忘记翻译:有些语言需要更多的空间来容纳同一个单词。em
  • 支持HTML但不支持CSS的浏览器(如Opera)也应该进行测试。placeholder
  • 占位符不能替代标签,因此请确保您也有一个标签
  • 某些浏览器对某些类型使用额外的默认 CSS(、)。这些可能会以意想不到的方式影响渲染。使用属性并更改它。例:inputemailsearch-webkit-appearance-moz-appearance
    [type="search"] {
        -moz-appearance:    textfield;
        -webkit-appearance: textfield;
        appearance: textfield;
    }

评论

0赞 TylerH 4/19/2023
这个答案可能与修订版有关,以反映事物的状态,因为所涵盖的内容和版本在 6 年内没有真正更新,而供应商在那段时间里已经基本稳定下来(更不用说 IE 基本上不再是一回事了)。如果你想这样做,那就太好了,尽管如果你同意的话,我不介意这样做。
0赞 Faegheh Mohammadian 8/16/2023
查看这些参考资料:linklink
116赞 ajcw 2/10/2011 #2

除了 toscho 的回答之外,我还注意到 Chrome 9-10 和 Safari 5 之间在支持的 CSS 属性方面存在一些 webkit 不一致之处,这些不一致值得注意。

具体来说,Chrome 9 和 10 不支持 、 和 设置占位符样式。background-colorbordertext-decorationtext-transform

完整的跨浏览器比较在这里。

323赞 8 revs, 8 users 42%Lars Flieger #3

您可能还想设置文本区域的样式:

input::-webkit-input-placeholder,
textarea::-webkit-input-placeholder {
  color: #FF9900;
}

input:-moz-placeholder,
textarea:-moz-placeholder {
  color: #FF9900;
}
<textarea rows="4" cols="50" placeholder="Stack Snippets are nice!">
</textarea>

795赞 23 revs, 9 users 65%brillout #4

/* do not group these rules */
*::-webkit-input-placeholder {
    color: red;
}
*:-moz-placeholder {
    /* FF 4-18 */
    color: red;
    opacity: 1;
}
*::-moz-placeholder {
    /* FF 19+ */
    color: red;
    opacity: 1;
}
*:-ms-input-placeholder {
    /* IE 10+ */
    color: red;
}
*::-ms-input-placeholder {
    /* Microsoft Edge */
    color: red;
}
*::placeholder {
    /* modern browser */
    color: red;
}
<input placeholder="hello"/> <br />
<textarea placeholder="hello"></textarea>

这将设置所有和占位符的样式。inputtextarea

重要提示:不要对这些规则进行分组。相反,为每个选择器制定单独的规则(组中的一个无效选择器会使整个组无效)。

21赞 user1729061 10/9/2012 #5

这个怎么样

<input type="text" value="placeholder text" onfocus="this.style.color='#000'; 
    this.value='';" style="color: #f00;" />

没有 CSS 或占位符,但您可以获得相同的功能。

评论

17赞 Lucky Soni 5/2/2013
如果有人在写完东西后再次点击会发生什么.他们写的原文将消失!
3赞 user1729061 5/19/2013
@LuckySoni你可以这样做,但我个人更喜欢第一个。<input type="text" value="placeholder text" onfocus="if(!this.haswriting){this.style.color='#000'; this.value='';}" onblur="if(!this.value){this.style.color='#f00'; this.value='placeholder text'; this.haswriting=false;}else{this.haswriting=true};" style="color: #f00;"/>
9赞 lqc 5/30/2013
即使是您的第二个版本也无法提供相同的功能。如果用户提交此输入,则占位符文本将发送到服务器。我看到很多网站都做错了。<form>
0赞 Mobarak Ali 5/15/2019
这很危险!如果你再次回到原来的样子,你就失去了一切!
62赞 Dionysios Arvanitis 2/15/2013 #6

在 Firefox 和 Internet Explorer 中,正常的输入文本颜色会覆盖占位符的颜色属性。所以,我们需要

::-webkit-input-placeholder { 
    color: red; text-overflow: ellipsis; 
}
:-moz-placeholder { 
    color: #acacac !important; text-overflow: ellipsis; 
}
::-moz-placeholder { 
    color: #acacac !important; text-overflow: ellipsis; 
} /* For the future */
:-ms-input-placeholder { 
    color: #acacac !important; text-overflow: ellipsis; 
}
40赞 Dragos Rizescu 4/14/2013 #7

我不记得我在互联网上在哪里找到这个代码片段(它不是我写的,不记得我在哪里找到的,也不记得是谁写的)。

$('[placeholder]').focus(function () {
  var input = $(this);
  if (input.val() == input.attr('placeholder')) {
    input.val('');
    input.removeClass('placeholder');
  }
}).blur(function () {
  var input = $(this);
  if (input.val() == '' || input.val() == input.attr('placeholder')) {
    input.addClass('placeholder');
    input.val(input.attr('placeholder'));
  }
}).blur();

$('[placeholder]').parents('form').submit(function () {
  $(this).find('[placeholder]').each(function () {
    var input = $(this);
    if (input.val() == input.attr('placeholder')) {
      input.val('');
    }
  })
});

只需加载此 JavaScript 代码,然后通过调用以下规则使用 CSS 编辑占位符:

form .placeholder {
   color: #222;
   font-size: 25px;
   /* etc. */
}

评论

4赞 Redtopia 12/11/2013
这是旧的方法,我已经用过很多次了。缺点是占位符文本在您聚焦时会消失。我发现当 UI 在输入旁边不包含标签时,这很烦人。在过去的几个月里,我开始用占位符文本来替换这种方法,我认为这是一个用户体验的改进。
5赞 Whelkaholism 3/7/2014
此类代码的另一个问题是,服务器端代码必须将占位符文本作为空输入进行处理,这在您想要输入名为“Town”的城镇的边缘情况下存在问题。与其根据占位符文本检查值,不如在输入上使用数据修改标志,如果未设置该标志,则在表单提交时清除输入。对于 AJAX 接口,您甚至可能没有表单,因此您应该能够将任意提交事件与输入相关联。这是那些非常简单的情况之一,但事实并非如此。
127赞 EIIPII 6/6/2013 #8

对于 BootstrapLess 用户,有一个 mixin .placeholder:

// Placeholder text
// -------------------------
.placeholder(@color: @placeholderText) {
  &:-moz-placeholder {
    color: @color;
  }
  &:-ms-input-placeholder {
    color: @color;
  }
  &::-webkit-input-placeholder {
    color: @color;
  }
}

评论

0赞 half of a glazier 12/16/2020
用于更改 Bootstrap CSS
78赞 Love Trivedi 9/14/2013 #9

这将正常工作。在这里演示:

input::-webkit-input-placeholder,
textarea::-webkit-input-placeholder {
  color: #666;
}
input:-moz-placeholder,
textarea:-moz-placeholder {
  color: #666;
}
input::-moz-placeholder,
textarea::-moz-placeholder {
  color: #666;
}
input:-ms-input-placeholder,
textarea:-ms-input-placeholder {
  color: #666;
}
<input type="text" placeholder="Value" />

48赞 2 revs, 2 users 71%Kristian #10

跨浏览器解决方案:

/* all elements */
::-webkit-input-placeholder { color:#f00; }
::-moz-placeholder { color:#f00; } /* firefox 19+ */
:-ms-input-placeholder { color:#f00; } /* ie */
input:-moz-placeholder { color:#f00; }

/* individual elements: webkit */
#field2::-webkit-input-placeholder { color:#00f; }
#field3::-webkit-input-placeholder { color:#090; background:lightgreen; text-transform:uppercase; }
#field4::-webkit-input-placeholder { font-style:italic; text-decoration:overline; letter-spacing:3px; color:#999; }

/* individual elements: mozilla */
#field2::-moz-placeholder { color:#00f; }
#field3::-moz-placeholder { color:#090; background:lightgreen; text-transform:uppercase; }
#field4::-moz-placeholder { font-style:italic; text-decoration:overline; letter-spacing:3px; color:#999; }

图片来源:大卫·沃尔什

40赞 3 revs, 3 users 59%gfaceless #11

对于 Bootstrap 用户,如果您使用的是 ,则可能存在 CSS 特异性问题。您应该获得更高的优先级:class="form-control"

.form-control::-webkit-input-placeholder {
    color: red;
}
/* ... and other browsers */

或者,如果您使用的是 Less

.form-control{
    .placeholder(red);
}
93赞 4 revs, 3 users 64%Konst_ #12

对于 Sass 用户:

// Create placeholder mixin
@mixin placeholder($color, $size:"") {
  &::-webkit-input-placeholder {
    color: $color;
    @if $size != "" {
      font-size: $size;
    }
  }
  &:-moz-placeholder {
    color: $color;
    @if $size != "" {
      font-size: $size;
    }
  }
  &::-moz-placeholder {
    color: $color;
    @if $size != "" {
      font-size: $size;
    }
  }
  &:-ms-input-placeholder {
    color: $color;
    @if $size != "" {
      font-size: $size;
    }
  }
}

// Use placeholder mixin (the size parameter is optional)
[placeholder] {
  @include placeholder(red, 10px);
}
46赞 2 revs, 2 users 86%user3790069 #13

现在,我们有了一种将 CSS 应用于输入占位符的标准方法:来自此 CSS 模块 Level 4 Draft 的伪元素。::placeholder

评论

0赞 Lonnie Best 2/27/2017
这在 Firefox 51 中有效。我只是要使用这种方法;对我来说,其他浏览器很快就会赶上来(因为如果不应用标准样式,则不会破坏任何功能)。
45赞 4 revs, 4 users 54%Burak Tokak #14

我刚刚意识到 Mozilla Firefox 19+ 的一些事情,浏览器为占位符提供了不透明度值,因此颜色不会是您真正想要的。

input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
    color: #eee; opacity:1;
}
input:-moz-placeholder, textarea:-moz-placeholder {
    color: #eee; opacity:1;
}
input::-moz-placeholder, textarea::-moz-placeholder {
    color: #eee; opacity:1;
}
input:-ms-input-placeholder, textarea:-ms-input-placeholder {
    color: #eee; opacity:1;
}

我覆盖了 for 1,所以它会很好。opacity

40赞 Alias Varghese 6/25/2015 #15

我认为这段代码会起作用,因为只有输入类型文本才需要占位符。因此,这一行 CSS 就足以满足您的需求:

input[type="text"]::-webkit-input-placeholder {
    color: red;
}

评论

0赞 RiZKiT 7/19/2018
不要再使用这个了。还有几个带有占位符和更多前缀的元素。请参阅上面的解决方案或与 autoprefixer 一起使用。::placeholder
17赞 2 revs, 2 users 80%aviram83 #16

我在我的移动平台上尝试了这里的每一种组合来改变颜色,最终是:

-webkit-text-fill-color: red;

这成功了。

评论

2赞 David Murdoch 8/5/2015
This property allows you to specify a fill color for text. If it is not set, then the color property will be used to do the fill.在我看来,您还有其他一些设置属性的 CSS 规则。color
63赞 5 revs, 4 users 50%hitautodestruct #17

CSS 提供了伪元素。::placeholder

请注意,Bootstrap 中的 .placeholder mixin 已被弃用,取而代之的是此功能。

例:

input::placeholder { color: black; }

使用 autoprefixer 时,上述内容将转换为所有浏览器的正确代码。

评论

0赞 Halo 3/28/2022
谢谢。。。我一直在寻找一种单线解决方案,而不是 TL;DR 回答了上面的问题。
21赞 5 revs, 5 users 37%Banti Mathur #18

这个简短而干净的代码:

::-webkit-input-placeholder {color: red;}
:-moz-placeholder           {color: red; /* For Firefox 18- */}
::-moz-placeholder          {color: red; /* For Firefox 19+ */}
:-ms-input-placeholder      {color: red;}
21赞 3 revs, 3 users 68%mansoor.khan #19

如果您使用的是 Bootstrap 并且无法使其正常工作,那么您可能错过了 Bootstrap 本身添加这些选择器的事实。这就是我们正在谈论的 Bootstrap v3.3。

如果你试图改变一个.form-control CSS类中的占位符,那么你应该像这样覆盖它:

.form-control::-webkit-input-placeholder { /* WebKit, Blink, Edge */
    color:    #777;
}
.form-control:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
    color:    #777;
    opacity:  1;
}
.form-control::-moz-placeholder { /* Mozilla Firefox 19+ */
    color:    #777;
    opacity:  1;
}
.form-control:-ms-input-placeholder { /* Internet Explorer 10-11 */
    color:    #777;
}
7赞 Mahendra Kulkarni #20

这里再举一个例子:

.form-control::-webkit-input-placeholder {
  color: red;
  width: 250px;
}
h1 {
  color: red;
}
<div class="col-sm-4">
  <input class="form-control" placeholder="Enter text here.." ng-model="Email" required/>
</div>

3赞 2 revs, 2 users 73%bendav91 #21

Compass 有一个开箱即用的混合器。

举个例子:

<input type="text" placeholder="Value">

在使用 Compass 的 SCSS 中:

input[type='text'] {
  @include input-placeholder {
    color: #616161;
  }
}

有关 input-placeholder mixin 的文档,请参阅文档。

10赞 trungk18 #22

对于使用波旁威士忌的 SASS/SCSS 用户,它有一个内置功能。

//main.scss
@import 'bourbon';

input {
  width: 300px;

  @include placeholder {
    color: red;
  }
}

CSS 输出,你也可以抓取这部分并粘贴到你的代码中。

//main.css

input {
  width: 300px;
}

input::-webkit-input-placeholder {
  color: red;
}
input:-moz-placeholder {
  color: red;
}
input::-moz-placeholder {
  color: red;
}
input:-ms-input-placeholder {
  color: red;
}
6赞 Alireza #23

好的,占位符在不同的浏览器中表现不同,所以你需要在你的CSS中使用浏览器前缀来使它们相同,例如Firefox默认为占位符提供透明度,所以需要在你的css中添加不透明度1,加上颜色,大多数时候这不是一个大问题,但最好让它们保持一致:

*::-webkit-input-placeholder { /* WebKit browsers */
    color:    #ccc;
}
*:-moz-placeholder { /* Mozilla Firefox <18 */
    color:    #ccc;
    opacity:  1;
}
*::-moz-placeholder { /* Mozilla Firefox 19+ */
    color:    #ccc;
    opacity:  1;
}
*:-ms-input-placeholder { /* Internet Explorer 10-11 */
    color:    #ccc;
}
0赞 3 revs, 2 users 73%Anand #24

试试这个,它可以在所有你喜欢的浏览器上运行:

::-webkit-input-placeholder {
   /* Chrome/Opera/Safari */
   color: pink;
}
::-moz-placeholder {
   /* Firefox 19+ */
   color: pink;
}

:-moz-placeholder {
   /* Firefox 18- */
   color: pink;
}
10赞 Md. Abu Sayed #25

尝试以下代码,用于不同的输入元素,不同的样式

your css selector::-webkit-input-placeholder { /*for webkit */
    color:#909090;
    opacity:1;
}
 your css selector:-moz-placeholder { /*for mozilla */
    color:#909090;
    opacity:1;
}
 your css selector:-ms-input-placeholder { /*for for internet exprolar */ 
   color:#909090;
   opacity:1;
}

示例 1:

input[type="text"]::-webkit-input-placeholder { /*for webkit */
    color: red;
    opacity:1;
}
 input[type="text"]:-moz-placeholder { /*for mozilla */
    color: red;
    opacity:1;
}
 input[type="text"]:-ms-input-placeholder { /*for for internet exprolar */ 
   color: red;
   opacity:1;
}

示例 2:

input[type="email"]::-webkit-input-placeholder { /*for webkit */
    color: gray;
    opacity:1;
}
 input[type="email"]:-moz-placeholder { /*for mozilla */
    color: gray;
    opacity:1;
}
 input[type="email"]:-ms-input-placeholder { /*for for internet exprolar */ 
   color: gray;
   }
1赞 2 revs, 2 users 55%aphoe #26

试试这个:

::-webkit-input-placeholder {
   /* Chrome/Opera/Safari */
   color: pink;
}
::-moz-placeholder {
   /* Firefox 19+ */
   color: pink;
}
:-ms-input-placeholder {
   /* IE 10+ */
   color: pink;
}
:-moz-placeholder {
   /* Firefox 18- */
   color: pink;
}
-1赞 2 revs, 2 users 65%Kevin M. Mansour #27

在 HTML 文件中:

<input type="text" placeholder="placeholder" class="redPlaceHolder" />

在 CSS 文件中:

.redPlaceHolder {
   color: #ff0000;
}
7赞 2 revs, 2 users 93%Deepak Kumar #28

您可以使用 CSS 更改 HTML5 输入的占位符颜色。如果碰巧,你的CSS冲突,这个代码说明工作,你可以像下面这样使用(!important)。

::-webkit-input-placeholder { /* WebKit, Blink, Edge */
    color:#909 !important;
}
:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
   color:#909 !important;
   opacity:1 !important;
}
::-moz-placeholder { /* Mozilla Firefox 19+ */
   color:#909 !important;
   opacity:1 !important;
}
:-ms-input-placeholder { /* Internet Explorer 10-11 */
   color:#909 !important;
}
::-ms-input-placeholder { /* Microsoft Edge */
   color:#909 !important;
}

<input placeholder="Stack Snippets are awesome!">

希望这会有所帮助。

5赞 2 revs, 2 users 92%fraweb #29

您可以将其用于输入和焦点样式:

input::-webkit-input-placeholder  { color:#666;}
input:-moz-placeholder  { color:#666;}
input::-moz-placeholder { color:#666;}
input:-ms-input-placeholder  { color:#666;}
/* focus */
input:focus::-webkit-input-placeholder { color:#eee; }
input:focus:-moz-placeholder { color:#eee } /* FF 4-18 */
input:focus::-moz-placeholder { color:#eee } /* FF 19+ */
input:focus:-ms-input-placeholder { color:#eee } /* IE 10+ */
13赞 6 revsNVRM #30

添加一个实际的非常好和简单的可能性:CSS过滤器

enter image description here

enter image description here

enter image description here

它将设置所有内容的样式,包括占位符。

下面将在同一调色板上设置两个元素,使用色相滤镜进行颜色更改。它现在在浏览器中呈现得很好(除了 ie...input

input {
  filter: sepia(100%) saturate(400%) grayscale(0) contrast(200%) hue-rotate(68deg) invert(18%);
}
<input placeholder="Hello world!" />
<input type="date" /><br>
<input type="range" />
<input type="color" />

要允许用户动态更改它,使用输入类型颜色进行更改,或查找细微差别,请查看以下代码片段:

发件人: Codepen

function stylElem() {
  stylo.dataset.hue = ((parseInt(stylo.value.substring(1), 16))/46666).toFixed(0)
  Array.from(document.querySelectorAll('input, audio, video')).forEach(function(e){
      e.style.cssText += ";filter:sepia(100%) saturate(400%)grayscale(0)contrast(200%)hue-rotate("+ stylo.dataset.hue+"deg)invert("+(stylo.dataset.hue/3.6)+"%)"
  out.innerText = e.style.cssText
})()}

stylElem()
body {background: black; color: white}
Choose a color!
<input type="color" id="stylo" oninput="stylElem()">
<br>
<div id="out"></div> <p>
  <input placeholder="Hello world!" />
  <input type="date" /><br>
  <input type="range" />
 <br>
<audio controls src="#"></audio> <br><br> 
<video controls src="#"></video>

Css 筛选器文档:https://developer.mozilla.org/en-US/docs/Web/CSS/filter

5赞 codeWithMe #31

最简单的方法是:

#yourInput::placeholder {
    color: red;/*As an example*/
}
/* if that would not work, you can always try styling the attribute itself: */
#myInput[placeholder] {
    color: red;
}
-2赞 2 revs, 2 users 65%Majedur #32

不同浏览器中特定元素的占位符颜色。

.contact::-webkit-input-placeholder {
    /* Chrome/Opera/Safari */
    color: pink;
}
.contact::-moz-placeholder {
    /* Firefox 19+ */
    color: pink;
}
.contact:-ms-input-placeholder {
    /* IE 10+ */
    color: pink;
}
.contact:-moz-placeholder {
    /* Firefox 18- */
    color: pink;
}
<input class="contact" type="email" placeholder="[email protected]" />

2赞 2 revs, 2 users 61%Kevin M. Mansour #33

HTML 的一部分:

<form action="www.anything.com">
    <input type="text" name="name" placeholder="Enter sentence" />
</form>

我将展示如何通过CSS更改表达式“输入句子”的颜色:

::placeholder {
    color: blue;
}
4赞 Mohammad Ayoub Khan #34

这是CSS选择器的解决方案

::-webkit-input-placeholder { /* WebKit, Blink, Edge */
    color:    #909;
}
:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
   color:    #909;
   opacity:  1;
}
::-moz-placeholder { /* Mozilla Firefox 19+ */
   color:    #909;
   opacity:  1;
}
::-ms-input-placeholder { /* Microsoft Edge */
   color:    #909;
}
:-ms-input-placeholder { /* Internet Explorer 10-11 */
   color:    #909;
}
  • WebKit,Blink(Safari,Google Chrome,Opera 15+)Microsoft Edge正在使用伪元素::
    :-webkit-input-placeholder。
  • Mozilla Firefox 4 到 18 使用伪类:
    :-moz-placeholder(一个冒号)。
    Mozilla Firefox 19+ 使用伪元素::
    :-moz-placeholder,但旧的选择器仍然可以工作一段时间。
  • Internet Explorer 10 和 11 使用伪类:
    :-ms-input-placeholder。
  • Internet Explorer 9 及更低版本根本不支持占位符属性,而 Opera 12 及更低版本不支持任何占位符的 CSS 选择器。
-1赞 3 revs, 3 users 57%Mohsa #35

此代码将使用选择器更改占位符的颜色。::placeholder

::-webkit-input-placeholder {
    /* Edge */
    color: red;
}

:-ms-input-placeholder {
    /* Internet Explorer */
    color: red;
}

::placeholder {
    color: red;
}
-1赞 4 revs, 2 users 73%Asraf #36

.input-control::placeholder {
    /* Chrome, Firefox, Opera, Safari 10.1+ */
    color: red !important;
    opacity: 1; /* Firefox */
}

.input-control:-ms-input-placeholder {
    /* Internet Explorer 10-11 */
    color: red !important;
}

.input-control::-ms-input-placeholder {
    /* Microsoft Edge */
    color: red !important;
}
<input type="text" class="input-control" placeholder="My Input" />

查看此参考资料以了解更多信息。

1赞 4 revs, 3 users 61%Ravat Sindhav #37

试试这个:

input::placeholder {
   color: #900009;
}

评论

0赞 User1010 1/23/2021
为什么这样做?考虑为您的答案添加一些解释,使其比其他解决方案更突出。
0赞 Kevin Oswaldo 10/7/2021
我缺少输入部分,非常感谢
0赞 2 revs, 2 users 54%Kevin M. Mansour #38

使用此代码,它适用于所有浏览器。

CSS:

::placeholder {
   color: #ccc;
}

HTML格式:

<input class="form-control" placeholder="write Here.." />
6赞 2 revs, 2 users 93%Sarvesh #39

::placeholder{
  color: red;
}
<input type="text" placeholder="Value">

7赞 2 revsIsmoil Shokirov #40

这对于大多数现代浏览器来说都很好

input::placeholder{
  color: red; // css implementation
}

以防万一,如果您使用的是 SCSS

input {
  &::placeholder {
    color: red; // scss
  }
}
0赞 2 revs, 2 users 83%Suresh Suthar #41

input::placeholder {
   color: red;
}
<input type="text" placeholder="value" />

3赞 2 revs, 2 users 58%Lokesh Thakur #42

试试这个CSS:

input::-webkit-input-placeholder {
    /* Chrome/Opera/Safari */
    color: #ddd;
}
input::-moz-placeholder {
    /* Firefox 19+ */
    color: #ddd;
}
input:-ms-input-placeholder {
    /* IE 10+ */
    color: #ddd;
}
input:-moz-placeholder {
    /* Firefox 18- */
    color: #ddd;
}