【发布时间】:2019-01-08 16:54:11
【问题描述】:
我试图让我的调查表问题具有浮动标签,当用户输入数据时仍然可见,并且在添加带有错误消息的电子邮件验证后,第二个问题被破坏了。它显示为始终无效,即使没有输入。
我尝试将 CSS 选择器更改为相邻的同级组合器,但是虽然这最初将我的标签放在正确的位置,但它破坏了特定的 input[type="email"]:invalid ~.question-label 样式。
这是 HTML:
<div class="form-option">
<input type="email" id="email" class="question-answer" placeholder=" " required>
<span class="bar"></span>
<label class="question-label" id="email-label">Email<span class="asterisk"> *</span></label>
<div class="requirements">
Must be a valid email address
</div>
</div>
这里是相关的 CSS:
.question-answer:focus ~.question-label, .question-answer:valid ~.question-label {
top: -16px;
font-size: 14px;
color: #4285f4;
}
input[type="email"]:valid + label {
opacity: 0;
}
.requirements {
padding-top: 5px;
font-style: italic;
color: red;
opacity: 0;
display: none;
}
input[type="email"]:invalid {
background-color: pink;
transition: ease .25s;
}
input[type="email"]:invalid ~.question-label {
top: -16px;
font-size: 14px;
color: red;
}
input[type="email"]:invalid:focus ~.requirements {
opacity: 100;
display: block;
}
这里有一个完整的 Codepen:https://codepen.io/Pixel123/pen/NzByep 如果问题需要澄清。
我希望标签位于一个起始位置,然后在聚焦后向上移动和调整大小,并在输入有效电子邮件后变为蓝色(这部分有效)。如果输入不是有效的电子邮件,则声明 必须是有效的电子邮件地址的div 将变为可见。
就目前而言,应仅在无效电子邮件上显示的输入突出显示始终处于打开状态,并在没有输入时突出显示该字段。
【问题讨论】:
-
我添加了一个答案,涵盖了您针对空电子邮件字段的情况;但是,您必须详细说明标签在关注时向上移动和调整大小的含义;特别是哪些标签?
-
对混乱表示歉意!我希望电子邮件标签向上移动并调整大小,如果输入无效,则更改为红色,同时保持较小的大小和位置,并在未聚焦时突出显示无效的输入字段。当聚焦时,
requirementsdiv 应该是可见的。您的空电子邮件字段答案有效,但是当字段中有输入时,标签现在位于输入上方。如果还不够清楚,请告诉我!感谢您的帮助!