Я пытаюсь создать группу ввода, когда вход сфокусирован или имеет содержимое внутри, метка будет двигаться вверх так:
input {
padding: 10px 0;
box-sizing: border-box;
box-shadow: none;
outline: none;
border: none;
border-bottom: 2px solid #999;
width: 100%;
}
.box {
margin: 100px;
position: relative;
}
label {
position: absolute;
top: 10px;
left: 0;
color: #999;
transition: .5s;
pointer-events: none;
}
input:focus~label,
input:valid~label {
top: -12px;
left: 0;
color: crimson;
font-weight: bold;
}
<div class="box">
<input type="text" required='' id="name">
<label for="name">Name</label>
</div>
<div class="box">
<input type="text" required='' id="email">
<label for="name">email</label>
</div>
Однако я не знаю, как это сделать в React, также я могу знать, как не использовать обязательный в html и input: valid метод в css, так как я управляю проверкой через форму Formik в js.Большое вам спасибо!
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div className="form-group">
<Field type="text" name="name" placeholder="Name" onFocus={this.handleInputFocus} onBlur={this.handleInputBlur} className={formProps.errors.name && formProps.touched.name ? 'is-invalid form-control' : 'form-control'} />
<label htmlFor="name">Name</label>
<ErrorMessage name="email" component="div" className="invalid-feedback" />
</div>
<div className="form-group">
<Field type="text" name="email" placeholder="Email" onFocus={this.handleInputFocus} onBlur={this.handleInputBlur} className={formProps.errors.email && formProps.touched.email ? 'is-invalid form-control' : 'form-control'} />
<label htmlFor="email">Email</label>
<ErrorMessage name="email" component="div" className="invalid-feedback" />
</div>