Friday , December 20 2024

Contact form 7 with spoilers/accordion

I needed to publish a questionnaire, with answer options opening by clicking on a question. There were no ready-made plugins for implementation, so I made a code for use:

Contact Form 7 with accordion

Full form template (sorry for the RU answer options):

<div class="tabs">
      
<div class="tab"><input type="radio" id="rd1" name="rd"><label class="tab-label" for="rd1">1. Оцените комфортность условий пребывания в организации</label><div class="tab-content">[radio radio-227 use_label_element default:1 "Отлично, все устраивает" "В целом хорошо" "Удовлетворительно, незначительные недостатки" "Плохо, много недостатков" "Неудовлетворительно, совершенно не устраивает" "Затрудняюсь ответить"]</div>
</div>

<div class="tab"><input type="radio" id="rd2" name="rd"><label class="tab-label" for="rd2">2. Как вы оцениваете доброжелательность и вежливость персонала организации?</label><div class="tab-content">[radio radio-434 use_label_element default:1 "Отлично, все устраивает" "В целом хорошо" "Удовлетворительно" "Плохо" "Неудовлетворительно" "Затрудняюсь ответить"]</div>
</div>

<div class="tab"><input type="radio" id="rd3" name="rd"><label class="tab-label" for="rd3">3. Насколько вас в целом устраивает график работы организации?</label><div class="tab-content">[radio radio-435 use_label_element default:1 "Отлично, все устраивает" "В целом хорошо" "Удовлетворительно, незначительные недостатки" "Плохо, много недостатков" "Совершенно не удобно" "Затрудняюсь ответить"]</div>
</div>

<div class="tab"><input type="radio" id="rd4" name="rd"><label class="tab-label" for="rd4">4. Оцените доступность и актуальность информации о деятельности организации, размещенной на стендах, вывесках</label><div class="tab-content">[radio radio-436 use_label_element default:1 "Отлично, все устраивает" "В целом хорошо" "Удовлетворительно, незначительные недостатки" "Плохо, много недостатков" "Неудовлетворительно, совершенно не устраивает" "Затрудняюсь ответить"]</div>
</div>

<div class="tab"><input type="radio" id="rd5" name="rd"><label class="tab-label" for="rd5">5. Оцените качество и полноту информации об организации, размещенной на официальном сайте</label><div class="tab-content">[radio radio-437 use_label_element default:1 "Отлично, все устраивает" "В целом хорошо" "Удовлетворительно, незначительные недостатки" "Плохо, много недостатков" "Неудовлетворительно, совершенно не устраивает" "Затрудняюсь ответить"]</div>
</div>

<div class="tab"><input type="radio" id="rd6" name="rd"><label class="tab-label" for="rd6">6. Оцените удобство пользования электронными сервисами, предоставляемыми организацией (в том числе и с помощью мобильных устройств)</label><div class="tab-content">[radio radio-438 use_label_element default:1 "Отлично, все устраивает" "В целом хорошо" "Удовлетворительно, незначительные недостатки" "Плохо, много недостатков" "Неудовлетворительно, совершенно не устраивает" "Затрудняюсь ответить"]</div>
</div>

<div class="tab"><input type="radio" id="rd7" name="rd"><label class="tab-label" for="rd7">7. Как вы оцениваете дополнительные услуги, предоставляемые организацией и доступность их получения?</label><div class="tab-content">[radio radio-439 use_label_element default:1 "Отлично, все устраивает" "В целом хорошо" "Удовлетворительно, незначительные недостатки" "Плохо, много недостатков" "Неудовлетворительно, совершенно не устраивает" "Затрудняюсь ответить"]</div>
</div>

<div class="tab"><input type="radio" id="rd8" name="rd"><label class="tab-label" for="rd8">8. Оцените качество и содержание полиграфических материалов организации</label><div class="tab-content">[radio radio-440 use_label_element default:1 "Отлично, все устраивает" "В целом хорошо" "Удовлетворительно, незначительные недостатки" "Плохо, много недостатков" "Неудовлетворительно, совершенно не устраивает" "Затрудняюсь ответить"]</div>
</div>

<div class="tab"><input type="radio" id="rd9" name="rd"><label class="tab-label" for="rd9">9. Сталкивались ли вы с несоблюдением установленного (заявленного) времени предоставления услуг (проведения мероприятий)?</label><div class="tab-content">[radio radio-441 use_label_element default:1 "Отлично, все устраивает" "В целом хорошо" "Удовлетворительно, незначительные недостатки" "Плохо, много недостатков" "Неудовлетворительно, совершенно не устраивает" "Затрудняюсь ответить"]</div>
</div>

<div class="tab"><input type="radio" id="rd10" name="rd"><label class="tab-label" for="rd10">10. Приходилось ли вам сталкиваться с тем, что сотрудники организации нарушали режим работы (приходили позже рабочего времени, отсутствовали на рабочем месте длительное время и т.д.)?</label><div class="tab-content">[radio radio-442 use_label_element default:1 "Отлично, все устраивает" "В целом хорошо" "Удовлетворительно, незначительные недостатки" "Плохо, много недостатков" "Неудовлетворительно, совершенно не устраивает" "Затрудняюсь ответить"]</div>
</div>

<div class="tab"><input type="radio" id="rd11" name="rd"><label class="tab-label" for="rd11">11. Укажите пожалуйста ваш возраст:</label><div class="tab-content">[radio radio-676 use_label_element default:1 "18-30" "31-45" "46-55" "Старше 55 лет"]</div>
</div>

<div class="tab"><input type="radio" id="rd12" name="rd"><label class="tab-label" for="rd12">Комментарии/пожелания:</label><div class="tab-content">[textarea textarea-79]</div>
</div>

<div class="tab"><input type="radio" id="rd13" name="rd"><label class="tab-label" for="rd13">Введите электронную почту для подтверждения подлинности оценок *</label><div class="tab-content">[text* text-246]Мы не рассылаем спам и не передаем вашу почту третьим лицам</div>
</div>

</div>
<br>
<div class="otpravit">[submit "Отправить ответы"]</div>

You can delete this one:

[radio radio-227 use_label_element default:1 "Отлично, все устраивает" "В целом хорошо" "Удовлетворительно, незначительные недостатки" "Плохо, много недостатков" "Неудовлетворительно, совершенно не устраивает" "Затрудняюсь ответить"]

…and add your options generated using Contact Form 7.

Here is the CSS for this form to expand on click:

.tabs {
  border-radius: 8px;
  overflow: hidden;
  box-shadow: 0 4px 4px -2px rgba(0, 0, 0, 0.5);
}
.tab {
  width: 100%;
  color: #000;
  overflow: hidden;
}
.tab-label {
  display: -webkit-box;
  display: flex;
  -webkit-box-pack: justify;
  justify-content: space-between;
  padding: 1em;
  background: #f5f5f5;
  color: #000;
  font-weight: bold;
  cursor: pointer;
}
.tab-label:hover {
  background: #d0d0d0;
}
.tab-label::after {
  content: "\276F";
  width: 1em;
  height: 1em;
  text-align: center;
  -webkit-transition: all .35s;
  transition: all .35s;
}
.tab-content {
  max-height: 0;
  padding: 0 1em;
  color: #2c3e50;
  background: white;
  -webkit-transition: all .35s;
  transition: all .35s;
}
.tab-close {
  display: -webkit-box;
  display: flex;
  -webkit-box-pack: end;
  justify-content: flex-end;
  padding: 1em;
  font-size: 0.75em;
  background: #2c3e50;
  cursor: pointer;
}
.tab-close:hover {
  background: #1a252f;
}
input:checked + .tab-label {
  background: #1a252f;
  color: #fff;
}
input:checked + .tab-label::after {
  -webkit-transform: rotate(90deg);
          transform: rotate(90deg);
}
input:checked ~ .tab-content {
  max-height: 100vh;
  padding: 1em;
}
.tab > input[type="radio"] {
  display: none;
}

About admin

Hi there! My name is Iryna, I am a web developer from Ukraine. While working on freelance projects I often face different technical issues and in this blog I publish articles on how to solve them. I am also interested in digital drawing and in this blog you will find brief tutorials that helped me and hopefully can help you as well.

Check Also

Display the date + a few days from the current one

The task in short: you need to make the delivery date + 5 days from …

Leave a Reply

Your email address will not be published. Required fields are marked *