JSFiddle - React, Tailwind, and code Playground
HTML
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<h1>Validator</h1>
<section class="profile">
<div class="profile__box">
<div class="profile__box-content">
<ul class="vertical-center">
<li>
<span>
<!-- LABEL -->
<span class="profile__data-label">
Название поля
</span>
</span>
</li>
<li>
<span>
<!-- DATA VALUE -->
<div class="profile__data-field">
<div class="profile__data-input">
<input type="text" name="fieldName" value="example@site.com">
<span class="profile__data-validator-msg">
Ошибка валидации в несколько строчек и еще по всякому
</span>
</div>
<div class="profile__data-control">
<button class="profile__data-control-save">
<i class="fa fa-check" aria-hidden="true"></i>
</button>
</div>
</div>
<div class="profile__data-text">
<ul class="vertical-center">
<li><span>
<div class="profile__data-value">
example@site.com
<span class="profile__data-status profile__data-status--success">
<i class="fa fa-check" aria-hidden="true"></i>
</span>
</div>
</span></li>
<li><span>
<div class="profile__data-edit">
<button>
<i class="fa fa-pencil" aria-hidden="true"></i>
</button>
<button>
<i class="fa fa-trash-o" aria-hidden="true"></i>
</button>
</div>
</span></li>
</ul>
</div>
</span>
</li>
<li>
<span>
<!-- OPTIONS -->
<div...
SCSS
$ff: BlinkMacSystemFont,
-apple-system,
"Segoe UI",
"Roboto",
"Oxygen",
"Ubuntu",
"Cantarell",
"Fira Sans",
"Droid Sans",
"Helvetica Neue",
"Helvetica",
"Arial",
sans-serif;
$text-muted: rgba(42, 42, 42, .5);
$input-bgc: rgb(241, 243, 250);
$input-border-focus: rgb(90, 146, 246);
$error-bg: rgb(255, 230, 230);
$error-color: rgb(220, 41, 41);
$btn-bgc: $input-bgc;
$success-bgc: rgb(229, 246, 231);
$success-color: rgb(129, 212, 137);
$btn-bgc: $input-bgc;
$btn-hover-bgc: rgb(223, 235, 255);
$msg-bgc: rgb(223, 235, 255);
$msg-color: rgb(34, 53, 107);
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
html {
font-family: $ff;
font-size: 14px;
}
input,
select,
textarea,
button {
font-size: 14px;
font-family: $ff;
}
.profile {
&__box {
background-color: #fff;
width: 870px;
}
&__box-content {
padding: 20px 30px;
&:after {
display: table;
content: '';
clear: both;
}
}
&__data-label {
color: $text-muted;
width: 130px;
margin-right: 10px;
float: left;
line-height: 38px;
}
&__data-field {
width: 330px;
float: left;
}
&__data-input {
width: 260px;
position: relative;
float: left;
input {
display: inline-block;
border: none;
background-color: $input-bgc;
border: 1px solid $input-bgc;
outline: none;
padding: 10px 15px;
width: 100%;
&:focus {
border: 1px solid $input-border-focus;
background-color: #fff;
}
}
}
&__data-validator-msg {
max-width: 250px;
min-width: 150px;
background-color: $error-bg;
padding: 10px;
font-size: 12px;
color: $error-color;
position: absolute;
top: 0;
display: block;
-webkit-transition: translateY (-50%);
-moz-transition: translateY (-50%);
-ms-transition: translateY (-50%);
-o-transition: translateY (-50%);
transition: translateY (-50%);
left: 280px;
...