Я пытался сделать плавную анимацию, но в середине анимации есть что-то вроде "вырезанной ошибки".
Как я могу это исправить?
div, div:after { width: 0vw; height: 3px; position: fixed; top: 1vw; bottom: 0; left: 40vw; right: 40vw; margin: auto; /* margin-top: -16px;*/ z-index: 600; background-color: rgba(0, 0, 0, 1); } div { /*background-color: transparent;*/ /* border-top: 3px solid rgba(0, 0, 0, 0.1); border-right: 3px solid rgba(0, 0, 0, 0.1); border-bottom: 3px solid rgba(0, 0, 0, 0.1); border-left: 3px solid black; -webkit-transform: translateZ(0); transform: translateZ(0);*/ -webkit-animation-iteration-count:infinite; animation-iteration-count:infinite; -webkit-animation-timing-function: ease-in-out; animation-timing-function: ease-in-out; -webkit-animation-direction: alternate; animation-direction: alternate; -webkit-animation-duration: 1s; animation-duration: 1s; -webkit-animation-name: animsition-loading; animation-name: animsition-loading; } @-webkit-keyframes animsition-loading { 0% { /*width: 0vw;*/ transform:translate(0vw); width :0vw; margin-left: 0; } 50% { /*width: 0vw;*/ /*transform:translate(5vw);*/ width :10vw; } 100% { /*width: 0vw;*/ transform:translate(1vw); width :0vw; margin-right: 0; } }
<div> </div>
Попробуйте настроить анимацию следующим образом:
@-webkit-keyframes animsition-loading { 0% { width :0; left: 0; } 50% { width :10vw; } 100% { width :0; right: 0; }
Это тот эффект, который вы ищете?
Попробуйте, и все готово ... Не используйте transform translate, вместо этого используйте только ширину.
div, div:after { width: 0vw; height: 3px; position: fixed; top: 1vw; bottom: 0; left: 40vw; right: 40vw; margin: auto; /* margin-top: -16px;*/ z-index: 600; background-color: rgba(0, 0, 0, 1); } div { /*background-color: transparent;*/ /* border-top: 3px solid rgba(0, 0, 0, 0.1); border-right: 3px solid rgba(0, 0, 0, 0.1); border-bottom: 3px solid rgba(0, 0, 0, 0.1); border-left: 3px solid black; -webkit-transform: translateZ(0); transform: translateZ(0);*/ -webkit-animation-iteration-count:infinite; animation-iteration-count:infinite; -webkit-animation-timing-function: ease-in-out; animation-timing-function: ease-in-out; -webkit-animation-direction: alternate; animation-direction: alternate; -webkit-animation-duration: 1s; animation-duration: 1s; -webkit-animation-name: animsition-loading; animation-name: animsition-loading; } @-webkit-keyframes animsition-loading { 0% { width :0; left: 0; } 50% { width :10vw; } 100% { width :0; right: 0; } }
Вот еще один способ добиться того же с меньшим количеством кода:
.loading { height: 3px; position: fixed; top: 2vw; left: 40vw; right: 40vw; height: 3px; background: linear-gradient(#000, #000) left/0% 100% no-repeat; animation: anime 2s ease-in-out infinite alternate; } @keyframes anime { 0% { background-size: 0% 100%; background-position: left; } 50% { background-size: 70% 100%; } 100% { background-size: 0% 100%; background-position: right; } }
<div class="loading"></div>