仅限CSS的手风琴差距

时间:2018-03-15 17:54:34

标签: html css accordion codepen

我在条款和条件中使用一个简单的仅限CSS的手风琴来隐藏和显示带有复选框转换属性的子句。但是,在更新此信息时,项目符号之间会出现大量不一致的差距。它发生在下拉内容超过三段并且每个间隙的高度不同的地方。

使用最少的代码来解决此问题的最佳解决方案是什么?仅限使用CSS?

*绝对不能使用jQuery,Javascript或其他外部库。 完整的代码可以在这里找到: codepen.io/makecodenotwar/pen/dmXpjJ

SAMPLE:一个项目符号点的HTML结构(代码集中的完整代码):

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

SAMPLE 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);
  }
}

2 个答案:

答案 0 :(得分:0)

隐藏手风琴项目

您的物品不可见,但它们仍在那里。

尝试在代码中添加:

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

答案 1 :(得分:0)

自从我使用HTML或CSS以来已经很长时间了,但您是否已经看到了此example?如果你有,请原谅我。