CSS-仅手风琴间隙

CSS-only Accordion Gaps

我为我们的条款和条件使用了一个简单的 CSS-only 手风琴来隐藏和显示带有 checkboxestransform[=28 的条款=] 属性。但是,在更新此信息时,要点之间突然出现大的、不一致的差距。它发生在下拉内容超过三个段落并且每个间隙的高度不同的情况下。

什么是最好的解决方案,使用最少的代码来解决这个问题 ONLY using 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);
  }
}

隐藏手风琴项目

您的项目不可见,但它们仍然存在。

尝试在您的代码中添加:

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

我已经很长时间没在 HTML 或 CSS 上工作了,但是你已经看到这个 example 了吗?有的话请见谅