【问题标题】:CSS list gradual fade in with unknown amountCSS列表逐渐淡入未知数量
【发布时间】:2018-09-26 15:31:38
【问题描述】:

我试图使用普通的 CSS 进行渐进式淡入,并且列表上没有 jquery,这样它就可以一个接一个地淡入。但是,我只知道如何在有限的列表中做到这一点。如何循环 css,这样无论我有多少列表它仍然有效。

这是我所做的:

.ladder {
  opacity: 0;
  -webkit-animation: fadeIn 0.9s 1;
  animation: fadeIn 0.9s 1;
  -webkit-animation-fill-mode: forwards;
  animation-fill-mode: forwards;
}

.ladder:nth-child(5n+1) {
  -webkit-animation-delay: 0.2s;
  animation-delay: 0.2s;
}

.ladder:nth-child(5n+2) {
  -webkit-animation-delay: 0.4s;
  animation-delay: 0.4s;
}

.ladder:nth-child(5n+3) {
  -webkit-animation-delay: 0.6s;
  animation-delay: 0.6s;
}

.ladder:nth-child(5n+4) {
  -webkit-animation-delay: 0.8s;
  animation-delay: 0.8s;
}

.ladder:nth-child(5n+5) {
  -webkit-animation-delay: 1.0s;
  animation-delay: 1.0s;
}

@-webkit-keyframes fadeIn {
  0% {
    opacity: 0.0;
  }
  100% {
    opacity: 1.0;
  }
}

@keyframes fadeIn {
  0% {
    opacity: 0.0;
  }
  100% {
    opacity: 1.0;
  }
}
<li class="ladder">A</li>
<li class="ladder">B</li>
<li class="ladder">C</li>
<li class="ladder">D</li>
<li class="ladder">E</li>

我的问题:无论列表有多少,如何让 css 正常工作。

【问题讨论】:

    标签: html css css-animations


    【解决方案1】:

    这是一个使用 CSS 变量的想法,可以让您减少代码。它不是通用的,但向每个 li 附加一个简单的内联 CSS 比编写复杂的 CSS 更容易:

    .ladder {
      opacity: 0;
      animation: fadeIn 1s var(--d) forwards;
    }
    
    @keyframes fadeIn {
      100% {
        opacity: 1;
      }
    }
    <ul>
      <li style="--d:0s" class="ladder">A</li>
      <li style="--d:0.2s" class="ladder">B</li>
      <li style="--d:0.4s" class="ladder">C</li>
      <li style="--d:0.6s" class="ladder">D</li>
      <li style="--d:0.8s" class="ladder">E</li>
    </ul>

    这是另一个想法,您可以在 ul 上应用动画:

    ul {
      position:relative;
    }
    ul:before {
      content:"";
      position:absolute;
      top:-20px;
      bottom:0;
      left:0;
      right:0;
      background:linear-gradient(to bottom,transparent,#fff 20px);
      animation:fadeIn 2s forwards
    }
    
    @keyframes fadeIn {
      0% {
        top:-10px;
      }
      100% {
        top: 100%;
      }
    }
    <ul>
      <li>A</li>
      <li>B</li>
      <li>C</li>
      <li>D</li>
      <li>E</li>
    </ul>

    【讨论】:

    • 不使用内联css可以吗?
    • @Squish 我添加了另一个想法 ;)
    • 哈哈哈,这更像是滑下来,但它有点工作!谢谢
    • @Squish 我做了一个小调整,让它看起来更好;)
    • 为什么列表上有一个阴影:P
    猜你喜欢
    • 2018-03-10
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    相关资源
    最近更新 更多