javascript - 如何在没有定位的情况下对元素使用 CSS 过渡

标签 javascript jquery html css

我有这个代码:

<button id="delete-row">delete</button>

<div id="a">
    <div class="row" style="height:150px;">Some content</div>
    <div class="row" style="height:150px;">Some content</div>
    <div class="row" style="height:150px;">Some content</div>
</div>

a div 的高度取决于其中有多少row div。现在,我用 javascript 删除了中间的 row 并且 a div 自动更改其高度,并且较低的 row 向上移动。我现在想要的是如何使用 Css transitions 使这种变化顺利发生。

我试过了:

#a{
transition-property: height;
transition-duration:0.5s;
}

而且我还尝试了下面的代码,所以我可以让较低的 row 缓慢地更改 top 属性,但情况是它们不是 relative absolute 所以它们没有任何 top 属性。

.row{
   transition-property: top;
   transition-duration:0.5s;
}

如果我们不使用任何定位并且元素由正常流定位,那么当元素改变它们在页面上的位置时会触发什么属性?

最佳答案

不幸的是,单靠 CSS 无法实现您的要求。 transition 属性仅适用于直接更改元素属性的情况。在您的情况下,您删除了一个元素,因此 #a div 的 height 在删除子项时由代理更改。

相反,您可以使用 jQuery 的 slideUp() 方法在移除 .row 之前为高度过渡设置动画。试试这个:

$('#delete-row').click(function() {
  $('.row:eq(1)').slideUp(function() {
    $(this).remove();
  })
})
#a { border: 1px solid #C00; }
.row { height: 150px; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="delete-row">delete</button>

<div id="a">
  <div class="row">Some content</div>
  <div class="row">Some content</div>
  <div class="row">Some content</div>
</div>

关于javascript - 如何在没有定位的情况下对元素使用 CSS 过渡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41409404/

相关文章:

javascript - 将 highcharts 图例项目分成两行

javascript - 如何向 javascript 类添加方法?

jquery - 圆形进度表

Jquery WCF 与 Pagemethods

javascript - 当且仅当在 FF/Chrome 中调试时,jQuery AJAX 调用才有效

javascript - 使顶部 div 对页面透明,而其下方的 div 则不透明

Javascript ES6 代码优化

javascript - 让 Jquery 记住 attr() 和数据

css - 使用 HTML5 和/或 CSS 创建对屏幕阅读器安全的有序列表?

javascript - Typescript - 找不到名称 'fetch'(通用库)