CSS - 许多自动尺寸容器的过渡

时间:2016-04-29 17:36:49

标签: html css css3

我目前正在为显示生成内容的网页编写一些代码。以类block命名的主容器包含另一个容器,分别名为container。在容器内部,有多个元素,名为object

两个容器都有height: auto; CSS设置,因为高度取决于内部的内容。这个网站的视觉效果是我非常热衷于获得点,我想要使用过渡效果使容器能够平稳地改变高度,而不是像通常那样瞬间改变高度。

查看此JSFiddle以获取代码/视觉效果。

点击标有'添加新对象的按钮'查看默认效果。如何才能使两个容器的平滑高度变化?

非常感谢。

1 个答案:

答案 0 :(得分:3)

CSS无法为auto值设置动画。您需要做的是使用JavaScript设置height元素的初始.block,然后在添加每个.object元素时更新它。这是一个例子(为它的粗糙而道歉,时间有点紧张。它应该指向正确的方向,至少):



var	span=document.createElement("span"),
	block=document.querySelector(".block"),
	container=document.querySelector(".container");
span.classList.add("object");
block.style.height=container.offsetHeight+"px";
document.querySelector("body>span").addEventListener("click",function(){
    container.appendChild(span.cloneNode(0));
    block.style.height=container.offsetHeight+"px";
},0);

span {
  position: absolute;
  padding: 5px;
  left: 5px;
  top: 5px;
  background-color: #fff;
  border: 1px solid rgba(0, 0, 0, 0.15);
  cursor: pointer;
}
.block {
  position: absolute;
  width: 360px;
  background-color: rgba(255, 0, 255, 0.1);
  left: 50%;
  overflow: hidden;
  top: 50%;
  padding-bottom: 10px;
  margin-left: -200px;
  margin-top: -150px;
  transition:height .25s;
}
.container {
  position: relative;
  width: calc(100% - 40px);
  height: auto;
  min-height: 10px;
  left: 20px;
  top: 5px;
  background-color: rgba(255, 0, 0, 0.15);
  font-size: 0px;
  padding-bottom: 10px;
  transition: 0.25s;
}
.object {
  position: relative;
  width: 80px;
  height: 80px;
  margin: 5px;
  display: inline-block;
  background-color: #f0f;
}

<div class='block'>
  <div class='container'>
    <span class='object'></span>
  </div>
</div>
<span>Add new object</span>
&#13;
&#13;
&#13;