mirror of
https://github.com/EDeev/web-tech.git
synced 2026-06-16 21:21:08 +03:00
86 lines
No EOL
7.9 KiB
Markdown
86 lines
No EOL
7.9 KiB
Markdown
# Лабораторная работа №6. Проверка данных на стороне клиента. Уведомления
|
||
|
||
---
|
||
|
||
Добавьте блок с доступными для заказа вариантами ланча. Создайте скрипт, проверяющий состав ланча при отправке формы. Реализуйте показ уведомлений для пользователей.
|
||
|
||
## Порядок выполнения
|
||
|
||
Примерные макеты представлены ниже.
|
||
* Макет блока с доступными для заказа вариантами
|
||
* Макет уведомления
|
||
|
||
[Полный макет](https://lms.mospolytech.ru/pluginfile.php/1314144/mod_assign/intro/mockupfull.png "Полный макет") страницы:
|
||
|
||
1. Создайте блок с доступными для заказа вариантами ланча.
|
||
|
||
Структура блока:
|
||
|
||
- Заголовок
|
||
- Блок с вариантами (grid-контейнер, с 3 колонками на каждой строке)
|
||
- Блок каждого варианта ланча (flex-контейнер)
|
||
- Блок каждого блюда (flex-контейнер, направление главной оси - сверху вниз)
|
||
- Изображение блюда
|
||
- Подпись
|
||
|
||
Изображения с блюдами можно скачать [здесь](https://lms.mospolytech.ru/pluginfile.php/1314144/mod_assign/intro/icons.zip?time=1730060948701 "здесь").
|
||
|
||
Доступные для заказа варианты:
|
||
|
||
|1|2|3|4|5|
|
||
|---|---|---|---|---|
|
||
|Суп <br>Главное блюдо <br>Салат <br>Напиток|Суп <br>Главное блюдо <br>Напиток|Суп <br>Салат <br>Напиток|Главное блюдо <br>Салат <br>Напиток|Главное блюдо <br>Напиток|
|
||
|
||
В отдельном блоке необходимо разместить информацию о десертах. Их можно добавлять в любой вид ланча. Эту информацию нужно также отобразить на странице (поместить ниже подписи; шрифт меньше, чем у подписи на 2 пункта).
|
||
|
||
Измените свойства для изображений данного блока при наведении на них курсора. Используйте для этого transform с функциями трансформации translateY и scale.
|
||
|
||
На видео продемонстрирована работа transform:
|
||
|
||
2. Создайте скрипт, который будет проверять все ли необходимые блюда добавил пользователь.
|
||
|
||
Скрипт должен запускаться, когда пользователь отправляет форму. Пользователь может добавлять в заказ произвольные блюда. В итоге у него должен получиться один из вариантов ланчей, описанных выше. Если перечень выбранных блюд не соответствует ни одному из возможных вариантов (комбо), у пользователя не должно быть возможности оформить заказ (форма не должна отправляться), и на странице должно быть выведено уведомление с информацией о недостающих блюдах.
|
||
|
||
Существует 5 видов уведомлений:
|
||
|
||
|Текст уведомления|Когда выводится|Изображение|
|
||
|---|---|---|
|
||
|«Ничего не выбрано. Выберите блюда для заказа»|Не добавлено ни одно блюдо||
|
||
|«Выберите напиток»|Выбраны все необходимые блюда, кроме напитка||
|
||
|«Выберите главное блюдо/салат/стартер»|Выбран суп, но не выбраны главное блюдо/салат/стартер||
|
||
|«Выберите суп или главное блюдо»|Выбран салат/стартер, но не выбраны суп/главное блюдо||
|
||
|«Выберите главное блюдо»|Выбран напиток/десерт||
|
||
|
||
Уведомление должно создаваться динамически каждый раз, когда при попытке отправить форму скрипт обнаруживает, что какое-то блюдо не добавлено.
|
||
|
||
Оно должно отображаться поверх остальных элементов на странице и не менять положение при прокрутке. Также, его нужно отцентровать по вертикали и горизонтали.
|
||
При наведении на кнопку "Окей", изменяется цвет фона и текста кнопки.
|
||
При нажатии на кнопку, уведомление исчезает и удаляется со страницы.
|
||
На видео продемонстрирована работа уведомления:
|
||
|
||
### Материалы для изучения
|
||
|
||
#### CSS
|
||
[transform [Doka]](https://doka.guide/css/transform/)
|
||
[translateX() [MDN]](https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/translateX)
|
||
[translateY() [MDN]](https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/translateY)
|
||
[scale() [MDN]](https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/scale)
|
||
[position [Doka]](https://doka.guide/css/position/)
|
||
[top, left, right, bottom [Doka]](https://doka.guide/css/top-left-right-bottom/)[](https://lms.mospolytech.ru/mod/assign/view.php?id=540007&forceview=1)
|
||
#### JS
|
||
[Отправка формы: событие и метод submit [JS.RU]](https://learn.javascript.ru/forms-submit)
|
||
[submit [Doka]](https://doka.guide/js/event-submit/)
|
||
[preventDefault() [Doka]](https://doka.guide/js/event-prevent-default/)
|
||
[preventDefault() [MDN]](https://developer.mozilla.org/ru/docs/Web/API/Event/preventDefault)
|
||
[Изменение документа [JS.RU]](https://learn.javascript.ru/modifying-document)
|
||
[document.createElement [MDN]](https://developer.mozilla.org/ru/docs/Web/API/Document/createElement)
|
||
[Создание элемента [JS.RU]](https://learn.javascript.ru/modifying-document#sozdanie-elementa
|
||
[Element.append() [MDN]](https://developer.mozilla.org/ru/docs/Web/API/Element/append)
|
||
[before() [MDN]](https://developer.mozilla.org/en-US/docs/Web/API/Element/before)
|
||
[after() [MDN]](https://developer.mozilla.org/en-US/docs/Web/API/Element/after)
|
||
[Методы вставки [JS.RU]](https://learn.javascript.ru/modifying-document#metody-vstavki)
|
||
[Element.remove() [MDN]](https://developer.mozilla.org/ru/docs/Web/API/Element/remove)
|
||
[Удаление узлов [JS.RU]](https://learn.javascript.ru/modifying-document#udalenie-uzlov)
|
||
#### Другое
|
||
[Юникод, внутреннее устройство строк](https://learn.javascript.ru/unicode)
|
||
[Emoji юникод](https://symbl.cc/ru/emoji/) |