4

我有一个input[type="date"]最小/最大范围。我想要实现的是隐藏从 dd/mm/yyyy 开始以任何语言显示的占位符文本。到目前为止所尝试的是添加以下 CSS。

input[type="date"]:in-range::-webkit-datetime-edit-year-field, 
input[type="date"]:in-range::-webkit-datetime-edit-month-field, 
input[type="date"]:in-range::-webkit-datetime-edit-day-field {
    color: transparent;
}

但这不会产生预期的输出,因为我在元素上有一个范围验证器。

请提前告知和感谢。

4

4 回答 4

2

您可以使用::before伪元素交换占位符:

input[type="date"]::before {
  content: attr(placeholder);
  position: absolute;
  color: #999999;
}

input[type="date"] {
  color: #ffffff;
}

input[type="date"]:focus,
input[type="date"]:valid {
  color: #666666;
}

input[type="date"]:focus::before,
input[type="date"]:valid::before {
  content: "";
}
<input type="date" placeholder="Date" required>

于 2020-08-30T07:40:54.273 回答
1

以下适用于 Chrome。我不确定其他浏览器。Safari 似乎没有input类型date

const $input = $('input');
$input.on('input', function(){
    $input.addClass('focused')
});
input::-webkit-datetime-edit { 
    color: transparent;
    user-select: none;
}

.focused::-webkit-datetime-edit{ 
  color: #000; 
  user-select: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type='Date' />

查看Stack Overflow 帖子以获取更多信息

于 2020-08-30T07:00:40.387 回答
0

尝试这个:

.box{
  display: inline-block;
  background-color: red;
  position: relative
}
.box::after{
  content: '';
  position: absolute;
  top: 2px;
  left: 2px;
  bottom: 2px;
  width: 80%;
  background-color: #fff;
}
<div class="box">
  <input type="date">
</div>

于 2020-08-30T07:05:42.950 回答
0

占位符?

input[type="date"]::before{
content: attr(placeholder);
position: absolute;
color: rgba(0,0,0,0);
}

input[type="date"]{color: rgba(0,0,0,1);}
于 2020-08-30T08:09:13.927 回答