先看效果
原理就是先把页面分成x列等宽的div,然后每一列根据你想要的动画变幻的次数再分成几个div,每一次动画变化实际上就是每一个小div宽度由0%变成100%的过程,以此类推,下面上代码(vue模板)
html部分
<template> <div class="hello"> <div class="con d1"> <div class="i1"></div> <div class="i2"></div> <div class="i3"></div> <div class="i4"></div> <div class="i5"></div> </div> <div class="con d2"> <div class="i1"></div> <div class="i2"></div> <div class="i3"></div> <div class="i4"></div> <div class="i5"></div> </div> <div class="con d3"> <div class="i1">大</div> <div class="i2">大</div> <div class="i3">大</div> <div class="i4">大</div> <div class="i5">大</div> </div> <div class="con d4"> <div class="i1">家</div> <div class="i2">家</div> <div class="i3">家</div> <div class="i4">家</div> <div class="i5">家</div> </div> <div class="con d5"> <div class="i1">好</div> <div class="i2">好</div> <div class="i3">好</div> <div class="i4">好</div> <div class="i5">好</div> </div> <div class="con d6"> <div class="i1"></div> <div class="i2">我</div> <div class="i3">我</div> <div class="i4">我</div> <div class="i5">我</div> </div> <div class="con d7"> <div class="i1"></div> <div class="i2"></div> <div class="i3">是</div> <div class="i4">是</div> <div class="i5">是</div> </div> <div class="con d8"> <div class="i1"></div> <div class="i2"></div> <div class="i3"></div> <div class="i4">兔</div> <div class="i5">兔</div> </div> <div class="con d9"> <div class="i1"></div> <div class="i2"></div> <div class="i3"></div> <div class="i4">子</div> <div class="i5">子</div> </div> <div class="con d10"> <div class="i1"></div> <div class="i2"></div> <div class="i3"></div> <div class="i4"></div> <div class="i5 fa fa-free-code-camp"></div> </div> <div class="con d11"> <div class="i1"></div> <div class="i2"></div> <div class="i3"></div> <div class="i4"></div> <div class="i5"></div> </div> <div class="con d12"> <div class="i1"></div> <div class="i2"></div> <div class="i3"></div> <div class="i4"></div> <div class="i5"></div> </div> </div> </template>css部分
.hello{ height: 100vh; } .con{ display: inline-flex; width: 8%; position: relative; height: 100%; } .con div{ width: 0; height: 100%; position: absolute; top: 0; left: 0; display: flex; justify-content: center; align-items: center; overflow: hidden; color: #fff; font-size: 36px; font-style: italic; } .con .i1{ background: lightyellow; font-style: italic; } .con .i2{ background: green; animation: move 0.6s 0.7s linear forwards; } .con .i3{ background: hotpink; animation: move 0.6s 1.4s linear forwards; } .con .i4{ background: pink; animation: move 0.6s 2.1s linear forwards; } .con .i5{ background: lightpink; animation: move 0.6s linear forwards; } @keyframes move { 0%{ width: 0; } 100%{ width: 100%; } }js部分
mounted(){ this.$nextTick(()=>{ $('.con').each(function () { let index = $(this).index() let start = 2.8 $(this).find('.i5').css('animation-delay',start + index / 5 + 's') console.log($(this).find('.i5')) }) }) },
