반복되는 CSS 애니메이션 지연


81

저는 최근에 CSS 애니메이션을 "올바르게"사용하는 방법을 발견했습니다 (이전에는 JavaScript에서와 같이 복잡한 시퀀스를 만들 수 없다고 무시했습니다). 이제 나는 그들에 대해 배우고 있습니다.

이 효과를 위해 진행률 표시 줄과 같은 요소에 그라데이션 "플레어"스윕을 적용하려고합니다. 기본 Windows Vista / 7 진행률 표시 줄의 효과와 유사합니다.

@keyframes barshine {
  from {background-image:linear-gradient(120deg,rgba(255,255,255,0) -10%,rgba(255,255,255,0.25) -5%,rgba(255,255,255,0) 0%);}
  to {background-image:linear-gradient(120deg,rgba(255,255,255,0) 100%,rgba(255,255,255,0.25) 105%,rgba(255,255,255,0) 110%);}
}
.progbar {
  animation: barshine 1s 4s linear infinite;
}

보시다시피, 나는 4 초의 딜레이를 가지려고 노력하고 있고, 그 다음 1 초에 휩쓸리는 빛이 반복됩니다.

그러나 animation-delay첫 번째 반복에만 적용되는 것으로 보이며 그 후에는 빛이 계속 반복적으로 스윕됩니다.

이 문제를 다음과 같이 "해결"했습니다.

@keyframes expbarshine {
  from {background-image:linear-gradient(120deg,rgba(255,255,255,0) -10%,rgba(255,255,255,0.25) -5%,rgba(255,255,255,0) 0%);}
  80% {background-image:linear-gradient(120deg,rgba(255,255,255,0) -10%,rgba(255,255,255,0.25) -5%,rgba(255,255,255,0) 0%);}
  to {background-image:linear-gradient(120deg,rgba(255,255,255,0) 100%,rgba(255,255,255,0.25) 105%,rgba(255,255,255,0) 110%);}
}
.progbar {
  animation: barshine 5s linear infinite;
}

from80%애니메이션 길이의 80 %의 "지연"결과 정확히 동일하다.

이것은 작동하지만 다음 애니메이션의 경우 애니메이션 자체가 정확히 동일한 길이를 유지하는 동안 지연이 가변적 (특정 요소에 대해서는 일정하지만 애니메이션을 사용하는 요소간에 가변적 임)이 필요합니다.

위의 "솔루션"을 사용하면 원하는 것이 더 긴 지연 일 때 느린 애니메이션으로 끝날 것입니다.

그것은이있을 수 있나요 animation-delay아니라 단지 첫 번째보다, 모든 반복에 적용?


불행하게도. animation-delay애니메이션이 시작되기 전의 지연이며 이와 같은 다른 속성은 없습니다. :) 당신은 아마 오히려 사용하지 거라고 자바 스크립트와 나쁜 해결 방법은있다
Ry-

답변:


54

비슷한 문제가 있었고

@-webkit-keyframes pan {
   0%, 10%       { -webkit-transform: translate3d( 0%, 0px, 0px); }
   90%, 100%     { -webkit-transform: translate3d(-50%, 0px, 0px); }
}

양쪽 끝에서 '지연'을 설명하기 위해 기간을 속 여야한다는 점이 약간 짜증이납니다.


18

minitech는 animation-delay애니메이션이 시작되기 전 지연 을 지정하고 반복 사이의 지연 을 지정 하지 않습니다 . 사양의 편집자 초안은 잘 설명하고 설명하고이 기능에 대한 논의가 있었다 여기 이 반복 지연 기능을 제안.

JS에 해결 방법이있을 수 있지만 CSS 만 사용하여 진행률 표시 줄 플레어에 대해이 반복 지연을 가짜로 만들 수 있습니다.

flare div position:absolute및 부모 div 를 선언하고 overflow: hidden진행률 표시 줄의 너비보다 큰 100 % 키 프레임 상태를 설정하고 cubic-bezier 타이밍 함수 와 왼쪽 오프셋 값을 가지고 놀 면서 ease-in-out또는 linear타이밍을 다음과 같이 에뮬레이션 할 수 있습니다. 지연".

이 정확한 값을 얻기 위해 왼쪽 오프셋과 타이밍 함수를 정확히 계산하기 위해 less / scss 믹스 인을 작성하는 것이 흥미로울 것입니다. 그래도 그런 걸보고 싶어요!

이것을 보여주기 위해 함께 던진 데모가 있습니다. (나는 Windows 7 진행률 표시 줄을 에뮬레이트하려고 시도했지만 약간 짧았지만 내가 말하는 내용을 보여줍니다.)

데모 : http://codepen.io/timothyasp/full/HlzGu

<!-- HTML -->
<div class="bar">
   <div class="progress">
      <div class="flare"></div>
   </div>
</div>


/* CSS */

@keyframes progress {
  from {
    width: 0px;
  }
  to {
    width: 600px;
  }
}

@keyframes barshine {
  0% {
    left: -100px;
  }

  100% {
    left: 1000px;
  }
}
.flare {
  animation-name: barshine;
  animation-duration: 3s;
  animation-direction: normal;
  animation-fill-mode: forwards;
  animation-timing-function: cubic-bezier(.14, .75, .2, 1.01);
  animation-iteration-count: infinite;
  left: 0;
  top: 0;
  height: 40px;
  width: 100px;
  position: absolute;
  background: -moz-radial-gradient(center, ellipse cover,  rgba(255,255,255,0.69) 0%, rgba(255,255,255,0) 87%); /* FF3.6+ */
  background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,rgba(255,255,255,0.69)), color-stop(87%,rgba(255,255,255,0))); /* Chrome,Safari4+ */
  background: -webkit-radial-gradient(center, ellipse cover,  rgba(255,255,255,0.69) 0%,rgba(255,255,255,0) 87%); /* Chrome10+,Safari5.1+ */
  background: -o-radial-gradient(center, ellipse cover,  rgba(255,255,255,0.69) 0%,rgba(255,255,255,0) 87%); /* Opera 12+ */
  background: -ms-radial-gradient(center, ellipse cover,  rgba(255,255,255,0.69) 0%,rgba(255,255,255,0) 87%); /* IE10+ */
  background: radial-gradient(ellipse at center,  rgba(255,255,255,0.69) 0%,rgba(255,255,255,0) 87%); /* W3C */
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#b0ffffff', endColorstr='#00ffffff',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */
  z-index: 10;
}
.progress {
  animation-name: progress;
  animation-duration: 10s;
  animation-delay: 1s;
  animation-timing-function: linear;
  animation-iteration-count: infinite;
  overflow: hidden;
  position:relative;
  z-index: 1;
  height: 100%;
  width: 100%;
  border-right: 1px solid #0f9116;
  background: #caf7ce; /* Old browsers */
  background: -moz-linear-gradient(top, #caf7ce 0%, #caf7ce 18%, #3fe81e 45%, #2ab22a 96%); /* FF3.6+ */
  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#caf7ce), color-stop(18%,#caf7ce), color-stop(45%,#3fe81e), color-stop(96%,#2ab22a)); /* Chrome,Safari4+ */
  background: -webkit-linear-gradient(top, #caf7ce 0%,#caf7ce 18%,#3fe81e 45%,#2ab22a 96%); /* Chrome10+,Safari5.1+ */
  background: -o-linear-gradient(top, #caf7ce 0%,#caf7ce 18%,#3fe81e 45%,#2ab22a 96%); /* Opera 11.10+ */
  background: -ms-linear-gradient(top, #caf7ce 0%,#caf7ce 18%,#3fe81e 45%,#2ab22a 96%); /* IE10+ */
  background: linear-gradient(to bottom, #caf7ce 0%,#caf7ce 18%,#3fe81e 45%,#2ab22a 96%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#caf7ce', endColorstr='#2ab22a',GradientType=0 ); /* IE6-9 */
}

.progress:after {
  content: "";
  width: 100%;
  height: 29px;
  right: 0;
  bottom: 0;
  position: absolute;
  z-index: 3;
  background: -moz-linear-gradient(left, rgba(202,247,206,0) 0%, rgba(42,178,42,1) 100%); /* FF3.6+ */
  background: -webkit-gradient(linear, left top, right top, color-stop(0%,rgba(202,247,206,0)), color-stop(100%,rgba(42,178,42,1))); /* Chrome,Safari4+ */
  background: -webkit-linear-gradient(left, rgba(202,247,206,0) 0%,rgba(42,178,42,1) 100%); /* Chrome10+,Safari5.1+ */
  background: -o-linear-gradient(left, rgba(202,247,206,0) 0%,rgba(42,178,42,1) 100%); /* Opera 11.10+ */
  background: -ms-linear-gradient(left, rgba(202,247,206,0) 0%,rgba(42,178,42,1) 100%); /* IE10+ */
  background: linear-gradient(to right, rgba(202,247,206,0) 0%,rgba(42,178,42,1) 100%); /* W3C */
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00caf7ce', endColorstr='#2ab22a',GradientType=1 ); /* IE6-9 */
}

.bar {
  margin-top: 30px;
  height: 40px;
  width: 600px;
  position: relative;
  border: 1px solid #777;
  border-radius: 3px;
}

46
일반적인 CSS. CSS 애니메이션을 제공하므로 자바 스크립트로 처리되지 않고 스타일링이 모두 한곳에 있습니다.하지만 기본적인 것 이상의 작업을하려면 해킹 미로를 구현해야합니다. 개발자가 더 쉽게 할 수있는 것을 구현하지 않는 이유는 무엇입니까?
조나단.

10

이것이 당신이해야 할 일입니다. 1 초 애니메이션이 있고 반복 사이에 4 초 지연이 있다는 점에서 작동합니다.

@keyframes barshine {
  0% {
  background-image:linear-gradient(120deg,rgba(255,255,255,0) 0%,rgba(255,255,255,0.25) -5%,rgba(255,255,255,0) 0%);
  }
  20% {
    background-image:linear-gradient(120deg,rgba(255,255,255,0) 10%,rgba(255,255,255,0.25) 105%,rgba(255,255,255,0) 110%);
  }
}
.progbar {
  animation: barshine 5s 0s linear infinite;
}

그래서 나는 이것을 많이 엉망으로 만들었고 당신은 매우 해키하지 않고 할 수 있습니다. 이것은 애니메이션 반복 사이에 지연을 넣는 가장 간단한 방법입니다. 1. SUPER EASY 및 2. 약간의 논리 만 사용합니다. 내가 만든이 댄스 애니메이션을 확인하세요.

.dance{
  animation-name: dance;
  -webkit-animation-name: dance;

  animation-iteration-count: infinite;
  -webkit-animation-iteration-count: infinite;
  animation-duration: 2.5s;
  -webkit-animation-duration: 2.5s;

  -webkit-animation-delay: 2.5s;
  animation-delay: 2.5s;
  animation-timing-function: ease-in;
  -webkit-animation-timing-function: ease-in;

}
@keyframes dance {
  0% {
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  25% {
    -webkit-transform: rotate(-120deg);
    -moz-transform: rotate(-120deg);
    -o-transform: rotate(-120deg);
    -ms-transform: rotate(-120deg);
    transform: rotate(-120deg);
  }
  50% {
    -webkit-transform: rotate(20deg);
    -moz-transform: rotate(20deg);
    -o-transform: rotate(20deg);
    -ms-transform: rotate(20deg);
    transform: rotate(20deg);
  }
  100% {
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    transform: rotate(0deg);
  }
}

@-webkit-keyframes dance {
  0% {
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  20% {
    -webkit-transform: rotate(20deg);
    -moz-transform: rotate(20deg);
    -o-transform: rotate(20deg);
    -ms-transform: rotate(20deg);
    transform: rotate(20deg);
  }
  40% {
    -webkit-transform: rotate(-120deg);
    -moz-transform: rotate(-120deg);
    -o-transform: rotate(-120deg);
    -ms-transform: rotate(-120deg);
    transform: rotate(-120deg);
  }
  60% {
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  80% {
    -webkit-transform: rotate(-120deg);
    -moz-transform: rotate(-120deg);
    -o-transform: rotate(-120deg);
    -ms-transform: rotate(-120deg);
    transform: rotate(-120deg);
  }
  95% {
    -webkit-transform: rotate(20deg);
    -moz-transform: rotate(20deg);
    -o-transform: rotate(20deg);
    -ms-transform: rotate(20deg);
    transform: rotate(20deg);
  }
}

저는 실제로 애니메이션에 지연을 넣는 방법을 알아 내려고 여기에 왔습니다. 저는 여러분이 1. 애니메이션의 지속 시간을 늘리고 각 애니메이션의 시간 비율을 셔츠에 넣는다는 것을 깨달았습니다. Beore는 총 2.5 초 동안 0.5 초 동안 지속되었습니다. 이제 총 지속 시간과 동일한 지연을 추가하여 2.5 초 지연을 추가하고 싶다고 가정 해 보겠습니다.

애니메이션 시간은 2.5 초이고 지연 시간은 2.5이므로 지속 시간을 5 초로 변경합니다. 그러나 총 지속 시간을 두 배로 늘렸으므로 애니메이션 비율을 절반으로 줄이고 싶을 것입니다. 아래에서 최종 확인하십시오. 이것은 나를 위해 완벽하게 작동했습니다.

@-webkit-keyframes dance {
  0% {
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  10% {
    -webkit-transform: rotate(20deg);
    -moz-transform: rotate(20deg);
    -o-transform: rotate(20deg);
    -ms-transform: rotate(20deg);
    transform: rotate(20deg);
  }
  20% {
    -webkit-transform: rotate(-120deg);
    -moz-transform: rotate(-120deg);
    -o-transform: rotate(-120deg);
    -ms-transform: rotate(-120deg);
    transform: rotate(-120deg);
  }
  30% {
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  40% {
    -webkit-transform: rotate(-120deg);
    -moz-transform: rotate(-120deg);
    -o-transform: rotate(-120deg);
    -ms-transform: rotate(-120deg);
    transform: rotate(-120deg);
  }
  50% {
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    transform: rotate(0deg);
  }
}

요약해서 말하면:

다음은 애니메이션의 지속 시간과 각 부분의 %를 변경하는 방법을 알아내는 데 사용할 수있는 계산입니다.

desired_duration = x

desired_duration = animation_part_duration1 + animation_part_duration2 + ... (등)

desired_delay = y

총 기간 = x + y

animation_part_duration1_actual = animation_part_duration1 * desired_duration / total_duration


프랑스어는 (내가하지 걱정, 너무 프랑스어 해요) : 발견
julesbou

5

CSS를 덜 관리하기보다는 약간의 JavaScript를 작성하는 편이 낫습니다.

첫째, 데이터 속성 변경에만 CSS 애니메이션을 적용합니다.

.progbar[data-animation="barshine"] {
    animation: barshine 1s linear;
}

그런 다음 자바 스크립트를 추가하여 지연 시간의 절반으로 애니메이션을 전환합니다.

var progbar = document.querySelector('.progbar');
var on = false;

setInterval(function () {
    progbar.setAttribute('data-animation', (on) ? 'barshine' : '');
    on = !on;
}, 3000);

또는 탭이 숨겨져있을 때 애니메이션을 실행하지 않으려면 :

var progbar = document.querySelector('.progbar');
var on = false;

var update = function () {
    progbar.setAttribute('data-animation', (on) ? 'barshine' : '');
    on = !on;
    setTimer();
};

var setTimer = function () {
    setTimeout(function () {
        requestAnimationFrame(update);
    }, 3000);
};

setTimer();

2

간격을두고 좌우로 움직이는 벽에 포스터를 만들었습니다. 나를 위해 그것은 작동합니다.

.div-animation {
   -webkit-animation: bounce 2000ms ease-out;
    -moz-animation: bounce 2000ms ease-out;
    -o-animation: bounce 2000ms ease-out;
    animation: bounce 2000ms ease-out infinite;
    -webkit-animation-delay: 2s; /* Chrome, Safari, Opera */
    animation-delay: 2s;
    transform-origin: 55% 10%;    
}

@-webkit-keyframes bounce {
    0% {
        transform: rotate(0deg);
    }
    3% {
        transform: rotate(1deg);
    }
    6% {
        transform: rotate(2deg);
    }
    9% {
        transform: rotate(3deg);
    }
    12% {
        transform: rotate(2deg);
    }
    15% {
        transform: rotate(1deg);
    }
    18% {
        transform: rotate(0deg);
    }
    21% {
        transform: rotate(-1deg);
    }
    24% {
        transform: rotate(-2deg);
    }
    27% {
        transform: rotate(-3deg);
    }
    30% {
        transform: rotate(-2deg);
    }
    33% {
        transform: rotate(-1deg);
    }
    36% {
        transform: rotate(0deg);
    }
    100% {
        transform: rotate(0deg);
    }
}

2

애니메이션 사이에 일시 중지를 달성 할 수있는 또 다른 방법은 원하는 지연 시간 동안 요소를 숨기는 두 번째 애니메이션을 적용하는 것입니다. 이렇게하면 평소처럼 CSS 여유 기능을 사용할 수 있다는 이점이 있습니다.

.star {
  animation: shooting-star 1000ms ease-in-out infinite,
    delay-animation 2000ms linear infinite;
}

@keyframes shooting-star {
  0% {
    transform: translate(0, 0) rotate(45deg);
  }

  100% {
    transform: translate(300px, 300px) rotate(45deg);
  }
}

@keyframes delay-animation {
  0% {
    opacity: 1;
  }
  50% {
    opacity: 1;
  }
  50.01% {
    opacity: 0;
  }
  100% {
    opacity: 0;
  }
}

이는 지연이 애니메이션 기간의 배수가되도록하려는 경우에만 작동합니다. 나는 이것을 사용하여 별똥별이 더 무작위로 보이도록 만들었습니다 : https://codepen.io/ericdjohnson/pen/GRpOgVO


1

75 %의 시간 동안 동일한 것을 보여주는 작은 스 니펫이 있습니다. 이 반복 스키마는 지연을 멋지게 에뮬레이트합니다.

@-webkit-keyframes slide    {
0%   {background-position: 0 0;}
25%  {background-position: 0 0;}
50%  {background-position: 0 0;}
75%  {background-position: 0 0;}
100% {background-position: 13em 0;}
}

@-moz-keyframes slide       {
0%   {background-position: 0 0;}
25%  {background-position: 0 0;}
50%  {background-position: 0 0;}
75%  {background-position: 0 0;}
100% {background-position: 13em 0;}
}

@keyframes slide            {
0%   {background-position: 0 0;}
25%  {background-position: 0 0;}
50%  {background-position: 0 0;}
75%  {background-position: 0 0;}
100% {background-position: 13em 0;}
}

0

지연은 처음에 한 번만 가능하며 무한대입니다. 정렬 지연은 무한 루프에서 작동하지 않습니다. 이를 위해 키 프레임 애니메이션 공백 예제를 유지해야합니다.

@-webkit-keyframes barshine {
  10% {background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#1e5799), color-stop(100%,#7db9e8));
    }
  60% {background: -webkit-linear-gradient(top, #7db9e8 0%,#d32a2d 100%);}
}

10 %에서 60 %까지 애니메이션하고 40 % 더 완료 될 때까지 기다립니다. 따라서 40 %가 지연됩니다.

바이올린 예제 찾기


0

나는 이것이 오래되었다는 것을 알고 있지만이 게시물에서 답을 찾고 있었고 jquery를 사용하면 너무 많은 번거 로움없이 쉽게 할 수 있습니다. CSS에서 애니메이션 키 프레임을 선언하고 원하는 속성으로 클래스를 설정하기 만하면됩니다. 내 경우에는 css animate의 tada 애니메이션을 사용했습니다.

.tada {
    -webkit-animation-name: tada;
    animation-name: tada;
    -webkit-animation-duration: 1.25s;
    animation-duration: 1.25s;
    -webkit-animation-fill-mode: both;
    animation-fill-mode: both;
}

애니메이션이 10 초마다 실행되기를 원했기 때문에 jquery는 클래스를 추가하고 6000ms (애니메이션이 완료되는 데 충분한 시간) 후에 클래스를 제거하고 4 초 후에 클래스를 다시 추가하므로 애니메이션이 다시 시작됩니다.

$(document).ready(function() {
  setInterval(function() {

    $(".bottom h2").addClass("tada");//adds the class

    setTimeout(function() {//waits 6 seconds to remove the class
      $(".bottom h2").removeClass("tada");
    }, 6000);

  }, 10000)//repeats the process every 10 seconds
});

한 사람이 게시 한 것처럼 전혀 어렵지 않습니다.


나는 확실히 당신이 jQuery를 사용하는 거라고 왜 안 해요 .classList.add("tada"): D
NIET 다크 Absol

기억하기가 더 쉽습니다. jquery를 전혀 사용할 필요가 없습니다. jquery로 1 개만 사용하는 대신 원하는 경우 3 개의 자바 스크립트 줄을 작성할 수 있습니다. 코드를 작성하는 사람에게 전적으로 달려 있습니다. :)
Marcos 실바 레페

난 몰라 사람 $(".bottom h2").addClass("tada")document.querySelector(".bottom h2").classList.add("tada")P : 그것은 jQuery 코드를 실행로드의 오버 헤드 / 가치가 없어 너무 비슷
NIET 어둠 Absol

당신이 옳다고 생각합니다. 나는 자바 스크립트를 사용하는 무료 프런트 엔드 에서이 정말 멋진 슬라이더를 보았고 주로 jquery를 사용하기 때문에 슬라이더를 복제하려고 시도했지만 자바 스크립트로 만든 원래 슬라이더의 리소스보다 5 배 정도 걸립니다. 자바 스크립트는 jquery 코드를 사용하는 것보다 훨씬 가볍고, 반면에 덜 장황합니다
Marcos Silva Lepe 19

0

CSS만으로 무한 애니메이션 사이에 "가짜"지연을 만들 수 있습니다. 이를 수행하는 방법은 키 프레임 애니메이션 포인트와 애니메이션 지속 시간 속도를 현명하게 정의하는 것입니다.

예를 들어, 튀는 공을 애니메이션하고 각 바운스 사이에 .5 ~ 1s 지연을 원하면 다음과 같이 할 수 있습니다.

@keyframes bounce{
    0%{
        transform: translateY(0);
    }
    50%{
        transform: translateY(25%);
    }
    75%{
        transform: translateY(15%);
    }
    90%{
        transform: translateY(0%);
    }
    100%{
        transform: translateY(0);
    }
}

우리가하는 일은 공이 100 %보다 훨씬 빨리 원래 위치로 되돌아 가도록하는 것입니다. 내 예에서는 약 .1s의 지연을 제공하는 90 %로 작업하고 있습니다. 그러나 분명히 귀하의 경우에는 더 많은 키 프레임 포인트를 추가하고 변환 값을 변경할 수 있습니다.

또한 추가 애니메이션 기간을 추가하여 키 프레임 애니메이션의 균형을 맞출 수 있습니다.

예를 들면 :

 animation: bounce .5s ease-in-out infinite;

전체 애니메이션이 .5s로 끝나기를 원했지만 애니메이션 사이에 .2s 지연을 추가로 원했다고 가정 해 보겠습니다.

 animation: bounce .7s ease-in-out infinite;

따라서 .2s 지연을 추가하고 키 프레임 애니메이션에서 .2s 지연의 간격을 채우기 위해 더 많은 백분율 포인트를 추가 할 수 있습니다.


나는 보통 이것을한다. 단점은 타이밍을 변경할 때마다 모든 값을 변경해야하기 때문에 애니메이션을 조정하는 것이 정말 어려워진다는 것입니다. 많은 sass 변수로 올바르게 설정하지 않는 한 일반적으로 너무 많은 노력이 필요합니다.
Beppe

0

테두리 플래시의 경우 : 실제로 매우 간단합니다. 검정색에서 99 %로 교체하고 예를 들어 파란색으로 1 %로 전환하면 더 짧게 만들 수도 있습니다 (예 : 5 초로 설정).

@keyframes myborder {
  0% {border-color: black;}
  99% {border-color:black;}
  100% {border-color: blue;}
 }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.