Инструменты пользователя

Инструменты сайта


software:development:demo:adaptive_registration_form_complex_block

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
software:development:demo:adaptive_registration_form_complex_block [2026/01/30 09:01] – создано VladPolskiysoftware:development:demo:adaptive_registration_form_complex_block [2026/01/30 10:17] (текущий) VladPolskiy
Строка 1: Строка 1:
 ====== Блочная полная адаптивная форма регистрации и авторизации ====== ====== Блочная полная адаптивная форма регистрации и авторизации ======
-Блочная форма - дает возможность гибко использовать блоки формы, например первоночально скрыть блок ошибок или отобразить  "скрытую" ссылку на востановление пароля, в случае ошибки ввода пароля пользователя или отобразить "скрытую" ссылку на регистрацию, если такого пользователя нет в базе данных.  +Блочная форма - дает возможность гибко использовать блоки формы, например первоночально скрыть блок ошибок или отобразить  "скрытую" ссылку на востановление пароля, в случае ошибки ввода пароля пользователя или отобразить "скрытую" ссылку на регистрацию, если такого пользователя нет в базе данных. 
-Полная форма - дает возможность применения шаблонов+\\    
 +Полная форма - дает возможность применения шаблонов с иным дизайном, применяя другой файл стиля 'style.css', при этом не нарушая работу формы. 
 +\\   
 +{{:software:development:demo:adaptive_registration_form_complex_blockt_1.png?|}} 
 +\\   
 +<details><summary>«Показать код файла style_example.css»</summary> 
 +<code css style_example.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%; }
 +}
 +
 +</code>
 +</details>
 +Уберем из файла стилей цвета и размеры границ блоков показанных для наглядности и получим дизайн рабочей формы
 +\\  
 +{{:software:development:demo:adaptive_registration_form_complex_blockt_2.png?|}}
 +\\  
 +<details><summary>«Показать код файла style_example_min.css»</summary>
 +/*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"] {
 +  -webkit-appearance: checkbox;
 +     -moz-appearance: 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%; }
 +}
 +
 +<code css style_example.css>
 +
 +</code>
 +</details>
 +Скрываем блоки ошибок, который будет отображать только в случае ошибки ввода
 +<code css style_example_min.css>
 +/*Стиль контейнера ошибок (изначально скрыт)*/
 +.email_form_error ,.password_form_error {
 + display: none; /*скрыть контейнер*/
 +</code>
 +\\  
 +Получили внешне простую, понятную пользователю форму для входа
 +\\  
 +{{:software:development:demo:adaptive_registration_form_complex_blockt_3.png?|}}
 +\\  
 +Для наглядности скроем наименование полей ввода
 +<code css style_example_min.css>
 +/*Стиль контейнера наименования поля ввода*/
 +.email_form_title ,.password_form_title {
 + display: none; /*скрыть контейнер*/
 +</code>
 +\\  
 +{{:software:development:demo:adaptive_registration_form_complex_blockt_4.png?|}}
 +\\  
 +И на последок блоки "Забыли пароль? Восстановить?" и "Нет аккаунта? Зарегистрируйтесь." скроем и будем отображать, если пользователь не правильно ввел пароль или такого пользователя не зарегистрированно в приложении.
 +<code css style_example_min.css>
 +/*Стиль контейнера формы ссылки на форму восстановления пароля*/
 +.password_recovery_block {
 + display: none; /*скрыть контейнер*/
 +и
 +/*Стиль контейнера формы ссылки на форму регистрации*/
 +.account_registration_block {
 + display: none; /*скрыть контейнер*/
 +</code>
 +\\  
 +{{:software:development:demo:adaptive_registration_form_complex_blockt_5.png?|}}
 +\\  
 +Таким образом мы получили минимально понятную пользователю форму входа 
 +\\  
 +===== Дополнения и Файлы =====
 +См.так же [[adaptive_registration_form_sample|Простая адаптивная форма регистрации и авторизации]]
software/development/demo/adaptive_registration_form_complex_block.1769752892.txt.gz · Последнее изменение: VladPolskiy

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki