Блочная форма - дает возможность гибко использовать блоки формы, например первоночально скрыть блок ошибок или отобразить «скрытую» ссылку на востановление пароля, в случае ошибки ввода пароля пользователя или отобразить «скрытую» ссылку на регистрацию, если такого пользователя нет в базе данных.
Полная форма - дает возможность применения шаблонов с иным дизайном, применяя другой файл стиля 'style.css', при этом не нарушая работу формы.
/*Стиль страницы*/ body { /*Стиль страницы*/ font-family: Arial, sans-serif; /*шрифт страницы*/ /*Управление поведением фоновых изображений*/ background-image: url("../images/fone_forms.jpg"); background-size: cover; /* Растягивает и обрезает */ background-position: center; /* Центрирует */ background-repeat: no-repeat; /* Мы не повторяемся */ display: flex; /* Коробка становится гибкой */ align-items: center; /* Вертикальное выравнивание */ justify-content: center; /* Горизонтальное выравнивание */ max-width: 100%;/* Растянуть по ширине контейнера */ height: 100vh; /* Высота всего экрана */ object-fit: cover; /* Обрезка с заполнением */ object-position: center; /* Центрирование */ } /*Стиль контейнера*/ .container { background: white; /*цвет контейнера*/ padding: 5px; /* Отступы по 5px со всех внутренних сторон */ border-radius: 7px; /*толщина рамки*/ border: 2px solid #6665ee; /*цвет и углы рамки*/ box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); /*добавляет тень к элементу*/ width: 300px; /*ширина контейнера*/ } /*Стиль ссылок*/ a { text-decoration: none;/*Ссылки без подчеркивания*/ color: #6665ee; /* цвет текста для всех ссылок */ } .black-text { color: black; } /* цвет конкретного класса */ /*Стиль наименования контейнера */ .title_form_block { background: white; /*цвет контейнера*/ border-radius: 5px; /*углы рамки*/ border: 1px solid red; /*толщина рамки и цвет/ width: 100%; /*ширина контейнера*/ height: 50px; /*высота контейнера*/ margin: 1px; /* внешние отступы контейнера */ /*шрифт контейнера*/ font-weight: bold; /*задает жирность шрифта*/ font-size: 24px; /*задает размер шрифта*/ padding-top: 25px; /* отступ сверху */ padding-left: 10px; /* отступ слева */ color: #6665ee; /* цвет текста */ } /*Стиль общего контейнера наименования, формы и ошибки*/ .email_form ,.password_form { position: relative; /* элемент позиционируется относительно своего исходного положения */ background: white; /*цвет контейнера*/ border-radius: 5px; /*углы рамки*/ border: 1px solid red; /*толщина рамки и цвет/ width: 100%; /*ширина контейнера*/ margin-bottom: 5px; /* внешние отступы контейнера */ } /*Стиль контейнера наименования поля ввода*/ .email_form_title ,.password_form_title { /*display: none; /*скрыть контейнер*/ background: white; /*цвет контейнера*/ padding: 1px; /* Отступы по 20px со всех сторон */ border-radius: 5px; /*углы рамки*/ border: 1px solid green; /*толщина рамки и цвет/ width: 100%; /*ширина контейнера*/ margin: 1px 1px 1px 1px; /* внешние отступы контейнера */ /*шрифт контейнера*/ font-weight: bold; /*задает жирность шрифта*/ font-size: 12px; /*задает размер шрифта*/ padding: 0px 0px 0px 5px; /* отступ слева */ color: #6665ee; /* цвет текста */ } /*Стиль контейнера ошибок (изначально скрыт)*/ .email_form_error ,.password_form_error { /*display: none; /*скрыть контейнер*/ background: white; /*цвет контейнера*/ padding: 1px; /* Отступы по 1px со всех сторон */ border-radius: 5px; /*углы рамки*/ border: 2px solid #ee6565; /*толщина рамки и цвет/ width: 100%; /*ширина контейнера*/ margin: 1px 1px 1px 1px; /* внешние отступы контейнера */ /*шрифт контейнера*/ font-size: 12px; /*задает размер шрифта*/ padding: 0px 0px 0px 10px; /* отступ слева */ color: #ee6565; /* цвет текста */ } /*Стиль контейнера формы ссылки на форму восстановления пароля*/ .password_recovery_block { background: white; /*цвет контейнера*/ padding: 1px; /* Отступы по 1px со всех сторон */ border-radius: 5px; /*углы рамки*/ border: 1px solid red; /*толщина рамки и цвет/ width: 100%; /*ширина контейнера*/ height: 40px; /*высота контейнера*/ margin: -1px -1px 1px -1px; /* внешние отступы контейнера */ /*шрифт контейнера*/ font-size: 12px; /*задает размер шрифта*/ padding: 0px 0px 0px 10px; /* отступ слева */ color: #6665ee; /* цвет текста */ } /*Стиль контейнера кнопка «запомнить меня»*/ input[type="checkbox"] { -webkit-appearance: checkbox; -moz-appearance: checkbox; appearance: checkbox; display: inline-block; width: 11px; /* размер квадратика */ margin: 0; /* убирает дефолтные отступы */ } .switch_remember_me { display: flex; background: white; /*цвет контейнера*/ border-radius: 5px; /*углы рамки*/ border: 1px solid red; /*толщина рамки и цвет/ width: 100%; /*ширина контейнера*/ height: 20px; /*высота контейнера*/ margin: -1px -1px 1px -1px; /* внешние отступы контейнера */ /*шрифт контейнера*/ align-items: center; /* Выравнивание по центру */ gap: 5px; /* Расстояние между чекбоксом и текстом */ font-size: 12px; /*задает размер шрифта*/ padding: 0px 0px 0px 5px; /* отступ слева */ /*vertical-align: center;*/ color: #6665ee; /* цвет текста */ } /*Стиль контейнера формы ссылки на форму регистрации*/ .account_registration_block { background: white; /*цвет контейнера*/ padding: 1px; /* Отступы по 1px со всех сторон */ border-radius: 5px; /*углы рамки*/ border: 1px solid red; /*толщина рамки и цвет/ width: 100%; /*ширина контейнера*/ height: 40px; /*высота контейнера*/ margin: 1px -1px 1px -1px; /* внешние отступы контейнера */ /*шрифт контейнера*/ font-size: 12px; /*задает размер шрифта*/ padding: 4px 0px 0px 0px; /* внутренний отступ слева */ text-align: center; /* центровка техта по горизонтали */ color: #6665ee; /* цвет текста */ } /*Стиль контейнера формы ввода*/ form { position: block; /*элемент отображается как блок и занимает всю доступную ширину.*/ background: white; /*цвет контейнера*/ border-radius: 5px; /*углы рамки*/ border: 1px solid #6665ee; /*толщина рамки и цвет/ width: 100%; /*ширина контейнера*/ margin: 1px 1px 1px 1px; /* внешние отступы контейнера */ } /*Стиль поля фориы ввода*/ input { width: 100%; /*Поле на всю ширину формы */ padding: 10px; /* внутренний отступ со всех сторон */ border: 1px solid #6665ee; /*толщина рамки и цвет/ border-radius: 5px; /*углы рамки*/ box-sizing: border-box; /* браузер включать внутренние отступы в заданные ширину и высоту*/ } .button_block{ background: white; /*цвет контейнера*/ border-radius: 5px; /*углы рамки*/ border: 1px solid red; /*толщина рамки и цвет/ width: 100%; /*ширина контейнера*/ } /*Стиль кнопки*/ button { width: 100%; /*ширина контейнера*/ padding: 10px; /* внутренний отступ со всех сторон */ background-color: #6665ee; /*цвет фона кнопки*/ color: white; /*цвет надписи*/ border: none; /*отсутствие рамки*/ border-radius: 5px; /*углы рамки*/ cursor: pointer; /*курсор - указывающая рука для ссылок/кнопок.*/ margin: 1px 1px 1px 1px; /* внешние отступы контейнера */ } button:hover { background-color: #5757d1; /*Изменение цвета кнопки при наведении курсора*/ } /*Стиль контейнера password для отображения кнопкы показать пароль*/ .password { width: 100%; /*ширина контейнера*/ margin: auto; /* внешние отступы контейнера */ position: relative; /* элемент позиционируется относительно своего исходного положения */ } .password-control { position: absolute; /*элемент позиционируется относительно ближайшего родительского элемента*/ top: 11px; right: 6px; display: inline-block; /*элемент отображается как строчный элемент, но его содержимое может быть отформатировано как блок.*/ width: 20px; /*ширина контейнера*/ height: 20px; /*высота контейнера*/ background: url(../images/view.svg) 0 0 no-repeat; } .password-control.view { background: url(../images/no-view.svg) 0 0 no-repeat; } /*Конец стиля контейнера password для отображения кнопкы показать пароль*/ /*Текст формы form_helh под формой*/ .form_helh { font-family: Arial, sans-serif; /* цвет текста заголовка */ font-size: 10px; /*задает размер шрифта*/ margin-top: -15px; /* внешний отступ сверху */ margin-left: 10px; /* внешний отступ слева */ } @media screen and (max-width: 480px) { /* Стили для планшетов и телефонов */ .container { width: 89%; padding: 5%; } }
Уберем из файла стилей цвета и размеры границ блоков показанных для наглядности и получим дизайн рабочей формы
/*style_example_min.css*/ body {
/*Стиль страницы*/
font-family: Arial, sans-serif; /*шрифт страницы*/
/*Управление поведением фоновых изображений*/
background-image: url("../images/fone_forms.jpg");
background-size: cover; /* Растягивает и обрезает */
background-position: center; /* Центрирует */
background-repeat: no-repeat; /* Мы не повторяемся */
display: flex; /* Коробка становится гибкой */
align-items: center; /* Вертикальное выравнивание */
justify-content: center; /* Горизонтальное выравнивание */
max-width: 100%;/* Растянуть по ширине контейнера */
height: 100vh; /* Высота всего экрана */
object-fit: cover; /* Обрезка с заполнением */
object-position: center; /* Центрирование */
}
/*Стиль контейнера*/ .container {
background: white; /*цвет контейнера*/ padding: 5px; /* Отступы по 5px со всех внутренних сторон */ border-radius: 7px; /*толщина рамки*/ border: 2px solid #6665ee; /*цвет и углы рамки*/ box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); /*добавляет тень к элементу*/ width: 300px; /*ширина контейнера*/
}
/*Стиль ссылок*/ a {
text-decoration: none;/*Ссылки без подчеркивания*/ color: #6665ee; /* цвет текста для всех ссылок */
}
.black-text { color: black; } /* цвет конкретного класса */
/*Стиль наименования контейнера */ .title_form_block {
width: 100%; /*ширина контейнера*/ height: 50px; /*высота контейнера*/ margin: 1px; /* внешние отступы контейнера */ /*шрифт контейнера*/ font-weight: bold; /*задает жирность шрифта*/ font-size: 24px; /*задает размер шрифта*/ padding-top: 25px; /* отступ сверху */ padding-left: 10px; /* отступ слева */ color: #6665ee; /* цвет текста */
}
/*Стиль общего контейнера наименования, формы и ошибки*/ .email_form ,.password_form {
position: relative; /* элемент позиционируется относительно своего исходного положения */ width: 100%; /*ширина контейнера*/ margin-bottom: 5px; /* внешние отступы контейнера */
}
/*Стиль контейнера наименования поля ввода*/ .email_form_title ,.password_form_title {
/*display: none; /*скрыть контейнер*/ padding: 1px; /* Отступы по 20px со всех сторон */ width: 100%; /*ширина контейнера*/ margin: 1px 1px 1px 1px; /* внешние отступы контейнера */ /*шрифт контейнера*/ font-weight: bold; /*задает жирность шрифта*/ font-size: 12px; /*задает размер шрифта*/ padding: 0px 0px 0px 5px; /* отступ слева */ color: #6665ee; /* цвет текста */
}
/*Стиль контейнера ошибок (изначально скрыт)*/ .email_form_error ,.password_form_error {
/*display: none; /*скрыть контейнер*/ background: white; /*цвет контейнера*/ padding: 1px; /* Отступы по 1px со всех сторон */ border-radius: 5px; /*углы рамки*/ border: 2px solid #ee6565; /*толщина рамки и цвет/ width: 100%; /*ширина контейнера*/ margin: 1px 1px 1px 1px; /* внешние отступы контейнера */ /*шрифт контейнера*/ font-size: 12px; /*задает размер шрифта*/ padding: 0px 0px 0px 10px; /* отступ слева */ color: #ee6565; /* цвет текста */
}
/*Стиль контейнера формы ссылки на форму восстановления пароля*/ .password_recovery_block {
padding: 1px; /* Отступы по 1px со всех сторон */ width: 100%; /*ширина контейнера*/ height: 40px; /*высота контейнера*/ margin: -1px -1px 1px -1px; /* внешние отступы контейнера */ /*шрифт контейнера*/ font-size: 12px; /*задает размер шрифта*/ padding: 0px 0px 0px 10px; /* отступ слева */ color: #6665ee; /* цвет текста */
}
/*Стиль контейнера кнопка «запомнить меня»*/ input[type=«checkbox»] {
appearance: checkbox;
display: inline-block; width: 11px; /* размер квадратика */ margin: 0; /* убирает дефолтные отступы */
} .switch_remember_me {
display: flex; width: 100%; /*ширина контейнера*/ height: 20px; /*высота контейнера*/ margin: -1px -1px 1px -1px; /* внешние отступы контейнера */ /*шрифт контейнера*/ align-items: center; /* Выравнивание по центру */ gap: 5px; /* Расстояние между чекбоксом и текстом */ font-size: 12px; /*задает размер шрифта*/ padding: 0px 0px 0px 5px; /* отступ слева */ /*vertical-align: center;*/ color: #6665ee; /* цвет текста */
}
/*Стиль контейнера формы ссылки на форму регистрации*/ .account_registration_block {
padding: 1px; /* Отступы по 1px со всех сторон */ width: 100%; /*ширина контейнера*/ height: 40px; /*высота контейнера*/ margin: 1px -1px 1px -1px; /* внешние отступы контейнера */ /*шрифт контейнера*/ font-size: 12px; /*задает размер шрифта*/ padding: 4px 0px 0px 0px; /* внутренний отступ слева */ text-align: center; /* центровка техта по горизонтали */ color: #6665ee; /* цвет текста */
}
/*Стиль контейнера формы ввода*/ form {
position: block; /*элемент отображается как блок и
занимает всю доступную ширину.*/
background: white; /*цвет контейнера*/
border-radius: 5px; /*углы рамки*/
border: 1px solid #6665ee; /*толщина рамки и цвет/
width: 100%; /*ширина контейнера*/
margin: 1px 1px 1px 1px; /* внешние отступы контейнера */
}
/*Стиль поля фориы ввода*/ input {
width: 100%; /*Поле на всю ширину формы */ padding: 10px; /* внутренний отступ со всех сторон */ border: 1px solid #6665ee; /*толщина рамки и цвет/ border-radius: 5px; /*углы рамки*/ box-sizing: border-box; /* браузер включать внутренние отступы в заданные ширину и высоту*/
}
.button_block{
width: 100%; /*ширина контейнера*/
}
/*Стиль кнопки*/ button {
width: 100%; /*ширина контейнера*/ padding: 10px; /* внутренний отступ со всех сторон */ background-color: #6665ee; /*цвет фона кнопки*/ color: white; /*цвет надписи*/ border: none; /*отсутствие рамки*/ border-radius: 5px; /*углы рамки*/ cursor: pointer; /*курсор - указывающая рука для ссылок/кнопок.*/ margin: 1px 1px 1px 1px; /* внешние отступы контейнера */
}
button:hover {
background-color: #5757d1; /*Изменение цвета кнопки при наведении курсора*/
}
/*Стиль контейнера password для отображения кнопкы показать пароль*/ .password {
width: 100%; /*ширина контейнера*/ margin: auto; /* внешние отступы контейнера */ position: relative; /* элемент позиционируется относительно своего исходного положения */
}
.password-control {
position: absolute; /*элемент позиционируется относительно ближайшего родительского элемента*/ top: 11px; right: 6px; display: inline-block; /*элемент отображается как строчный элемент, но его содержимое может быть отформатировано как блок.*/ width: 20px; /*ширина контейнера*/ height: 20px; /*высота контейнера*/ background: url(../images/view.svg) 0 0 no-repeat;
}
.password-control.view {
background: url(../images/no-view.svg) 0 0 no-repeat;
} /*Конец стиля контейнера password для отображения кнопкы показать пароль*/
/*Текст формы form_helh под формой*/ .form_helh {
font-family: Arial, sans-serif; /* цвет текста заголовка */ font-size: 10px; /*задает размер шрифта*/ margin-top: -15px; /* внешний отступ сверху */ margin-left: 10px; /* внешний отступ слева */
}
@media screen and (max-width: 480px) {
/* Стили для планшетов и телефонов */
.container { width: 89%; padding: 5%; }
}
Скрываем блоки ошибок, который будет отображать только в случае ошибки ввода
/*Стиль контейнера ошибок (изначально скрыт)*/ .email_form_error ,.password_form_error { display: none; /*скрыть контейнер*/
Получили внешне простую, понятную пользователю форму для входа
Для наглядности скроем наименование полей ввода
/*Стиль контейнера наименования поля ввода*/ .email_form_title ,.password_form_title { display: none; /*скрыть контейнер*/
И на последок блоки «Забыли пароль? Восстановить?» и «Нет аккаунта? Зарегистрируйтесь.» скроем и будем отображать, если пользователь не правильно ввел пароль или такого пользователя не зарегистрированно в приложении.
/*Стиль контейнера формы ссылки на форму восстановления пароля*/ .password_recovery_block { display: none; /*скрыть контейнер*/ и /*Стиль контейнера формы ссылки на форму регистрации*/ .account_registration_block { display: none; /*скрыть контейнер*/
Таким образом мы получили минимально понятную пользователю форму входа