See the Pen Untitled by seongtae (@stae1102) on CodePen.
CSS에서 애니메이션을 배웠습니다.
로딩창에서 원의 크기가 개별적으로 달라지는 애니메이션을 구현하곤 합니다.
이를 구현하기 위해서는 가상클래스와 keyframes를 사용합니다.
먼저 html입니다.
<body>
<div class="loading">
<span></span>
<span></span>
<span></span>
</div>
</body>
div 안에 span 태그를 3개 넣습니다. 이 span 태그가 원형 도형입니다.
그 다음 핵심인 CSS를 작성합니다.
.loading span {
display: inline-block;
width: 15px;
height: 15px;
background-color: grey;
border-radius: 50%;
animation: loading 1s linear infinite;
}
- display: inline-block - inline 요소로 사용함과 동시에 가로배치하기 위해서 inline-block으로 설정했습니다.
- width, height - 원형 크기 속성입니다.
- background-color: grey - 임시로 설정한 도형 색상입니다.
- border-radius: 50% - 보더의 가장자리를 둥글게 만듭니다.
- animation: loading 1s linear infinite - 애니메이션 속성입니다. loading이라는 이름의 키프레임을 사용하여 1초동안 지속시키고, linear로 일정한 속도로 진행되도록 합니다(ease를 사용하면 fadeIn, fadeOut과 같이 시작과 끝이 부드럽게 천천히 작동합니다). 그리고 무한 반복하기 위해 infinite를 사용했습니다.
다음은 애니메이션입니다.
@keyframes loading {
0%,
100% {
opacity: 0;
transform: scale(0.5);
}
50% {
opacity: 1;
transform: scale(1.2);
}
}
0%, 100% { opacity: 0; transform: scale(0.5); }
- 애니메이션의 시작과 끝의 시점에서 투명하게 하며, 크기를 절반으로 줄입니다.50% { opacity: 1; transform: scale(1.2); }
- 애니메이션을 선명하게 하고, 크기를 1.2배로 키웁니다.
이제 각각의 요소에 대해서 색상과 딜레이를 설정합니다. 딜레이를 설정하지 않아서 모든 원이 동시에 애니메이션이 실행됩니다.
.loading span:nth-child(1) {
animation-delay: 0s;
background-color: crimson;
}
.loading span:nth-child(2) {
animation-delay: 0.2s;
background-color: dodgerblue;
}
.loading span:nth-child(3) {
animation-delay: 0.4s;
background-color: royalblue;
}
각각 딜레이를 조금씩 주고, 색상도 다르게 합니다. 이때 사용한 가상 클래스는 :nth-child()입니다.
'프론트엔드 > CS' 카테고리의 다른 글
[CSS - Hover, Opacity] Hover시 디테일 표시 (0) | 2022.09.25 |
---|---|
[CSS - Hover, Display] 드롭다운 네비게이션 (0) | 2022.09.25 |
[CSS - keyframes, border-radius] 원 도형 아티클 디자인 (0) | 2022.09.23 |
[CSS - Keyframes] 로딩 애니메이션(사각형 회전 이동, 색상 변화) (0) | 2022.09.23 |