2

我想知道是否可以仅使用 CSS3 顺序淡入项目列表?

HTML 会是这样的:

<ul>
    <li>item 1</li>
    <li>item 2</li>
    <li>item 3</li>
    <li>item 4</li>
    <li>item 5</li>

    <li>item 6</li>
    <li>item 7</li>
    <li>item 8</li>
    <li>item 9</li>
    <li>item 10</li>

    <li>item 11</li>
    <li>item 12</li>
    <li>item 13</li>
    <li>item 14</li>
    <li>item 15</li>
</ul>

当 UL 获得“淡出”类时,如果第一个“item1”淡出(在 2 秒内)一旦完成淡出下一个(“item2”)等等,直到所有项目都淡出,这将是很酷的。

我知道如何使用 jQuery 来做到这一点,但如果仅使用 CSS3 就可以了?如果这可能的话,有什么想法吗?

编辑:我真的在寻找一种解决方案,当您不知道列表中有多少项目时也可以使用。可能是 1 可能是 100?

编辑:显然,仅使用 CSS 是不可能为可变数量的元素制作此功能的,因此最好的 CSS 解决方案是针对固定数量的项目。否则你将不得不使用 JS。

感谢您的回复!

4

2 回答 2

4

这会起作用:

HTML:

<ul class="fadeout">
    <li>item 1</li>
    <li>item 2</li>
    <li>item 3</li>
</ul>

CSS:

ul.fadeout li:nth-child(1){
    -webkit-animation: fadeOut 2s linear forwards;
}
ul.fadeout li:nth-child(2){
    -webkit-animation: fadeOut 2s linear 2s forwards;
}
ul.fadeout li:nth-child(3){
    -webkit-animation: fadeOut 2s linear 4s forwards;
}
ul.fadeout li:nth-child(1){
    -webkit-animation: fadeOut 2s linear forwards;
}
@-webkit-keyframes fadeOut {
    0% { opacity: 1; }
    100% { opacity: 0; }
}

http://jsfiddle.net/fGAZr/

于 2011-12-21T14:00:14.960 回答
4

这是我不推荐的,因为所有供应商扩展都会变得非常冗长。可以使用 scss 自动生成代码,但我不会打扰。

ul li { transition: opacity 200ms linear;}
ul.fadeout li {opacity: 0;}

ul.fadeout li:nth-child(1)  { transition-delay: 0    }
ul.fadeout li:nth-child(2)  { transition-delay: 0.1s }
ul.fadeout li:nth-child(3)  { transition-delay: 0.2s }
ul.fadeout li:nth-child(4)  { transition-delay: 0.3s }
ul.fadeout li:nth-child(5)  { transition-delay: 0.4s }
ul.fadeout li:nth-child(6)  { transition-delay: 0.5s }
ul.fadeout li:nth-child(7)  { transition-delay: 0.6s }
ul.fadeout li:nth-child(8)  { transition-delay: 0.7s }
ul.fadeout li:nth-child(9)  { transition-delay: 0.8s }
ul.fadeout li:nth-child(10) { transition-delay: 0.9s }
ul.fadeout li:nth-child(11) { transition-delay: 1s   }
ul.fadeout li:nth-child(12) { transition-delay: 1.1s }
ul.fadeout li:nth-child(13) { transition-delay: 1.2s }
ul.fadeout li:nth-child(14) { transition-delay: 1.3s }
ul.fadeout li:nth-child(15) { transition-delay: 1.4s }

您可以在此处查看仅 webkit 示例:http: //jsfiddle.net/kUQj7/

于 2011-12-21T14:38:29.857 回答