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

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


software:development:demo:adaptive_registration_form_complex_block

Блочная полная адаптивная форма регистрации и авторизации

Блочная форма - дает возможность гибко использовать блоки формы, например первоночально скрыть блок ошибок или отобразить «скрытую» ссылку на востановление пароля, в случае ошибки ввода пароля пользователя или отобразить «скрытую» ссылку на регистрацию, если такого пользователя нет в базе данных.
Полная форма - дает возможность применения шаблонов с иным дизайном, применяя другой файл стиля 'style.css', при этом не нарушая работу формы.

«Показать код файла style_example.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%; }
}

Уберем из файла стилей цвета и размеры границ блоков показанных для наглядности и получим дизайн рабочей формы

«Показать код файла style_example_min.css»

/*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»] {

  1. webkit-appearance: checkbox;
    1. 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%; }

}

style_example.css
 

Скрываем блоки ошибок, который будет отображать только в случае ошибки ввода

style_example_min.css
/*Стиль контейнера ошибок (изначально скрыт)*/
.email_form_error ,.password_form_error {
	display: none; /*скрыть контейнер*/


Получили внешне простую, понятную пользователю форму для входа

Для наглядности скроем наименование полей ввода

style_example_min.css
/*Стиль контейнера наименования поля ввода*/
.email_form_title ,.password_form_title {
	display: none; /*скрыть контейнер*/



И на последок блоки «Забыли пароль? Восстановить?» и «Нет аккаунта? Зарегистрируйтесь.» скроем и будем отображать, если пользователь не правильно ввел пароль или такого пользователя не зарегистрированно в приложении.

style_example_min.css
/*Стиль контейнера формы ссылки на форму восстановления пароля*/
.password_recovery_block {
	display: none; /*скрыть контейнер*/
и
/*Стиль контейнера формы ссылки на форму регистрации*/
.account_registration_block {
	display: none; /*скрыть контейнер*/



Таким образом мы получили минимально понятную пользователю форму входа

Дополнения и Файлы

Только авторизованные участники могут оставлять комментарии.
software/development/demo/adaptive_registration_form_complex_block.txt · Последнее изменение: VladPolskiy

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