Сделал анимацию, есть ли способ по лучше? https://codepen.io/DivMan/pen/pomMLbv HTML: <div class="block"> <div class="line"></div> <div class="line2"></div> <div class="line3"></div> <div class="line4"></div> <div class="line5"></div> </div> <div class="block block2"> <div class="line"></div> <div class="line2"></div> <div class="line3"></div> <div class="line4"></div> <div class="line5"></div> </div> <div class="block block3"> <div class="line"></div> <div class="line2"></div> <div class="line3"></div> <div class="line4"></div> <div class="line5"></div> </div> <div class="block block4"> <div class="line"></div> <div class="line2"></div> <div class="line3"></div> <div class="line4"></div> <div class="line5"></div> </div> <div class="block block5"> <div class="line"></div> <div class="line2"></div> <div class="line3"></div> <div class="line4"></div> <div class="line5"></div> </div> Код (CSS): .block, block2, block3, block4, block5 { position: relative; top: 10; left: 10px; } .block2 {left: 130px;} .block3 {left: 250px;} .block4 {left: 370px;} .block5 {left: 490px;} .line { position: absolute; top: 20px; bottom: 0; border-top: 2px solid green; left: 20px; width: 20px; transform-origin: left; animation: center-animate 2s ease infinite alternate; } .line2 { position: absolute; top: 20px; bottom: 0; border-left: 2px solid green; left: 40px; height:80px; transform-origin: left; animation: center-animate2 2s ease infinite alternate; } .line3{ position: absolute; top: 100px; bottom: 0; border-top: 2px solid green; left: 40px; width: 100px; } .line4 { position: absolute; top: 20px; bottom: 0; border-left: 2px solid green; left: 138px; height:80px; } /*жёсткий костыль*/ .line5{ position: absolute; top: 100px; bottom: 0; border-top: 2px solid white; left: 35px; width: 5px; transform-origin: 0 0; animation: center-animate5 2s ease infinite alternate; } @keyframes center-animate { 0% { transform: scaleX(5); } 100% { transform: scaleX(1); } } @keyframes center-animate2 { 0% { transform: translateX(80px); } 100% { transform: translateX(0); } } @keyframes center-animate5 { 0% { transform: scaleX(17); } 100% { transform: scaleX(1); } }
Добрый день! Есть. HTML canvas + JS Canvas API, см. Basic и Advanced анимации: https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Basic_animations https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Advanced_animations Удачи!
Есть. Думаю, для начала нужно упросить верстку - разделять интервалы на блоки не нужно, проще работать с непрерывной последовательностью горизонтальных и вертикальных линий. В общем поигрался и получил следующее: HTML: <div class="container"> <div class="display"> <div class="line high"></div> <div class="line swing"></div> <div class="line low"></div> <div class="line swing"></div> <div class="line high"></div> <div class="line swing"></div> <div class="line low"></div> <div class="line swing"></div> <div class="line high"></div> <div class="line swing"></div> <div class="line low"></div> <div class="line swing"></div> <div class="line high"></div> <div class="line swing"></div> <div class="line low"></div> <div class="line swing"></div> <div class="line high"></div> <div class="line swing"></div> <div class="line low"></div> <div class="line swing"></div> <div class="line high"></div> <div class="line swing"></div> <div class="line low"></div> <div class="line swing"></div> <div class="line high"></div> <div class="line swing"></div> <div class="line low"></div> <div class="line swing"></div> <div class="line high"></div> <div class="line swing"></div> <div class="line low"></div> <div class="line swing"></div> <div class="line high"></div> <div class="line swing"></div> </div> </div> Код (CSS): .container { background-color: black; width: 600px; height: 100px; border: 1px blue solid; overflow: hidden; padding: 8px 0px; } .display { background-color: #333; height: 100px; width: 2000px; position: relative; animation: drag 8s linear infinite; } .line { background-color: #0A0; float: left; } .high { width: 98px; height: 2px; animation: high 4s linear alternate infinite; } .low { margin-top: 98px; width: 98px; height: 2px; } .swing { height: 100px; width: 2px; } @keyframes high { 0% { width: 100px; } 50% { width: 100px; } 87.5% { width: 50px; } 100% { width: 50px; } } @keyframes drag { 0% { left: 0px; } 25% { left: -200px; } 56% { left: -200px; } 75% { left: -600px; } 100% { left: -808px; } } https://codepen.io/Vasil-Shpilchin/pen/WNqvOZJ В зацикленной анимации очень важно рассчитать время и движение так, чтобы к концу анимации общий вид возвращался к исходному. Еще вариант https://codepen.io/Vasil-Shpilchin/pen/gONpxKZ