更新时间:2023-12-01 23:50:40
对于布局由CSS框模型控制的元素,转换属性不会影响周围内容的流动转换后的元素.
For elements whose layout is governed by the CSS box model, the transform property does not affect the flow of the content surrounding the transformed element.
REF:转换渲染
You will have to use the max-height
property (check this answer) to get the desired effect.
var button = document.querySelector("button");
var box = document.createElement("div");
box.className = "box";
box.appendChild(document.createTextNode("Click to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to deleteClick to delete"));
button.addEventListener("click", function(e) {
var new_box = box.cloneNode(true);
new_box.style.height = ( Math.random() * (200 - 30) + 30 ) + 'px';
new_box.addEventListener("click", function(e) {
this.className = "box deleting";
window.setTimeout(function(e) {
new_box.remove();
}, 1000);
});
this.parentNode.appendChild(new_box);
});
button {
font-size: 20pt;
}
.box {
overflow:hidden;
font-size: 12pt;
margin-bottom: 10px;
width: 600px;
max-height:1000px;
padding: 10px;
background: pink;
transform: scaleY(1);
transform-origin: top left;
}
.deleting {
transform: scaleY(0);
max-height:0;
padding:0 10px;
margin-bottom:0;
transition: padding 1000ms ease,max-height 1000ms ease, transform 500ms ease 500ms, margin-bottom 1000ms ease;
}
<button>
Add Box
</button>