Информация о файлах cookie на этой странице

Наш сайт использует файлы cookie, чтобы обеспечивать его работу, а также собирать и анализировать данные о работе и использовании сайта. Политика конфиденциальности

  • Курсы
    • Discord
    • Twitter
    • Linkedin
    • Facebook
    • Instagram
  • Тарифы
  • English
  • Čeština
  • Deutsch
  • Русский
ВойтиНачать бесплатно
  • Курсы
  • Тарифы

Сообщество

Войти
  
  • Курсы
    • Discord
    • Twitter
    • Linkedin
    • Facebook
    • Instagram
  • Тарифы
  • English
  • Čeština
  • Deutsch
  • Русский
ВойтиНачать бесплатно
  • Курсы
  • Тарифы

Сообщество

Войти

Места и форма

Последняя часть — выбор мест с формой бронирования. Выберите сеанс в окне просмотра, чтобы открыть её.

Места. Скрипт создаёт 40 кнопок с классом seat, добавляет taken проданным местам и selected тем, которые выбирает посетитель. Ситуация та же, что с кнопками дней, и решение то же: в слое components основной вид в .seat, а после него — виды состояний, которые его перебивают:

.seat {
    @apply rounded-lg border border-stone-300 bg-white py-2 text-sm font-semibold transition-colors enabled:cursor-pointer enabled:hover:border-night focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-night;
}

.taken {
    @apply cursor-not-allowed bg-stone-200 text-stone-400 line-through;
}

.selected {
    @apply border-gold bg-gold text-night;
}

Занятые места отключены, поэтому enabled: оставляет курсор-руку и рамку при наведении только свободным местам, как в упражнении «Отключённые кнопки». Занятые места ещё и зачёркнуты, чтобы их было легко отличить, в том числе тем, кто плохо различает цвета. Места снова лежат в сетке из 8 столбцов, теперь с grid grid-cols-8 gap-2, а max-w-md не даёт сетке растягиваться на широком экране.

Форма. Preflight убрал у полей рамки, поэтому им нужен вид, как в упражнении «Оформление полей формы», и контур при фокусе. В форме задайте:

  • form — класс max-w-md, а каждому из двух абзацев с полем — mt-4,
  • меткам — block font-semibold: будучи блоками, они переносят свои поля на следующую строку,
  • полям — mt-1 w-full rounded-lg border border-stone-300 bg-white px-3 py-2 focus:outline-2 focus:outline-gold,
  • трём сообщениям об ошибках — text-sm text-red-700 вместо их класса error,
  • кнопке «Забронировать» — вид кнопки с главной страницы: её классы с mt-4 и py-2 вместо mt-8 и py-3, без inline-block (кнопка и так блочно-строчный элемент) и с cursor-pointer,
  • подтверждению — mt-4 font-semibold text-green-700.

Ваши билеты. Элементы списка создаёт скрипт, как и кнопки «Выбрать места», поэтому классы они получают в скрипте: строкой с li.className в showTickets().

Задание

  1. 1

    В style.css добавьте три правила из примера выше в блок @layer components, после .active. В showtimes.html задайте #seats классы my-4 grid max-w-md grid-cols-8 gap-2, выбору мест (#seat-picker) — вид карточки, mt-10 rounded-2xl border border-stone-200 bg-white p-6, а его заголовку — font-display text-2xl font-bold text-night. Выберите в окне просмотра несколько мест.

  2. 2

    Оформите форму по списку выше. Затем нажмите «Забронировать» при пустых полях, чтобы увидеть сообщения об ошибках, и щёлкните по полям.

  3. 3

    Задайте секции «Ваши билеты» класс mt-10, её заголовку — классы заголовка выбора мест, а списку — mt-4 flex flex-col gap-2. В showTickets() задайте каждому элементу его классы, например такой строкой под той, что создаёт элемент: li.className = "rounded-lg border border-stone-200 bg-white px-4 py-2";

Назад

6/7

  1. 1. Tailwind для кинотеатра
  2. 2. Шапка и подвал
  3. 3. Hero-блок и кнопка
  4. 4. Фильмы и цены
  5. 5. Дни и таблица
  6. 6. Места и форма
  7. 7. Поздравляем!
Далее

Начните программировать бесплатно

Регистрируясь, вы принимаете Условия использования и Политику конфиденциальности.

Или зарегистрируйтесь через: