Только CSS Accordion Gaps

Я использую простой аккордеон только для CSS для наших условий, чтобы скрыть и показать предложения с флажки и свойством преобразовать. Однако при обновлении этой информации между пунктами списка внезапно возникают большие несогласованные промежутки. Это происходит, когда содержимое раскрывающегося списка длиннее трех абзацев и каждый промежуток отличается по высоте.

Какое лучшее решение, которое использует наименьшее количество кода для исправления этого с помощью ТОЛЬКО с использованием CSS?

* Абсолютно нельзя использовать jQuery, Javascript или другую внешнюю библиотеку. Полный код можно найти здесь: codepen.io/makecodenotwar/pen/dmXpjJ

ОБРАЗЕЦ: HTML-структура одного маркера (полный код в коде):

<ul>
  <li>
    <input type = "checkbox" checked>
    <i></i>
    <h5><span>►</span>Payment Clause</h5>
    <p>Blah, blah, blah...</p>
  </li>
</ul>

ПРИМЕР CSS

p {
  position: relative;
  overflow: hidden;
  opacity: 1;
  transform: translate(0, 0);
  z-index: 2;
}

ul li {
  position: relative;
  overflow: hidden;
}
ul li i {
  position: absolute;
  transform: translate(-6px, 0);
}
ul li i:before, ul li i:after {
  content: "";
  position: absolute;
  width: 3px;
  height: 9px;
}
ul li i:before {
  transform: translate(-2px, 0) rotate(45deg);
}
ul li i:after {
  transform: translate(2px, 0) rotate(-45deg);
}
ul li input[type=checkbox] {
  position: absolute;
  width: 100%;
  height: 100%;
  z-index: 1;
  opacity: 0;
}
ul li input[type=checkbox]:checked ~ p {
  max-height: 0;
  opacity: 0;
  transform: translate(0, 50%);
}
ul li input[type=checkbox]:checked ~ i:before {
  transform: translate(2px, 0) rotate(45deg);
}
ul li input[type=checkbox]:checked ~ i:after {
  transform: translate(-2px, 0) rotate(-45deg);
}

@keyframes flipdown {
  0% {
    opacity: 0;
    transform-origin: top center;
    transform: rotateX(-90deg);
  }
  5% {
    opacity: 1;
  }
  80% {
    transform: rotateX(8deg);
  }
  83% {
    transform: rotateX(6deg);
  }
  92% {
    transform: rotateX(-3deg);
  }
  100% {
    transform-origin: top center;
    transform: rotateX(0deg);
  }
}

может добавить <br>break?

Ibrahim Aljokhadar 15.03.2018 19:01
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
1
412
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Скрыть элементы аккордеона

Ваши товары не видны, но они все еще там.

Попробуйте добавить это в свой код:

ul li input[type=checkbox]:checked ~ p {
     display: none;
}

Вот и все! Спасибо @claudio, я знал, что это что-то простое.

user6184678 15.03.2018 19:39

Прошло очень много времени с тех пор, как я работал над HTML или CSS, но вы уже видели этот пример? Пожалуйста, простите меня, если да.

Другие вопросы по теме