如何设置CSS过渡到新元素或使用JavaScript执行相同操作

Lon*_*don 6 javascript css jquery html-table

我看到一个CSS3菜单有一个非常好的过渡:

transition: all 0.3s ease 0.1s;
Run Code Online (Sandbox Code Playgroud)

我想将相同的过渡应用到我的表中.我有一个表,在表行上单击,在单击行后添加新行,它显示或隐藏.

就像在下面的代码中一样(clickedTableRow具有单击行的jQuery选择器的值):

clickedTableRow.after('<tr style="display:none;"><td>some content</td></tr>');
clickedTableRow.next().slideDown(3000);
Run Code Online (Sandbox Code Playgroud)

而不是slideDown如何将上述css转换应用于新添加的表行或是否有javascript等效?

问题更新:

也许我应该改写.缓慢滑下一些新创建的内容的最佳方法是什么?

这好像是:

clickedTableRow.after('<tr><td>some content</td></tr>').slideDown(3000); 
Run Code Online (Sandbox Code Playgroud)

看起来像:

clickedTableRow.after('<tr><td>some content</td></tr>');
Run Code Online (Sandbox Code Playgroud)

没有slideDown效果,我在这里缺少什么?

JAR*_*ans 5

因此,上面的解决方案将使用jquery animate库来完成此操作.这也可以使用css3完成.

我没有调整任何花哨行为的代码,我希望这个想法很明确:

HTML:

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<meta charset=utf-8 />
<title>Slide Add Row</title>
</head>
<body>
<table>
    <tr><td>some content</td></tr>
</table>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

CSS:

   div {
      -moz-animation-duration: 1s;
      -webkit-animation-duration: 1s;
      -moz-animation-name: slidein;
      -webkit-animation-name: slidein;
    position:relative;
    }

    @-moz-keyframes slidein {
      from {
            top:-20px;
      }

      to {
            top:0px;
      }
    }

    @-webkit-keyframes slidein {
      from {
            top:-20px;
      }

      to {
            top:0px;
      }
    }
Run Code Online (Sandbox Code Playgroud)

和JS(仅用于动态添加行:

$('table').on('click', function(){
  $tbody = $(this).find('tbody:last');
   $tbody.after('<tr><td><div>new</div></td></tr>');
});
Run Code Online (Sandbox Code Playgroud)

现场演示:

http://jsbin.com/unacog/9/

注意事项:

  1. 需要包含TD内的数据,否则CSS3动画的现有实现将无效.

  2. 没有IE浏览器支持,当然,适用于Chrome,FireFox和Safari.

BTW - 使用css动画可以自由地使用许多其他方式来播放动画,例如,基于font-size:http: //jsbin.com/unacog/11/


fuz*_*pro 2

添加一些CSS到样式表中,例如

.transition{
  transition: all 0.3s ease 0.1s;
   }
Run Code Online (Sandbox Code Playgroud)

然后

clickedTableRow.next().addClass('transition');
Run Code Online (Sandbox Code Playgroud)