是否可以在HTML5 input type ="date"元素上设置默认占位符文本的样式?在Chrome?

Eif*_*ion 11 css html5 webkit google-chrome

我有一个表单,上面有日期列表,我正在使用HTML 5 input type="date"元素来表示它们.我想更改没有值的字段(即显示的字段)的颜色,dd/mm/yyyy以便它们更容易与包含实际日期的字段区分开来.

这可能吗?我认为这-webkit-input-placeholder可能做了我想要的,但似乎没有.

Pav*_*vlo 17

Chrome中的日期输入中没有占位符.如果您在devtools的设置中选中"Show shadow DOM",您将能够检查它:

<input type="date">
  #document-fragment
    <div dir="ltr" pseudo="-webkit-date-and-time-container">
      <div pseudo="-webkit-datetime-edit">
      <span aria-help="Day" aria-valuemax="31" aria-valuemin="1" pseudo="-webkit-datetime-edit-day-field" role="spinbutton">dd</span>
      <div pseudo="-webkit-datetime-edit-text">/</div>
      <span aria-help="Month" aria-valuemax="12" aria-valuemin="1" pseudo="-webkit-datetime-edit-month-field" role="spinbutton">mm</span>
      <div pseudo="-webkit-datetime-edit-text">/</div>
      <span aria-help="Year" aria-valuemax="275760" aria-valuemin="1" pseudo="-webkit-datetime-edit-year-field" role="spinbutton">yyyy</span></div>
      <div></div>
      <div pseudo="-webkit-calendar-picker-indicator"></div>
    </div>
</input>
Run Code Online (Sandbox Code Playgroud)

您可以使用其伪设置单独的元素(适用于Chrome Canary):

::-webkit-datetime-edit-year-field {
  font-weight: bold;
}
Run Code Online (Sandbox Code Playgroud)

  • +1帮助我在Dev Tools中找到"Show shadow DOM" (11认同)

Eif*_*ion 6

由于现有的答案,我设法解决了.日期字段和年份字段仅aria-valuetext在日期字段具有值时获取属性.这意味着当日期字段显示其默认值时,我可以设置这些值的样式,如下所示:

::-webkit-datetime-edit-day-field:not([aria-valuetext]),
::-webkit-datetime-edit-month-field:not([aria-valuetext]),
::-webkit-datetime-edit-year-field:not([aria-valuetext]) 
{
  color: #999;
}
Run Code Online (Sandbox Code Playgroud)


Jac*_*ord 6

从Chrome 31(可能更早)开始,aria-valuetext是'空白'而不是null.以下任何一项工作

::-webkit-datetime-edit-year-field[aria-valuetext=blank]
::-webkit-datetime-edit-year-field:not([aria-valuenow])
Run Code Online (Sandbox Code Playgroud)

而不是:

::-webkit-datetime-edit-year-field:not([aria-valuetext])
Run Code Online (Sandbox Code Playgroud)

(我没有代表对相关答案发表评论)


jpi*_*ora 6

我希望"占位符"文本为灰色.基于@ JackBradford的回答,我正在使用:

::-webkit-datetime-edit-text, /* this makes the slashes in dd/mm/yyyy grey */
::-webkit-datetime-edit-day-field[aria-valuetext=blank],
::-webkit-datetime-edit-month-field[aria-valuetext=blank],
::-webkit-datetime-edit-year-field[aria-valuetext=blank] {
  color: lightgrey;
}
Run Code Online (Sandbox Code Playgroud)

  • 我可以发誓这段代码在我实施它之前就已经为我工作了,但它似乎在Chrome 59(和Canary 61)中对我不起作用.[Codepen](https://codepen.io/msoutherton/pen/GEQZJE).难道其中一条规则不应该变成灰色吗? (4认同)
  • 四年后,在这里加入@Michael 的回应。这些似乎都不起作用。您可以选择伪元素。但是在 Chrome 的 CSS 中,选择 psuedoelement 上的属性会失败。我尝试过的没有任何效果。有人知道有什么更新吗? (2认同)