这里我们使用 dl , 因为 dt 刚好可以模拟标题, dd 模拟内容。

    首先我们为我们每一个 dt 绑定 click 事件

    同样,我们使用 Array.from 将 转换为数组,通常能尽量不用for的我就不会用for

    完成 toggle 函数

    首先为我们要拿到所有的 dd 方便之后重置样式。 然后我们判断目标元素target上面的height, 初始的时候是 空字符串,之后就是0px了,当是0px的时候,就说明是关闭状态。

    之后我们通过for of遍历所有 dd, 先清空一下未关闭的标签。

    通常我们是无法获取一个隐藏元素的高的,所以我们首先把当前的 dd, 用绝对定位定位到屏幕外面去,之后我们就可以通过offsetHeight获取高度了。

    有的人会问我为什么不直接用auto, 因为auto是不会产生动画的。 当然你也可以设置一个固定的高度。

    之后我们,先把高度重置为0,之后在浏览器重新绘制下一帧的时候再设置高度。

    我猜测可能是浏览器做了处理,短时间的切换属性height会被忽略掉。