javascript – CSS – 动画整个ul而不只是新项目进入时的第一行

前端之家收集整理的这篇文章主要介绍了javascript – CSS – 动画整个ul而不只是新项目进入时的第一行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

看一下this simple JsFiddle I made,它会动画进入列表的新项目.

但是,动画仅影响第一行,而不影响所有行.
我使颜色随机,所以当插入新项目时,您实际上可以看到其他行上的“跳跃”.

有没有办法让它只用CSS影响所有行?

  1. @keyframes enter {
  2. 0% {
  3. transform: translateX(-100%);
  4. margin-left: calc(var(--w) * -1);
  5. }
  6. 100% {
  7. transform: translateX(0px);
  8. margin-left: 0
  9. }
  10. }

这是我的动画,这是我的列表项:

  1. .slidepush li {
  2. --w: 50px;
  3. width: var(--w);
  4. height: 50px;
  5. background-color: red;
  6. vertical-align: top;
  7. border: 0;
  8. padding: 0;
  9. margin: 0;
  10. display: inline-block;
  11. }
  12. .enter {
  13. animation: enter 1s;
  14. }

Ceated一个管理ul和实现add的简单类:

  1. class SlidePush {
  2. constructor(ulElement) {
  3. this.element = ulElement;
  4. }
  5. add(item) {
  6. this.element.prepend(item.addClass('enter'));
  7. }
  8. }
  9. const sp = new SlidePush($(".slidepush"));
  10. setInterval(() => {//
  11. var colors = ['red','blue','green','black'];
  12. var color = colors[Math.floor(Math.random() * colors.length)];
  13. sp.add($("
最佳答案
考虑到nth-child,您可以添加动画,因此您每次都要添加第一个动画.您还需要在完成动画后删除动画,以便在到达下一行时再将其添加到同一元素中.

  1. class SlidePush {
  2. constructor(ulElement) {
  3. this.element = ulElement;
  4. }
  5. add(item) {
  6. this.element.prepend(item);
  7. $('.slidepush li:nth-child(4n+1)').addClass('enter');
  8. setTimeout(function(){ $('.slidepush li:nth-child(4n+1)').removeClass('enter') },1000);
  9. }
  10. }
  11. const sp = new SlidePush($(".slidepush"));
  12. setInterval(() => {//
  13. var colors = ['red','black'];
  14. var color = colors[Math.floor(Math.random() * colors.length)];
  15. sp.add($("
  1. div {
  2. --w: 200px;
  3. max-width: var(--w);
  4. }
  5. .slidepush {
  6. list-style: none;
  7. border: 0;
  8. padding: 0;
  9. margin: 0;
  10. display: table;
  11. }
  12. .slidepush li {
  13. --w: 50px;
  14. width: var(--w);
  15. height: 50px;
  16. background-color: red;
  17. vertical-align: top;
  18. border: 0;
  19. padding: 0;
  20. margin: 0;
  21. display: inline-block;
  22. }
  23. .enter {
  24. animation: enter 1s;
  25. position:relative;
  26. z-index:-1;
  27. }
  28. @keyframes enter {
  29. 0% {
  30. transform: translateX(-100%);
  31. margin-left: calc(var(--w) * -1);
  32. }
  33. 100% {
  34. transform: translateX(0px);
  35. margin-left: 0;
  36. }
  37. }

猜你在找的CSS相关文章