当前位置: 首页 > 面试题库 >

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

叶卓君
2023-03-14
问题内容

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

但是以下CSS内容对占位符的价值没有任何作用:

input[placeholder], [placeholder], *[placeholder] {

    color: red !important;

}


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

Value仍将保留grey而不是red

是否可以更改占位符文本的颜色?


问题答案:

实作

有三种不同的实现:伪元素,伪类,什么也没有。

  • 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月: 大多数现代浏览器都支持简单的伪元素::placeholder [ Ref ]

Internet Explorer 9和更低版本完全不支持该placeholder属性,而Opera12和更低版本则不支持占位符的任何CSS选择器。

关于最佳实现的讨论仍在进行中。请注意,伪元素在ShadowDOM中的作用类似于真实元素。一个paddinginput不会得到相同的背景颜色与伪元素。

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 { /* 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支持placeholder但不具有CSS支持的浏览器(例如Opera)也应进行测试。
  • 有些浏览器使用一些额外的默认CSS input类型(emailsearch)。这些可能会以意想不到的方式影响渲染。使用属性 -webkit-appearance-moz-appearance进行更改。例:
    [type="search"] {
        -moz-appearance:    textfield;
        -webkit-appearance: textfield;
        appearance: textfield;
    }
    


 类似资料:
  • 问题内容: 我尝试遵循以下主题,但未成功。使用CSS更改HTML5输入的占位符颜色 我曾尝试为占位符着色,但在Chrome 17.0.963.56 m上它仍保持灰色。 HTML CSS 在Firefox 10.0.2上,它运行良好。 问题答案: 你忘记了。因此,整个选择器已损坏,无法正常工作。 编辑:好像(更新后?)这不再起作用,请尝试以下操作: 注意:请勿混用供应商前缀选择器(-moz,-web

  • 遵循这篇文章(样式文本输入占位符),我可以将文本输入占位符的颜色改为红色。但它总是一种浅红色,并不完全是红色。 有什么办法可以使它变成红色吗? 更新

  • 问题内容: 我有一个实现深蓝色的设计,因为默认情况下,占位符文本为深灰色,所以我几乎无法分辨出占位符文本的含义。 我已经用谷歌搜索了这个问题,但是我还没有想出使用Swift语言而不是Obj-c的解决方案。 有没有一种方法可以使用Swift 更改占位符文本的颜色? 问题答案: 您可以使用 属性字符串 设置占位符文本。通过:传递所需的颜色: 对于Swift 3+,请使用以下命令: 对于Swift 4.

  • 我有一个实现深蓝色的设计,因为占位符文本默认是深灰色,我几乎看不出占位符文本说了什么。 当然,我已经在谷歌上搜索了这个问题,但我还没有找到一个解决方案,因为我使用的是Swift语言,而不是Obj-c。 有没有办法使用Swift更改中占位符文本颜色?

  • 问题内容: 我想更改TextField的占位符颜色,但是找不到它的方法。 我尝试设置和,但它不会更改占位符的颜色。 这是代码: 也许还没有API? 问题答案: 目前还没有api。 但您可以 : 自己使用和实现占位符: 现在,您可以像老板一样使用任何类型的编辑。 -自定义TextField 您总是可以创建自己的custom,以在所有地方使用: 用法 (带占位符):

  • 问题内容: 我正在尝试从控制器更改输入占位符的值,但无法完全弄清楚该如何做。 有没有办法修改模型的元素属性? 问题答案: 您可以在控制器中绑定变量: 在控制器中: